]> git.stg.codes - stg.git/blobdiff - include/stg/tariff_conf.h
Headers moved to subdir stg
[stg.git] / include / stg / tariff_conf.h
diff --git a/include/stg/tariff_conf.h b/include/stg/tariff_conf.h
new file mode 100644 (file)
index 0000000..30f1981
--- /dev/null
@@ -0,0 +1,225 @@
+/*
+ *    This program is free software; you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation; either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    This program is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with this program; if not, write to the Free Software
+ *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/*
+ *    Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
+ */
+
+ /*
+ $Revision: 1.9 $
+ $Date: 2010/10/05 20:41:11 $
+ $Author: faust $
+ */
+
+#ifndef TARIFF_CONF_H
+#define TARIFF_CONF_H
+
+#include <string>
+#include <vector>
+
+#include "resetable.h"
+#include "stg_const.h"
+
+//-----------------------------------------------------------------------------
+enum
+{
+    TRAFF_UP = 0,
+    TRAFF_DOWN,
+    TRAFF_UP_DOWN,
+    TRAFF_MAX
+};
+//-----------------------------------------------------------------------------
+struct DIRPRICE_DATA
+{
+    DIRPRICE_DATA()
+        : hDay(0),
+          mDay(0),
+          hNight(0),
+          mNight(0),
+          priceDayA(0),
+          priceNightA(0),
+          priceDayB(0),
+          priceNightB(0),
+          threshold(0),
+          singlePrice(0),
+          noDiscount(0)
+        {}
+    int     hDay;
+    int     mDay;
+    int     hNight;
+    int     mNight;
+    double  priceDayA;
+    double  priceNightA;
+    double  priceDayB;
+    double  priceNightB;
+    int     threshold;
+    int     singlePrice; // Do not use day/night division
+    int     noDiscount; // Do not use threshold
+};
+//-----------------------------------------------------------------------------
+struct DIRPRICE_DATA_RES
+{
+    DIRPRICE_DATA_RES & operator= (const DIRPRICE_DATA & dpd)
+        {
+        hDay        = dpd.hDay;
+        mDay        = dpd.mDay;
+        hNight      = dpd.hNight;
+        mNight      = dpd.mNight;
+        priceDayA   = dpd.priceDayA;
+        priceNightA = dpd.priceNightA;
+        priceDayB   = dpd.priceDayB;
+        priceNightB = dpd.priceNightB;
+        threshold   = dpd.threshold;
+        singlePrice = dpd.singlePrice;
+        noDiscount  = dpd.noDiscount;
+        return *this;
+        };
+
+    DIRPRICE_DATA GetData()
+        {
+        DIRPRICE_DATA dd;
+        dd.hDay        = hDay;
+        dd.hNight      = hNight;
+        dd.mDay        = mDay;
+        dd.mNight      = mNight;
+        dd.noDiscount  = noDiscount;
+        dd.priceDayA   = priceDayA;
+        dd.priceDayB   = priceDayB;
+
+        dd.priceNightA = priceNightA;
+        dd.priceNightB = priceNightB;
+        dd.singlePrice = singlePrice;
+        dd.threshold   = threshold;
+        return dd;
+        }
+
+    RESETABLE<int>     hDay;
+    RESETABLE<int>     mDay;
+    RESETABLE<int>     hNight;
+    RESETABLE<int>     mNight;
+    RESETABLE<double>  priceDayA;
+    RESETABLE<double>  priceNightA;
+    RESETABLE<double>  priceDayB;
+    RESETABLE<double>  priceNightB;
+    RESETABLE<int>     threshold;
+    RESETABLE<int>     singlePrice;
+    RESETABLE<int>     noDiscount;
+};
+//-----------------------------------------------------------------------------
+struct TARIFF_CONF
+{
+    double      fee;                 // ÷ÅÌÉÞÉÎÁ ÁÂÏÎÐÌÁÔÙ
+    double      free;                // îÁ ËÁËÕÀ ÓÕÍÍÕ ÄÅÎÅÇ ÀÚÅÒ ËÁÞÁÅÔ ÂÅÓÐÌÁÔÎÏ
+    int         traffType;           // UP, DOWN, UP+DOWN, MAX
+    double      passiveCost;         // óÔÏÉÍÏÓÔØ ÚÁÍÏÒÏÚËÉ
+    std::string name;
+
+    TARIFF_CONF()
+        : fee(0),
+          free(0),
+          traffType(TRAFF_UP_DOWN),              // UP-DOWN
+          passiveCost(0),
+          name()
+        {};
+
+    TARIFF_CONF(const std::string & n)
+        : fee(0),
+          free(0),
+          traffType(TRAFF_UP_DOWN),              // UP-DOWN
+          passiveCost(0),
+          name(n)
+        {};
+};
+//-----------------------------------------------------------------------------
+struct TARIFF_CONF_RES
+{
+    TARIFF_CONF_RES & operator=(const TARIFF_CONF & tc)
+        {
+        fee         = tc.fee;
+        free        = tc.free;
+        traffType   = tc.traffType;
+        passiveCost = tc.passiveCost;
+        name        = tc.name;
+        return *this;
+        };
+
+    TARIFF_CONF GetData()
+        {
+        TARIFF_CONF tc;
+        tc.fee         = fee;
+        tc.free        = free;
+        tc.name        = name;
+        tc.passiveCost = passiveCost;
+        tc.traffType   = traffType;
+        return tc;
+        }
+
+    RESETABLE<double>       fee;
+    RESETABLE<double>       free;
+    RESETABLE<int>          traffType;
+    RESETABLE<double>       passiveCost;
+    RESETABLE<std::string>  name;
+};
+//-----------------------------------------------------------------------------
+struct TARIFF_DATA
+{
+    TARIFF_CONF                 tariffConf;
+    std::vector<DIRPRICE_DATA>  dirPrice;
+
+    TARIFF_DATA()
+        : tariffConf(),
+          dirPrice(DIR_NUM)
+        {}
+
+    TARIFF_DATA(const std::string & name)
+        : tariffConf(name),
+          dirPrice(DIR_NUM)
+        {}
+
+    TARIFF_DATA(const TARIFF_DATA & td)
+        : tariffConf(td.tariffConf),
+          dirPrice(td.dirPrice)
+        {}
+
+    TARIFF_DATA & operator=(const TARIFF_DATA & td)
+        {
+        tariffConf = td.tariffConf;
+        dirPrice = td.dirPrice;
+        return *this;
+        };
+};
+//-----------------------------------------------------------------------------
+struct TARIFF_DATA_RES
+{
+    TARIFF_CONF_RES     tariffConf;
+    std::vector<DIRPRICE_DATA_RES> dirPrice;
+
+    TARIFF_DATA_RES()
+        : tariffConf(),
+          dirPrice(DIR_NUM)
+        {}
+
+    TARIFF_DATA GetData()
+        {
+        TARIFF_DATA td;
+        td.tariffConf = tariffConf.GetData();
+        for (int i = 0; i < DIR_NUM; i++)
+            td.dirPrice[i] = dirPrice[i].GetData();
+        return td;
+        }
+};
+//-----------------------------------------------------------------------------
+#endif