1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3
<title>LibOFX: ofx_containers_misc.cpp Source File</title>
4
<link href="doxygen.css" rel="stylesheet" type="text/css">
6
<!-- Generated by Doxygen 1.3.9.1 -->
7
<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
9
<a class="el" href="dir_000003.html">libofx-0.8.0</a> / <a class="el" href="dir_000004.html">lib</a></div>
10
<h1>fx-0.8.0/lib/ofx_containers_misc.cpp</h1><a href="fx-0_88_80_2lib_2ofx__containers__misc_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="comment">/***************************************************************************</span>
11
00002 <span class="comment"> ofx_proc_rs.cpp </span>
12
00003 <span class="comment"> -------------------</span>
13
00004 <span class="comment"> copyright : (C) 2002 by Benoit Gr�goire</span>
14
00005 <span class="comment"> email : bock@step.polymtl.ca</span>
15
00006 <span class="comment">***************************************************************************/</span>
16
00013 <span class="comment">/***************************************************************************</span>
17
00014 <span class="comment"> * *</span>
18
00015 <span class="comment"> * This program is free software; you can redistribute it and/or modify *</span>
19
00016 <span class="comment"> * it under the terms of the GNU General Public License as published by *</span>
20
00017 <span class="comment"> * the Free Software Foundation; either version 2 of the License, or *</span>
21
00018 <span class="comment"> * (at your option) any later version. *</span>
22
00019 <span class="comment"> * *</span>
23
00020 <span class="comment"> ***************************************************************************/</span>
25
00022 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
26
00023 <span class="preprocessor"></span><span class="preprocessor">#include <config.h></span>
27
00024 <span class="preprocessor">#endif</span>
28
00025 <span class="preprocessor"></span>
29
00026 <span class="preprocessor">#include <iostream></span>
30
00027 <span class="preprocessor">#include <stdlib.h></span>
31
00028 <span class="preprocessor">#include <string></span>
32
00029 <span class="preprocessor">#include "<a class="code" href="fx-0_88_80_2lib_2messages_8hh.html">messages.hh</a>"</span>
33
00030 <span class="preprocessor">#include "<a class="code" href="libofx-0_88_80_2inc_2libofx_8h.html">libofx.h</a>"</span>
34
00031 <span class="preprocessor">#include "<a class="code" href="fx-0_88_80_2lib_2ofx__error__msg_8hh.html">ofx_error_msg.hh</a>"</span>
35
00032 <span class="preprocessor">#include "<a class="code" href="fx-0_88_80_2lib_2ofx__utilities_8hh.html">ofx_utilities.hh</a>"</span>
36
00033 <span class="preprocessor">#include "<a class="code" href="fx-0_88_80_2lib_2ofx__containers_8hh.html">ofx_containers.hh</a>"</span>
38
00035 <span class="keyword">extern</span> <a class="code" href="classOfxMainContainer.html">OfxMainContainer</a> * MainContainer;
40
00037 <span class="comment">/***************************************************************************</span>
41
00038 <span class="comment"> * OfxDummyContainer *</span>
42
00039 <span class="comment"> ***************************************************************************/</span>
44
00041 OfxDummyContainer::OfxDummyContainer(LibofxContext *p_libofx_context, <a class="code" href="classOfxGenericContainer.html">OfxGenericContainer</a> *para_parentcontainer, string para_tag_identifier):
45
00042 <a class="code" href="classOfxGenericContainer.html">OfxGenericContainer</a>(p_libofx_context, para_parentcontainer, para_tag_identifier)
47
00044 <a class="code" href="classOfxGenericContainer.html#o0">type</a>=<span class="stringliteral">"DUMMY"</span>;
48
00045 <a class="code" href="fx-0_88_80_2lib_2messages_8hh.html#a11">message_out</a>(INFO, <span class="stringliteral">"Created OfxDummyContainer to hold unsupported aggregate "</span>+para_tag_identifier);
50
00047 <span class="keywordtype">void</span> <a class="code" href="classOfxDummyContainer.html#a1">OfxDummyContainer::add_attribute</a>(<span class="keyword">const</span> string identifier, <span class="keyword">const</span> string value)
52
00049 <a class="code" href="fx-0_88_80_2lib_2messages_8hh.html#a11">message_out</a>(DEBUG, <span class="stringliteral">"OfxDummyContainer for "</span>+tag_identifier+<span class="stringliteral">" ignored a "</span>+identifier+<span class="stringliteral">" ("</span>+value+<span class="stringliteral">")"</span>);
55
00052 <span class="comment">/***************************************************************************</span>
56
00053 <span class="comment"> * OfxPushUpContainer *</span>
57
00054 <span class="comment"> ***************************************************************************/</span>
59
00056 OfxPushUpContainer::OfxPushUpContainer(LibofxContext *p_libofx_context, <a class="code" href="classOfxGenericContainer.html">OfxGenericContainer</a> *para_parentcontainer, string para_tag_identifier):
60
00057 <a class="code" href="classOfxGenericContainer.html">OfxGenericContainer</a>(p_libofx_context, para_parentcontainer, para_tag_identifier)
62
00059 <a class="code" href="classOfxGenericContainer.html#o0">type</a>=<span class="stringliteral">"PUSHUP"</span>;
63
00060 <a class="code" href="fx-0_88_80_2lib_2messages_8hh.html#a11">message_out</a>(DEBUG, <span class="stringliteral">"Created OfxPushUpContainer to hold aggregate "</span>+tag_identifier);
65
00062 <span class="keywordtype">void</span> <a class="code" href="classOfxPushUpContainer.html#a1">OfxPushUpContainer::add_attribute</a>(<span class="keyword">const</span> string identifier, <span class="keyword">const</span> string value)
67
00064 <span class="comment">//message_out(DEBUG, "OfxPushUpContainer for "+tag_identifier+" will push up a "+identifier+" ("+value+") to a "+ parentcontainer->type + " container");</span>
68
00065 parentcontainer-><a class="code" href="classOfxGenericContainer.html#a4">add_attribute</a>(identifier, value);
71
00068 <span class="comment">/***************************************************************************</span>
72
00069 <span class="comment"> * OfxStatusContainer *</span>
73
00070 <span class="comment"> ***************************************************************************/</span>
75
00072 OfxStatusContainer::OfxStatusContainer(LibofxContext *p_libofx_context, <a class="code" href="classOfxGenericContainer.html">OfxGenericContainer</a> *para_parentcontainer, string para_tag_identifier):
76
00073 <a class="code" href="classOfxGenericContainer.html">OfxGenericContainer</a>(p_libofx_context, para_parentcontainer, para_tag_identifier)
78
00075 memset(&data,0,<span class="keyword">sizeof</span>(data));
79
00076 <a class="code" href="classOfxGenericContainer.html#o0">type</a>=<span class="stringliteral">"STATUS"</span>;
80
00077 <span class="keywordflow">if</span> (parentcontainer!=NULL){
81
00078 strncpy(data.ofx_element_name, parentcontainer-><a class="code" href="classOfxGenericContainer.html#o1">tag_identifier</a>.c_str(), OFX_ELEMENT_NAME_LENGTH);
82
00079 data.ofx_element_name_valid=<span class="keyword">true</span>;
86
00083 OfxStatusContainer::~OfxStatusContainer()
88
00085 libofx_context->statusCallback(data);
90
00087 <span class="keywordtype">void</span> <a class="code" href="classOfxStatusContainer.html#a2">OfxStatusContainer::add_attribute</a>(<span class="keyword">const</span> string identifier, <span class="keyword">const</span> string value)
92
00089 <a class="code" href="structErrorMsg.html">ErrorMsg</a> error_msg;
94
00091 <span class="keywordflow">if</span>( identifier==<span class="stringliteral">"CODE"</span>){
95
00092 data.<a class="code" href="structOfxStatusData.html#z9_1">code</a>=atoi(value.c_str());
96
00093 error_msg = <a class="code" href="fx-0_88_80_2lib_2ofx__error__msg_8hh.html#a1">find_error_msg</a>(data.<a class="code" href="structOfxStatusData.html#z9_1">code</a>);
97
00094 data.<a class="code" href="structOfxStatusData.html#z9_2">name</a> = error_msg.<a class="code" href="structErrorMsg.html#o1">name</a>;<span class="comment">//memory is already allocated</span>
98
00095 data.<a class="code" href="structOfxStatusData.html#z9_3">description</a> = error_msg.<a class="code" href="structErrorMsg.html#o2">description</a>;<span class="comment">//memory is already allocated</span>
99
00096 data.<a class="code" href="structOfxStatusData.html#z9_4">code_valid</a> = <span class="keyword">true</span>;
101
00098 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(identifier==<span class="stringliteral">"SEVERITY"</span>){
102
00099 data.<a class="code" href="structOfxStatusData.html#z9_6">severity_valid</a> = <span class="keyword">true</span>;
103
00100 <span class="keywordflow">if</span>(value==<span class="stringliteral">"INFO"</span>) {
104
00101 data.<a class="code" href="structOfxStatusData.html#z9_5">severity</a>=OfxStatusData::INFO;
106
00103 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(value==<span class="stringliteral">"WARN"</span>) {
107
00104 data.<a class="code" href="structOfxStatusData.html#z9_5">severity</a>=OfxStatusData::WARN;
109
00106 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(value==<span class="stringliteral">"ERROR"</span>) {
110
00107 data.<a class="code" href="structOfxStatusData.html#z9_5">severity</a>=OfxStatusData::ERROR;
112
00109 <span class="keywordflow">else</span>{
113
00110 <a class="code" href="fx-0_88_80_2lib_2messages_8hh.html#a11">message_out</a>(ERROR, <span class="stringliteral">"WRITEME: Unknown severity "</span>+value+<span class="stringliteral">" inside a "</span>+type+<span class="stringliteral">" container"</span>);
114
00111 data.<a class="code" href="structOfxStatusData.html#z9_6">severity_valid</a> = <span class="keyword">false</span>;
117
00114 <span class="keywordflow">else</span> <span class="keywordflow">if</span>((identifier==<span class="stringliteral">"MESSAGE"</span>)||(identifier==<span class="stringliteral">"MESSAGE2"</span>)){
118
00115 data.<a class="code" href="structOfxStatusData.html#z10_0">server_message</a>=<span class="keyword">new</span> <span class="keywordtype">char</span>[value.length()];
119
00116 strcpy(data.<a class="code" href="structOfxStatusData.html#z10_0">server_message</a>,value.c_str());
120
00117 data.<a class="code" href="structOfxStatusData.html#z10_1">server_message_valid</a>=<span class="keyword">true</span>;
122
00119 <span class="keywordflow">else</span>{
123
00120 <span class="comment">/* Redirect unknown identifiers to the base class */</span>
124
00121 <a class="code" href="classOfxGenericContainer.html#a4">OfxGenericContainer::add_attribute</a>(identifier, value);
130
00127 <span class="comment">/***************************************************************************</span>
131
00128 <span class="comment"> * OfxBalanceContainer (does not directly abstract a object in libofx.h) *</span>
132
00129 <span class="comment"> ***************************************************************************/</span>
134
00131 OfxBalanceContainer::OfxBalanceContainer(LibofxContext *p_libofx_context, <a class="code" href="classOfxGenericContainer.html">OfxGenericContainer</a> *para_parentcontainer, string para_tag_identifier):
135
00132 <a class="code" href="classOfxGenericContainer.html">OfxGenericContainer</a>(p_libofx_context, para_parentcontainer, para_tag_identifier)
137
00134 amount_valid=<span class="keyword">false</span>;
138
00135 date_valid=<span class="keyword">false</span>;
139
00136 <a class="code" href="classOfxGenericContainer.html#o0">type</a>=<span class="stringliteral">"BALANCE"</span>;
142
00139 OfxBalanceContainer::~OfxBalanceContainer()
144
00141 <span class="keywordflow">if</span> (parentcontainer-><a class="code" href="classOfxGenericContainer.html#o0">type</a> == <span class="stringliteral">"STATEMENT"</span>)
146
00143 ((<a class="code" href="classOfxStatementContainer.html">OfxStatementContainer</a>*)parentcontainer)->add_balance(<span class="keyword">this</span>);
148
00145 <span class="keywordflow">else</span>
150
00147 <a class="code" href="fx-0_88_80_2lib_2messages_8hh.html#a11">message_out</a> (ERROR,<span class="stringliteral">"I completed a "</span> + type + <span class="stringliteral">" element, but I havent found a suitable parent to save it"</span>);
153
00150 <span class="keywordtype">void</span> <a class="code" href="classOfxBalanceContainer.html#a2">OfxBalanceContainer::add_attribute</a>(<span class="keyword">const</span> string identifier, <span class="keyword">const</span> string value)
155
00152 <span class="keywordflow">if</span>(identifier==<span class="stringliteral">"BALAMT"</span>){
156
00153 <a class="code" href="classOfxBalanceContainer.html#o0">amount</a>=<a class="code" href="fx-0_88_80_2lib_2ofx__utilities_8hh.html#a5">ofxamount_to_double</a>(value);
157
00154 amount_valid=<span class="keyword">true</span>;
159
00156 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(identifier==<span class="stringliteral">"DTASOF"</span>){
160
00157 <a class="code" href="classOfxBalanceContainer.html#o2">date</a> = <a class="code" href="fx-0_88_80_2lib_2ofx__utilities_8hh.html#a4">ofxdate_to_time_t</a>(value);
161
00158 date_valid = <span class="keyword">true</span>;
163
00160 <span class="keywordflow">else</span>{
164
00161 <span class="comment">/* Redirect unknown identifiers to the base class */</span>
165
00162 <a class="code" href="classOfxGenericContainer.html#a4">OfxGenericContainer::add_attribute</a>(identifier, value);
168
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Jul 31 15:38:35 2005 for LibOFX by
169
<a href="http://www.doxygen.org/index.html">
170
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address>