+inline
+std::string Tariff::toString(ChangePolicy changePolicy)
+{
+ switch (changePolicy)
+ {
+ case ALLOW: return "allow";
+ case TO_CHEAP: return "to_cheap";
+ case TO_EXPENSIVE: return "to_expensive";
+ case DENY: return "deny";
+ }
+ return "allow"; // Classic behaviour.
+}
+
+inline
+Tariff::ChangePolicy Tariff::parseChangePolicy(const std::string& value)
+{
+ if (strcasecmp(value.c_str(), "to_cheap") == 0)
+ return TO_CHEAP;
+ if (strcasecmp(value.c_str(), "to_expensive") == 0)
+ return TO_EXPENSIVE;
+ if (strcasecmp(value.c_str(), "deny") == 0)
+ return DENY;
+ return ALLOW; // Classic behaviour.
+}
+
+inline
+std::string Tariff::toString(Period period)
+{
+ switch (period)
+ {
+ case DAY: return "day";
+ case MONTH: return "month";
+ }
+ return "month"; // Classic behaviour.
+}
+
+inline
+Tariff::Period Tariff::parsePeriod(const std::string& value)
+{
+ if (strcasecmp(value.c_str(), "day") == 0)
+ return DAY;
+ return MONTH; // Classic behaviour.
+}
+
+inline
+std::string Tariff::toString(TraffType 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::TraffType Tariff::parseTraffType(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::TraffType& traffType)
+{
+ unsigned val;
+ stream >> val;
+ traffType = static_cast<Tariff::TraffType>(val);
+ return stream;
+}*/
+
+inline
+Tariff::TraffType Tariff::fromInt(int value)
+{
+ if (value < 0 || value > TRAFF_MAX)
+ return TRAFF_UP_DOWN;
+ return static_cast<TraffType>(value);
+}
+
+}