2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 * Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
23 $Date: 2010/10/05 20:41:11 $
31 #include "resetable.h"
37 //-----------------------------------------------------------------------------
62 int singlePrice; // Do not use day/night division
63 int noDiscount; // Do not use threshold
65 //-----------------------------------------------------------------------------
66 struct DIRPRICE_DATA_RES
82 DIRPRICE_DATA_RES & operator= (const DIRPRICE_DATA & rvalue)
86 hNight = rvalue.hNight;
87 mNight = rvalue.mNight;
88 priceDayA = rvalue.priceDayA;
89 priceNightA = rvalue.priceNightA;
90 priceDayB = rvalue.priceDayB;
91 priceNightB = rvalue.priceNightB;
92 threshold = rvalue.threshold;
93 singlePrice = rvalue.singlePrice;
94 noDiscount = rvalue.noDiscount;
98 DIRPRICE_DATA GetData() const
101 dd.hDay = hDay.data();
102 dd.hNight = hNight.data();
103 dd.mDay = mDay.data();
104 dd.mNight = mNight.data();
105 dd.noDiscount = noDiscount.data();
106 dd.priceDayA = priceDayA.data();
107 dd.priceDayB = priceDayB.data();
109 dd.priceNightA = priceNightA.data();
110 dd.priceNightB = priceNightB.data();
111 dd.singlePrice = singlePrice.data();
112 dd.threshold = threshold.data();
116 void Splice(const DIRPRICE_DATA_RES & rhs)
118 hDay.splice(rhs.hDay);
119 mDay.splice(rhs.mDay);
120 hNight.splice(rhs.hNight);
121 mNight.splice(rhs.mNight);
122 priceDayA.splice(rhs.priceDayA);
123 priceNightA.splice(rhs.priceNightA);
124 priceDayB.splice(rhs.priceDayB);
125 priceNightB.splice(rhs.priceNightB);
126 threshold.splice(rhs.threshold);
127 singlePrice.splice(rhs.singlePrice);
128 noDiscount.splice(rhs.noDiscount);
133 RESETABLE<int> hNight;
134 RESETABLE<int> mNight;
135 RESETABLE<double> priceDayA;
136 RESETABLE<double> priceNightA;
137 RESETABLE<double> priceDayB;
138 RESETABLE<double> priceNightB;
139 RESETABLE<int> threshold;
140 RESETABLE<int> singlePrice;
141 RESETABLE<int> noDiscount;
143 //-----------------------------------------------------------------------------
148 TARIFF::TRAFF_TYPE traffType;
151 TARIFF::PERIOD period;
156 traffType(TARIFF::TRAFF_UP_DOWN),
159 period(TARIFF::MONTH)
162 TARIFF_CONF(const std::string & n)
165 traffType(TARIFF::TRAFF_UP_DOWN),
168 period(TARIFF::MONTH)
171 //-----------------------------------------------------------------------------
172 struct TARIFF_CONF_RES
183 TARIFF_CONF_RES & operator=(const TARIFF_CONF & tc)
187 traffType = tc.traffType;
188 passiveCost = tc.passiveCost;
194 TARIFF_CONF GetData() const
198 tc.free = free.data();
199 tc.name = name.data();
200 tc.passiveCost = passiveCost.data();
201 tc.traffType = traffType.data();
202 tc.period = period.data();
206 RESETABLE<double> fee;
207 RESETABLE<double> free;
208 RESETABLE<TARIFF::TRAFF_TYPE> traffType;
209 RESETABLE<double> passiveCost;
210 RESETABLE<std::string> name;
211 RESETABLE<TARIFF::PERIOD> period;
213 //-----------------------------------------------------------------------------
216 TARIFF_CONF tariffConf;
217 std::vector<DIRPRICE_DATA> dirPrice;
224 TARIFF_DATA(const std::string & name)
229 TARIFF_DATA(const TARIFF_DATA & td)
230 : tariffConf(td.tariffConf),
231 dirPrice(td.dirPrice)
234 TARIFF_DATA & operator=(const TARIFF_DATA & td)
236 tariffConf = td.tariffConf;
237 dirPrice = td.dirPrice;
241 //-----------------------------------------------------------------------------
242 struct TARIFF_DATA_RES
244 TARIFF_CONF_RES tariffConf;
245 std::vector<DIRPRICE_DATA_RES> dirPrice;
252 TARIFF_DATA GetData() const
255 td.tariffConf = tariffConf.GetData();
256 for (size_t i = 0; i < DIR_NUM; i++)
257 td.dirPrice[i] = dirPrice[i].GetData();
261 //-----------------------------------------------------------------------------