Cockatrice/libcockatrice_card/libcockatrice/card/database/card_database_manager.h
2026-05-21 22:58:07 +02:00

80 lines
2.7 KiB
C++

#ifndef CARD_DATABASE_ACCESSOR_H
#define CARD_DATABASE_ACCESSOR_H
#pragma once
#include "card_database.h"
/**
* @class CardDatabaseManager
* @ingroup CardDatabase
* @brief The CardDatabaseManager is responsible for managing the global CardDatabase singleton.
*
* This class provides a static interface for accessing the global CardDatabase instance
* and its CardDatabaseQuerier. It also allows the configuration of optional providers:
* - ICardPreferenceProvider
* - ICardDatabasePathProvider
* - ICardSetPriorityController
*
* Only a single instance of CardDatabase exists, enforced via a private constructor and
* deleted copy/move operations.
*/
class CardDatabaseManager
{
public:
/** @brief Deleted copy constructor to enforce singleton. */
CardDatabaseManager(const CardDatabaseManager &) = delete;
/** @brief Deleted assignment operator to enforce singleton. */
CardDatabaseManager &operator=(const CardDatabaseManager &) = delete;
/**
* @brief Sets the card preference provider.
* @param provider Pointer to an ICardPreferenceProvider.
* @note Must be called before the first call to getInstance().
*/
static void setCardPreferenceProvider(ICardPreferenceProvider *provider);
/**
* @brief Sets the card database path provider.
* @param provider Pointer to an ICardDatabasePathProvider.
* @note Must be called before the first call to getInstance().
*/
static void setCardDatabasePathProvider(ICardDatabasePathProvider *provider);
/**
* @brief Sets the card set priority controller.
* @param controller Pointer to an ICardSetPriorityController.
* @note Must be called before the first call to getInstance().
*/
static void setCardSetPriorityController(ICardSetPriorityController *controller);
/**
* @brief Returns the singleton CardDatabase instance.
* @return Pointer to the global CardDatabase.
*/
static CardDatabase *getInstance();
/**
* @brief Returns the CardDatabaseQuerier of the singleton database.
* @return Pointer to CardDatabaseQuerier.
*/
static CardDatabaseQuerier *query();
private:
/** @brief Private default constructor to enforce singleton. */
CardDatabaseManager() = default;
/** @brief Private destructor. */
~CardDatabaseManager() = default;
/** @brief Static card preference provider pointer (default: Noop). */
static ICardPreferenceProvider *cardPreferenceProvider;
/** @brief Static path provider pointer (default: Noop). */
static ICardDatabasePathProvider *pathProvider;
/** @brief Static set priority controller pointer (default: Noop). */
static ICardSetPriorityController *setPriorityController;
};
#endif // CARD_DATABASE_ACCESSOR_H