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 hDay.maybeSet(dd.hDay);
102 hNight.maybeSet(dd.hNight);
103 mDay.maybeSet(dd.mDay);
104 mNight.maybeSet(dd.mNight);
105 noDiscount.maybeSet(dd.noDiscount);
106 priceDayA.maybeSet(dd.priceDayA);
107 priceDayB.maybeSet(dd.priceDayB);
108 priceNightA.maybeSet(dd.priceNightA);
109 priceNightB.maybeSet(dd.priceNightB);
110 singlePrice.maybeSet(dd.singlePrice);
111 threshold.maybeSet(dd.threshold);
115 void Splice(const DIRPRICE_DATA_RES & rhs)
117 hDay.splice(rhs.hDay);
118 mDay.splice(rhs.mDay);
119 hNight.splice(rhs.hNight);
120 mNight.splice(rhs.mNight);
121 priceDayA.splice(rhs.priceDayA);
122 priceNightA.splice(rhs.priceNightA);
123 priceDayB.splice(rhs.priceDayB);
124 priceNightB.splice(rhs.priceNightB);
125 threshold.splice(rhs.threshold);
126 singlePrice.splice(rhs.singlePrice);
127 noDiscount.splice(rhs.noDiscount);
132 RESETABLE<int> hNight;
133 RESETABLE<int> mNight;
134 RESETABLE<double> priceDayA;
135 RESETABLE<double> priceNightA;
136 RESETABLE<double> priceDayB;
137 RESETABLE<double> priceNightB;
138 RESETABLE<int> threshold;
139 RESETABLE<int> singlePrice;
140 RESETABLE<int> noDiscount;
142 //-----------------------------------------------------------------------------
147 TARIFF::TRAFF_TYPE traffType;
150 TARIFF::PERIOD period;
151 TARIFF::CHANGE_POLICY changePolicy;
152 time_t changePolicyTimeout;
157 traffType(TARIFF::TRAFF_UP_DOWN),
160 period(TARIFF::MONTH),
161 changePolicy(TARIFF::ALLOW),
162 changePolicyTimeout(0)
165 TARIFF_CONF(const std::string & n)
168 traffType(TARIFF::TRAFF_UP_DOWN),
171 period(TARIFF::MONTH),
172 changePolicy(TARIFF::ALLOW),
173 changePolicyTimeout(0)
176 //-----------------------------------------------------------------------------
177 struct TARIFF_CONF_RES
187 changePolicyTimeout()
190 TARIFF_CONF_RES & operator=(const TARIFF_CONF & tc)
194 traffType = tc.traffType;
195 passiveCost = tc.passiveCost;
198 changePolicy = tc.changePolicy;
199 changePolicyTimeout = tc.changePolicyTimeout;
203 TARIFF_CONF GetData() const
206 fee.maybeSet(tc.fee);
207 free.maybeSet(tc.free);
208 name.maybeSet(tc.name);
209 passiveCost.maybeSet(tc.passiveCost);
210 traffType.maybeSet(tc.traffType);
211 period.maybeSet(tc.period);
212 changePolicy.maybeSet(tc.changePolicy);
213 changePolicyTimeout.maybeSet(tc.changePolicyTimeout);
217 RESETABLE<double> fee;
218 RESETABLE<double> free;
219 RESETABLE<TARIFF::TRAFF_TYPE> traffType;
220 RESETABLE<double> passiveCost;
221 RESETABLE<std::string> name;
222 RESETABLE<TARIFF::PERIOD> period;
223 RESETABLE<TARIFF::CHANGE_POLICY> changePolicy;
224 RESETABLE<time_t> changePolicyTimeout;
226 //-----------------------------------------------------------------------------
229 TARIFF_CONF tariffConf;
230 std::vector<DIRPRICE_DATA> dirPrice;
237 TARIFF_DATA(const std::string & name)
242 TARIFF_DATA(const TARIFF_DATA & td)
243 : tariffConf(td.tariffConf),
244 dirPrice(td.dirPrice)
247 TARIFF_DATA & operator=(const TARIFF_DATA & td)
249 tariffConf = td.tariffConf;
250 dirPrice = td.dirPrice;
254 //-----------------------------------------------------------------------------
255 struct TARIFF_DATA_RES
257 TARIFF_CONF_RES tariffConf;
258 std::vector<DIRPRICE_DATA_RES> dirPrice;
265 TARIFF_DATA_RES & operator=(const TARIFF_DATA & td)
267 tariffConf = td.tariffConf;
268 for (size_t i = 0; i < DIR_NUM; ++i)
269 dirPrice[i] = td.dirPrice[i];
273 TARIFF_DATA GetData() const
276 td.tariffConf = tariffConf.GetData();
277 for (size_t i = 0; i < DIR_NUM; i++)
278 td.dirPrice[i] = dirPrice[i].GetData();
282 //-----------------------------------------------------------------------------