X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/4ee4759a51cf944de103eb73a654ec00ccb3664d..7ef8de40e0bcdd931f5a400fd586fee3a1aaaeea:/include/stg/tariffs.h diff --git a/include/stg/tariffs.h b/include/stg/tariffs.h index 9a35f645..959c6112 100644 --- a/include/stg/tariffs.h +++ b/include/stg/tariffs.h @@ -18,39 +18,46 @@ * Author : Maxim Mamontov */ -#ifndef TARIFFS_H -#define TARIFFS_H +#pragma once + +#include "subscriptions.h" #include -#include +#include + +namespace STG +{ -#include "notifer.h" +class Admin; +struct Tariff; +struct TariffData; -class ADMIN; -class TARIFF; -struct TARIFF_DATA; +class Tariffs +{ + public: + virtual ~Tariffs() = default; -class TARIFFS { -public: - virtual ~TARIFFS() {} - virtual int ReadTariffs () = 0; - virtual const TARIFF * FindByName(const std::string & name) const = 0; - virtual const TARIFF * GetNoTariff() const = 0; - virtual int Del(const std::string & name, const ADMIN * admin) = 0; - virtual int Add(const std::string & name, const ADMIN * admin) = 0; - virtual int Chg(const TARIFF_DATA & td, const ADMIN * admin) = 0; + virtual int ReadTariffs() = 0; + virtual const Tariff* FindByName(const std::string& name) const = 0; + virtual const Tariff* GetNoTariff() const = 0; + virtual int Del(const std::string& name, const Admin* admin) = 0; + virtual int Add(const std::string& name, const Admin* admin) = 0; + virtual int Chg(const TariffData& td, const Admin* admin) = 0; - virtual void AddNotifierAdd(NOTIFIER_BASE * notifier) = 0; - virtual void DelNotifierAdd(NOTIFIER_BASE * notifier) = 0; + template + auto onAdd(F&& f) { return m_onAddCallbacks.add(std::forward(f)); } + template + auto onDel(F&& f) { return m_onDelCallbacks.add(std::forward(f)); } - virtual void AddNotifierDel(NOTIFIER_BASE * notifier) = 0; - virtual void DelNotifierDel(NOTIFIER_BASE * notifier) = 0; + virtual void GetTariffsData(std::vector* tdl) const = 0; - virtual void GetTariffsData(std::list * tdl) = 0; + virtual size_t Count() const = 0; - virtual size_t Count() const = 0; + virtual const std::string& GetStrError() const = 0; - virtual const std::string & GetStrError() const = 0; + protected: + Subscriptions m_onAddCallbacks; + Subscriptions m_onDelCallbacks; }; -#endif +}