Cockatrice 2026-09-01-Development-3.1.0-beta.10
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
card_database_parser.h
Go to the documentation of this file.
1#ifndef CARDDATABASE_PARSER_H
2#define CARDDATABASE_PARSER_H
3
4#include "../../card_info.h"
6
7#include <QIODevice>
8#include <QString>
9
10#define COCKATRICE_XML_XSI_NAMESPACE "http://www.w3.org/2001/XMLSchema-instance"
11
20class ICardDatabaseParser : public QObject
21{
22 Q_OBJECT
23public:
25 ~ICardDatabaseParser() override = default;
26
33 virtual bool getCanParseFile(const QString &name, QIODevice &device) = 0;
34
39 virtual void parseFile(QIODevice &device) = 0;
40
48 virtual void parseFileInto(QIODevice &device, CardDatabaseData &data) = 0;
49
60 virtual bool saveToFile(FormatRulesNameMap _formats,
62 CardNameMap cards,
63 const QString &fileName,
64 const QString &sourceUrl = "unknown",
65 const QString &sourceVersion = "unknown") = 0;
66
68 static void clearSetlist();
69
70protected:
74
89
99 CardSetPtr internalAddSet(const QString &setName,
100 const QString &longName = "",
101 const QString &setType = "",
102 const QDate &releaseDate = QDate(),
104
105signals:
108
111
113};
114
115Q_DECLARE_INTERFACE(ICardDatabaseParser, "ICardDatabaseParser")
116
117#endif
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:19
QHash< QString, FormatRulesPtr > FormatRulesNameMap
Definition card_info.h:33
QSharedPointer< FormatRules > FormatRulesPtr
Definition card_info.h:28
QSharedPointer< CardSet > CardSetPtr
Definition card_info.h:27
QHash< QString, CardSetPtr > SetNameMap
Definition card_info.h:32
QHash< QString, CardInfoPtr > CardNameMap
Definition card_info.h:31
Priority
Defines relative ordering and importance of sets.
Definition card_set.h:42
@ PriorityFallback
Used when no other priority is defined.
Definition card_set.h:43
Defines the base parser interface (ICardDatabaseParser) for all card database parsers.
Definition card_database_parser.h:21
ICardSetPriorityController * cardSetPriorityController
Definition card_database_parser.h:73
ICardDatabaseParser(ICardSetPriorityController *cardSetPriorityController)
Definition card_database_parser.cpp:7
static void clearSetlist()
Clears the cached global set list.
Definition card_database_parser.cpp:11
CardSetPtr internalAddSet(const QString &setName, const QString &longName="", const QString &setType="", const QDate &releaseDate=QDate(), const CardSet::Priority priority=CardSet::PriorityFallback)
Internal helper to add a set to the global set cache.
Definition card_database_parser.cpp:16
virtual void parseFileInto(QIODevice &device, CardDatabaseData &data)=0
Parses a database file into the given snapshot, without emitting any signals. Used for background loa...
virtual bool saveToFile(FormatRulesNameMap _formats, SetNameMap sets, CardNameMap cards, const QString &fileName, const QString &sourceUrl="unknown", const QString &sourceVersion="unknown")=0
Saves card and set data to a file.
virtual void parseFile(QIODevice &device)=0
Parses a database file and emits addCard/addSet signals.
void addCard(CardInfoPtr card)
CardDatabaseData * targetData
Snapshot the current parse is filling, or nullptr when emitting signals.
Definition card_database_parser.h:88
void addSet(CardSetPtr set)
static SetNameMap sets
Cached global list of sets shared between all parsers.
Definition card_database_parser.h:72
virtual bool getCanParseFile(const QString &name, QIODevice &device)=0
Checks whether this parser can parse the given file.
~ICardDatabaseParser() override=default
void addFormat(FormatRulesPtr format)
Definition interface_card_set_priority_controller.h:7
Value type holding the full parsed state of a card database.
Definition card_database_data.h:17