]> git.stg.codes - stg.git/commitdiff
Traff type become an enumeration in scope of TARIFF.
authorMaxim Mamontov <faust.madf@gmail.com>
Wed, 17 Sep 2014 06:32:40 +0000 (09:32 +0300)
committerMaxim Mamontov <faust.madf@gmail.com>
Wed, 17 Sep 2014 06:32:40 +0000 (09:32 +0300)
include/stg/tariff.h
include/stg/tariff_conf.h

index d0bf20b6dd268ddf0f7b2fa772cedad1e89ebdb1..1b6413b302f3c56417d32683d530850dcc6eb5f9 100644 (file)
@@ -26,6 +26,7 @@
 #include <string>
 #include <cstring>
 #include <ctime>
+#include <istream>
 
 struct TARIFF_DATA;
 
@@ -33,9 +34,14 @@ class TARIFF {
 public:
     enum PERIOD { DAY = 0, MONTH };
 
+    enum TRAFF_TYPE { TRAFF_UP = 0, TRAFF_DOWN, TRAFF_UP_DOWN, TRAFF_MAX };
+
     static std::string PeriodToString(PERIOD period);
     static PERIOD StringToPeriod(const std::string& value);
 
+    static std::string TraffTypeToString(TRAFF_TYPE type);
+    static TRAFF_TYPE StringToTraffType(const std::string& value);
+
     virtual ~TARIFF() {}
     virtual double  GetPriceWithTraffType(uint64_t up,
                                           uint64_t down,
@@ -75,4 +81,40 @@ if (strcasecmp(value.c_str(), "day") == 0)
 return MONTH; // Classic behaviour.
 }
 
+inline
+std::string TARIFF::TraffTypeToString(TARIFF::TRAFF_TYPE type)
+{
+switch (type)
+    {
+    case TRAFF_UP: return "up";
+    case TRAFF_DOWN: return "down";
+    case TRAFF_UP_DOWN: return "up+down";
+    case TRAFF_MAX: return "max";
+    }
+return "up+down";
+}
+
+inline
+TARIFF::TRAFF_TYPE TARIFF::StringToTraffType(const std::string& value)
+{
+if (strcasecmp(value.c_str(), "up") == 0)
+    return TRAFF_UP;
+if (strcasecmp(value.c_str(), "down") == 0)
+    return TRAFF_DOWN;
+if (strcasecmp(value.c_str(), "up+down") == 0)
+    return TRAFF_UP_DOWN;
+if (strcasecmp(value.c_str(), "max") == 0)
+    return TRAFF_MAX;
+return TRAFF_UP_DOWN;
+}
+
+inline
+std::istream & operator>>(std::istream & stream, TARIFF::TRAFF_TYPE & traffType)
+{
+    unsigned val;
+    stream >> val;
+    traffType = static_cast<TARIFF::TRAFF_TYPE>(val);
+    return stream;
+}
+
 #endif
index fc9807beb88fc13763b1f597a2b7f5e8446f247c..ae40c12813c335aead50ea16cd878339b8d096ec 100644 (file)
 #include <string>
 #include <vector>
 
-//-----------------------------------------------------------------------------
-enum
-{
-    TRAFF_UP = 0,
-    TRAFF_DOWN,
-    TRAFF_UP_DOWN,
-    TRAFF_MAX
-};
 //-----------------------------------------------------------------------------
 struct DIRPRICE_DATA
 {
@@ -151,17 +143,17 @@ struct DIRPRICE_DATA_RES
 //-----------------------------------------------------------------------------
 struct TARIFF_CONF
 {
-    double         fee;
-    double         free;
-    int            traffType;
-    double         passiveCost;
-    std::string    name;
-    TARIFF::PERIOD period;
+    double             fee;
+    double             free;
+    TARIFF::TRAFF_TYPE traffType;
+    double             passiveCost;
+    std::string        name;
+    TARIFF::PERIOD     period;
 
     TARIFF_CONF()
         : fee(0),
           free(0),
-          traffType(TRAFF_UP_DOWN),
+          traffType(TARIFF::TRAFF_UP_DOWN),
           passiveCost(0),
           name(),
           period(TARIFF::MONTH)
@@ -170,7 +162,7 @@ struct TARIFF_CONF
     TARIFF_CONF(const std::string & n)
         : fee(0),
           free(0),
-          traffType(TRAFF_UP_DOWN),
+          traffType(TARIFF::TRAFF_UP_DOWN),
           passiveCost(0),
           name(n),
           period(TARIFF::MONTH)
@@ -211,12 +203,12 @@ struct TARIFF_CONF_RES
         return tc;
         }
 
-    RESETABLE<double>         fee;
-    RESETABLE<double>         free;
-    RESETABLE<int>            traffType;
-    RESETABLE<double>         passiveCost;
-    RESETABLE<std::string>    name;
-    RESETABLE<TARIFF::PERIOD> period;
+    RESETABLE<double>             fee;
+    RESETABLE<double>             free;
+    RESETABLE<TARIFF::TRAFF_TYPE> traffType;
+    RESETABLE<double>             passiveCost;
+    RESETABLE<std::string>        name;
+    RESETABLE<TARIFF::PERIOD>     period;
 };
 //-----------------------------------------------------------------------------
 struct TARIFF_DATA