Cockatrice 2026-10-19-Development-3.1.2-beta.2
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"
7
8#include <QDate>
9#include <QObject>
10#include <QString>
11#include <qtmetamacros.h>
12
14class QIODevice;
15struct CardDatabaseData;
16
17#define COCKATRICE_XML_XSI_NAMESPACE "http://www.w3.org/2001/XMLSchema-instance"
18
27class ICardDatabaseParser : public QObject
28{
29 Q_OBJECT
30public:
32 ~ICardDatabaseParser() override = default;
33
40 virtual bool getCanParseFile(const QString &name, QIODevice &device) = 0;
41
46 virtual void parseFile(QIODevice &device) = 0;
47
55 virtual void parseFileInto(QIODevice &device, CardDatabaseData &data) = 0;
56
67 virtual bool saveToFile(FormatRulesNameMap _formats,
69 CardNameMap cards,
70 const QString &fileName,
71 const QString &sourceUrl = "unknown",
72 const QString &sourceVersion = "unknown") = 0;
73
75 static void clearSetlist();
76
77protected:
81
96
106 CardSetPtr internalAddSet(const QString &setName,
107 const QString &longName = "",
108 const QString &setType = "",
109 const QDate &releaseDate = QDate(),
111
112signals:
115
118
120};
121
122Q_DECLARE_INTERFACE(ICardDatabaseParser, "ICardDatabaseParser")
123
124#endif
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:15
QHash< QString, FormatRulesPtr > FormatRulesNameMap
Definition card_info.h:36
QSharedPointer< FormatRules > FormatRulesPtr
Definition card_info.h:31
QSharedPointer< CardSet > CardSetPtr
Definition card_info.h:30
QHash< QString, CardSetPtr > SetNameMap
Definition card_info.h:35
QHash< QString, CardInfoPtr > CardNameMap
Definition card_info.h:34
Priority
Defines relative ordering and importance of sets.
Definition card_set.h:44
@ PriorityFallback
Used when no other priority is defined.
Definition card_set.h:45
Defines the base parser interface (ICardDatabaseParser) for all card database parsers.
Definition card_database_parser.h:28
ICardSetPriorityController * cardSetPriorityController
Definition card_database_parser.h:80
ICardDatabaseParser(ICardSetPriorityController *cardSetPriorityController)
Definition card_database_parser.cpp:12
static void clearSetlist()
Clears the cached global set list.
Definition card_database_parser.cpp:16
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:21
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:95
void addSet(CardSetPtr set)
static SetNameMap sets
Cached global list of sets shared between all parsers.
Definition card_database_parser.h:79
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:8
Value type holding the full parsed state of a card database.
Definition card_database_data.h:17