]> git.stg.codes - stg.git/blobdiff - include/stg/tariffs.h
Stargazer (#6)
[stg.git] / include / stg / tariffs.h
index 1f91948fa53b71ea92f793d2bac4c75f168c7951..959c6112bbfcbf594a54d4a057d2b7f6efc90cd8 100644 (file)
  *    Author : Maxim Mamontov <faust@stargazer.dp.ua>
  */
 
  *    Author : Maxim Mamontov <faust@stargazer.dp.ua>
  */
 
-#ifndef TARIFFS_H
-#define TARIFFS_H
+#pragma once
+
+#include "subscriptions.h"
 
 #include <string>
 
 #include <string>
-#include <list>
+#include <vector>
+
+namespace STG
+{
+
+class Admin;
+struct Tariff;
+struct TariffData;
+
+class Tariffs
+{
+    public:
+        virtual ~Tariffs() = default;
+
+        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;
+
+        template <typename F>
+        auto onAdd(F&& f) { return m_onAddCallbacks.add(std::forward<F>(f)); }
+        template <typename F>
+        auto onDel(F&& f) { return m_onDelCallbacks.add(std::forward<F>(f)); }
 
 
-class ADMIN;
-class TARIFF;
-class TARIFF_DATA;
+        virtual void GetTariffsData(std::vector<TariffData>* tdl) const = 0;
 
 
-class TARIFFS {
-public:
-    virtual int            ReadTariffs () = 0;
-    virtual const TARIFF * FindByName(const std::string & name) const = 0;
-    virtual const TARIFF * GetNoTariff() const = 0;
-    virtual int            GetTariffsNum() 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 size_t Count() const = 0;
 
 
-    virtual void           GetTariffsData(std::list<TARIFF_DATA> * tdl) = 0;
+        virtual const std::string& GetStrError() const = 0;
 
 
-    virtual const std::string & GetStrError() const = 0;
+    protected:
+        Subscriptions<TariffData> m_onAddCallbacks;
+        Subscriptions<TariffData> m_onDelCallbacks;
 };
 
 };
 
-#endif
+}