39 memset(&data, 0,
sizeof(data));
42 if (para_tag_identifier ==
"STOCKINFO")
44 else if (para_tag_identifier ==
"MFINFO")
46 else if (para_tag_identifier ==
"OPTINFO")
48 else if (para_tag_identifier ==
"DEBTINFO")
52 data.security_type_valid =
true;
54 OfxSecurityContainer::~OfxSecurityContainer()
59 if (identifier ==
"UNIQUEID")
65 if (data.unique_id_valid ==
false)
68 data.unique_id_valid =
true;
74 data.unique_id2_valid =
true;
77 else if (identifier ==
"UNIQUEIDTYPE")
83 if (data.unique_id_type_valid ==
false)
86 data.unique_id_type_valid =
true;
92 data.unique_id2_type_valid =
true;
95 else if (identifier ==
"SECNAME")
98 data.secname_valid =
true;
100 else if (identifier ==
"TICKER")
102 strncpy(data.
ticker, value.c_str(),
sizeof(data.
ticker));
103 data.ticker_valid =
true;
105 else if (identifier ==
"RATING")
107 strncpy(data.
rating, value.c_str(), OFX_SECURITY_RATING_LENGTH);
108 data.rating_valid =
true;
110 else if (identifier ==
"UNITPRICE")
113 data.unitprice_valid =
true;
115 else if (identifier ==
"DTASOF")
118 data.date_unitprice_valid =
true;
120 else if (identifier ==
"CURRATE")
123 data.currency_ratio_valid =
true;
125 else if (identifier ==
"CURSYM")
127 strncpy(data.
currency, value.c_str(), OFX_CURRENCY_LENGTH);
128 data.currency_valid =
true;
130 else if (identifier ==
"CURRENCY")
133 data.amounts_are_foreign_currency_valid =
true;
135 else if (identifier ==
"ORIGCURRENCY")
138 data.amounts_are_foreign_currency_valid =
true;
140 else if (identifier ==
"MEMO" || identifier ==
"MEMO2")
142 strncpy(data.
memo, value.c_str(),
sizeof(data.
memo));
143 data.memo_valid =
true;
145 else if (identifier ==
"FIID")
147 strncpy(data.
fiid, value.c_str(), OFX_FIID_LENGTH);
148 data.fiid_valid =
true;
150 else if (identifier ==
"ASSETCLASS")
152 if (value ==
"DOMESTICBOND")
154 data.asset_class = data.OFX_ASSET_CLASS_DOMESTICBOND;
155 data.asset_class_valid =
true;
157 else if (value ==
"INTLBOND")
159 data.asset_class = data.OFX_ASSET_CLASS_INTLBOND;
160 data.asset_class_valid =
true;
162 else if (value ==
"LARGESTOCK")
164 data.asset_class = data.OFX_ASSET_CLASS_LARGESTOCK;
165 data.asset_class_valid =
true;
167 else if (value ==
"SMALLSTOCK")
169 data.asset_class = data.OFX_ASSET_CLASS_SMALLSTOCK;
170 data.asset_class_valid =
true;
172 else if (value ==
"INTLSTOCK")
174 data.asset_class = data.OFX_ASSET_CLASS_INTLSTOCK;
175 data.asset_class_valid =
true;
177 else if (value ==
"MONEYMRKT")
179 data.asset_class = data.OFX_ASSET_CLASS_MONEYMRKT;
180 data.asset_class_valid =
true;
182 else if (value ==
"OTHER")
184 data.asset_class = data.OFX_ASSET_CLASS_OTHER;
185 data.asset_class_valid =
true;
188 else if (identifier ==
"PARVALUE")
191 data.par_value_valid =
true;
193 else if (identifier ==
"DEBTTYPE")
195 if (value ==
"COUPON")
197 data.debt_type = data.OFX_DEBT_TYPE_COUPON;
198 data.debt_type_valid =
true;
200 else if (value ==
"ZERO")
202 data.debt_type = data.OFX_DEBT_TYPE_ZERO;
203 data.debt_type_valid =
true;
206 else if (identifier ==
"DEBTCLASS")
208 if (value ==
"TREASURY")
210 data.debt_class = data.OFX_DEBTCLASS_TREASURY;
211 data.debt_class_valid =
true;
213 else if (value ==
"MUNICIPAL")
215 data.debt_class = data.OFX_DEBTCLASS_MUNICIPAL;
216 data.debt_class_valid =
true;
218 else if (value ==
"CORPORATE")
220 data.debt_class = data.OFX_DEBTCLASS_CORPORATE;
221 data.debt_class_valid =
true;
223 else if (value ==
"OTHER")
225 data.debt_class = data.OFX_DEBTCLASS_OTHER;
226 data.debt_class_valid =
true;
229 else if (identifier ==
"COUPONRT")
232 data.coupon_rate_valid =
true;
234 else if (identifier ==
"DTCOUPON")
237 data.date_coupon_valid =
true;
239 else if (identifier ==
"COUPONFREQ")
241 if (value ==
"MONTHLY")
243 data.coupon_freq = data.OFX_COUPON_FREQ_MONTHLY;
244 data.coupon_freq_valid =
true;
246 else if (value ==
"QUARTERLY")
248 data.coupon_freq = data.OFX_COUPON_FREQ_QUARTERLY;
249 data.coupon_freq_valid =
true;
251 else if (value ==
"SEMIANNUAL")
253 data.coupon_freq = data.OFX_COUPON_FREQ_SEMIANNUAL;
254 data.coupon_freq_valid =
true;
256 else if (value ==
"ANNUAL")
258 data.coupon_freq = data.OFX_COUPON_FREQ_ANNUAL;
259 data.coupon_freq_valid =
true;
261 else if (value ==
"OTHER")
263 data.coupon_freq = data.OFX_COUPON_FREQ_OTHER;
264 data.coupon_freq_valid =
true;
267 else if (identifier ==
"CALLPRICE")
270 data.call_price_valid =
true;
272 else if (identifier ==
"YIELDTOCALL")
275 data.yield_to_call_valid =
true;
277 else if (identifier ==
"DTCALL")
280 data.call_date_valid =
true;
282 else if (identifier ==
"CALLTYPE")
286 data.call_type = data.OFX_CALL_TYPE_CALL;
287 data.call_type_valid =
true;
289 else if (value ==
"PUT")
291 data.call_type = data.OFX_CALL_TYPE_PUT;
292 data.call_type_valid =
true;
294 else if (value ==
"PREFUND")
296 data.call_type = data.OFX_CALL_TYPE_PREFUND;
297 data.call_type_valid =
true;
299 else if (value ==
"MATURITY")
301 data.call_type = data.OFX_CALL_TYPE_MATURITY;
302 data.call_type_valid =
true;
305 else if (identifier ==
"YIELDTOMAT")
308 data.yield_to_maturity_valid =
true;
310 else if (identifier ==
"DTMAT")
313 data.maturity_date_valid =
true;
315 else if (identifier ==
"MFTYPE")
317 if (value ==
"OPENEND")
319 data.mutual_fund_type = data.OFX_MFTYPE_OPENEND;
320 data.mutual_fund_type_valid =
true;
322 else if (value ==
"CLOSEEND")
324 data.mutual_fund_type = data.OFX_MFTYPE_CLOSEEND;
325 data.mutual_fund_type_valid =
true;
327 else if (value ==
"OTHER")
329 data.mutual_fund_type = data.OFX_MFTYPE_OTHER;
330 data.mutual_fund_type_valid =
true;
333 else if (identifier ==
"STOCKTYPE")
335 if (value ==
"COMMON")
337 data.stock_type = data.OFX_STOCKTYPE_COMMON;
338 data.stock_type_valid =
true;
340 else if (value ==
"PREFERRED")
342 data.stock_type = data.OFX_STOCKTYPE_PREFERRED;
343 data.stock_type_valid =
true;
345 else if (value ==
"CONVERTIBLE")
347 data.stock_type = data.OFX_STOCKTYPE_CONVERTIBLE;
348 data.stock_type_valid =
true;
350 else if (value ==
"OTHER")
352 data.stock_type = data.OFX_STOCKTYPE_OTHER;
353 data.stock_type_valid =
true;
356 else if (identifier ==
"YIELD")
359 data.yield_valid =
true;
361 else if (identifier ==
"DTYIELDASOF")
364 data.yield_asof_date_valid =
true;
366 else if (identifier ==
"OPTTYPE")
368 if (value ==
"CALL" || value ==
"Call")
370 data.option_type = data.OFX_OPTION_TYPE_CALL;
371 data.option_type_valid =
true;
373 else if (value ==
"PUT" || value ==
"Put")
375 data.option_type = data.OFX_OPTION_TYPE_PUT;
376 data.option_type_valid =
true;
379 else if (identifier ==
"STRIKEPRICE")
382 data.strike_price_valid =
true;
384 else if (identifier ==
"DTEXPIRE")
387 data.date_expire_valid =
true;
389 else if (identifier ==
"SHPERCTRCT")
392 data.shares_per_cont_valid =
true;
402 libofx_context->securityCallback(data);
408 if (MainContainer != NULL)
410 return MainContainer->add_container(
this);
double ofxamount_to_double(const string ofxamount)
Convert OFX amount of money to double float.
A generic container for an OFX SGML element. Every container inherits from OfxGenericContainer.
Various simple functions for type conversion & al.
char unique_id2[OFX_UNIQUE_ID_LENGTH]
virtual void add_attribute(const string identifier, const string value)
Add data to a container object.
virtual int add_to_main_tree()
Add this container to the main tree.
virtual int gen_event()
Generate libofx.h events.
char currency[OFX_CURRENCY_LENGTH]
time_t ofxdate_to_time_t(const string ofxdate)
Convert a C++ string containing a time in OFX format to a C time_t.
char memo[OFX_MEMO2_LENGTH]
char fiid[OFX_FIID_LENGTH]
void add_attribute(const string identifier, const string value)
Add data to a container object.
char unique_id[OFX_UNIQUE_ID_LENGTH]
char rating[OFX_SECURITY_RATING_LENGTH]
LibOFX internal object code.
Message IO functionality.
int amounts_are_foreign_currency
char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH]
char unique_id2_type[OFX_UNIQUE_ID_TYPE_LENGTH]
char ticker[OFX_TICKER_LENGTH]
The root container. Created by the <OFX> OFX element or by the export functions.
char secname[OFX_SECNAME_LENGTH]