1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>LibOFX: ofx_container_main.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
<ul>
<li><a href="main.html"><span>Main Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<h1>ofx_container_main.cpp</h1><a href="ofx__container__main_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/***************************************************************************</span>
<a name="l00002"></a>00002 <span class="comment"> ofx_container_main.cpp </span>
<a name="l00003"></a>00003 <span class="comment"> -------------------</span>
<a name="l00004"></a>00004 <span class="comment"> copyright : (C) 2002 by Benoit Grégoire</span>
<a name="l00005"></a>00005 <span class="comment"> email : bock@step.polymtl.ca</span>
<a name="l00006"></a>00006 <span class="comment">***************************************************************************/</span>
<a name="l00010"></a>00010 <span class="comment">/***************************************************************************</span>
<a name="l00011"></a>00011 <span class="comment"> * *</span>
<a name="l00012"></a>00012 <span class="comment"> * This program is free software; you can redistribute it and/or modify *</span>
<a name="l00013"></a>00013 <span class="comment"> * it under the terms of the GNU General Public License as published by *</span>
<a name="l00014"></a>00014 <span class="comment"> * the Free Software Foundation; either version 2 of the License, or *</span>
<a name="l00015"></a>00015 <span class="comment"> * (at your option) any later version. *</span>
<a name="l00016"></a>00016 <span class="comment"> * *</span>
<a name="l00017"></a>00017 <span class="comment"> ***************************************************************************/</span>
<a name="l00018"></a>00018
<a name="l00019"></a>00019 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#include <config.h></span>
<a name="l00021"></a>00021 <span class="preprocessor">#endif</span>
<a name="l00022"></a>00022 <span class="preprocessor"></span>
<a name="l00023"></a>00023 <span class="preprocessor">#include <string></span>
<a name="l00024"></a>00024 <span class="preprocessor">#include <iostream></span>
<a name="l00025"></a>00025 <span class="preprocessor">#include "ParserEventGeneratorKit.h"</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="messages_8hh.html" title="Message IO functionality.">messages.hh</a>"</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="libofx-0_89_80_2inc_2libofx_8h.html" title="Main header file containing the LibOfx API.">libofx.h</a>"</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="ofx__containers_8hh.html" title="LibOFX internal object code.">ofx_containers.hh</a>"</span>
<a name="l00029"></a>00029
<a name="l00030"></a><a class="code" href="classOfxMainContainer.html#bdecebdd778e0169bcb7389f8db0454d">00030</a> <a class="code" href="classOfxMainContainer.html#bdecebdd778e0169bcb7389f8db0454d">OfxMainContainer::OfxMainContainer</a>(<a class="code" href="classLibofxContext.html">LibofxContext</a> *p_libofx_context, <a class="code" href="classOfxGenericContainer.html" title="A generic container for an OFX SGML element. Every container inherits from OfxGenericContainer...">OfxGenericContainer</a> *para_parentcontainer, <span class="keywordtype">string</span> para_tag_identifier):
<a name="l00031"></a>00031 <a class="code" href="classOfxGenericContainer.html" title="A generic container for an OFX SGML element. Every container inherits from OfxGenericContainer...">OfxGenericContainer</a>(p_libofx_context, para_parentcontainer, para_tag_identifier)
<a name="l00032"></a>00032 {
<a name="l00033"></a>00033
<a name="l00034"></a>00034 <span class="comment">//statement_tree_top=statement_tree.insert(statement_tree_top, NULL);</span>
<a name="l00035"></a>00035 <span class="comment">//security_tree_top=security_tree.insert(security_tree_top, NULL);</span>
<a name="l00036"></a>00036
<a name="l00037"></a>00037 }
<a name="l00038"></a><a class="code" href="classOfxMainContainer.html#195e97a1121a6efdf898bd1cc5c43f8f">00038</a> <a class="code" href="classOfxMainContainer.html#195e97a1121a6efdf898bd1cc5c43f8f">OfxMainContainer::~OfxMainContainer</a>()
<a name="l00039"></a>00039 {
<a name="l00040"></a>00040 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"Entering the main container's destructor"</span>);
<a name="l00041"></a>00041 <a class="code" href="classtree.html">tree<OfxGenericContainer *>::iterator</a> tmp = security_tree.<a class="code" href="classtree.html#76b3a629c0208d5ae5b4ffcd4492e05e" title="Return iterator to the beginning of the tree.">begin</a>();
<a name="l00042"></a>00042
<a name="l00043"></a>00043 <span class="keywordflow">while</span>(tmp!=security_tree.<a class="code" href="classtree.html#0d09fe9fd34fbfc9c9e4e28cb694448e" title="Return iterator to the end of the tree.">end</a>())
<a name="l00044"></a>00044 {
<a name="l00045"></a>00045 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"Deleting "</span>+(*tmp)->type);
<a name="l00046"></a>00046 <span class="keyword">delete</span> (*tmp);
<a name="l00047"></a>00047 ++tmp;
<a name="l00048"></a>00048 }
<a name="l00049"></a>00049 tmp = account_tree.<a class="code" href="classtree.html#76b3a629c0208d5ae5b4ffcd4492e05e" title="Return iterator to the beginning of the tree.">begin</a>();
<a name="l00050"></a>00050 <span class="keywordflow">while</span>(tmp!=account_tree.<a class="code" href="classtree.html#0d09fe9fd34fbfc9c9e4e28cb694448e" title="Return iterator to the end of the tree.">end</a>())
<a name="l00051"></a>00051 {
<a name="l00052"></a>00052 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"Deleting "</span>+(*tmp)->type);
<a name="l00053"></a>00053 <span class="keyword">delete</span> (*tmp);
<a name="l00054"></a>00054 ++tmp;
<a name="l00055"></a>00055 }
<a name="l00056"></a>00056 }
<a name="l00057"></a><a class="code" href="classOfxMainContainer.html#bf9596f27e1f2382fe6f1054d2a00e1d">00057</a> <span class="keywordtype">int</span> <a class="code" href="classOfxMainContainer.html#bf9596f27e1f2382fe6f1054d2a00e1d">OfxMainContainer::add_container</a>(<a class="code" href="classOfxGenericContainer.html" title="A generic container for an OFX SGML element. Every container inherits from OfxGenericContainer...">OfxGenericContainer</a> * container)
<a name="l00058"></a>00058 {
<a name="l00059"></a>00059 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"OfxMainContainer::add_container for element "</span> + container-><a class="code" href="classOfxGenericContainer.html#2594ccb63eaf769a6b4b5d224411f031">tag_identifier</a> + <span class="stringliteral">"; destroying the generic container"</span>);
<a name="l00060"></a>00060 <span class="comment">/* Call gen_event anyway, it could be a status container or similar */</span>
<a name="l00061"></a>00061 container-><a class="code" href="classOfxGenericContainer.html#a8ffd0a68bcea4f0048b392af5078105" title="Generate libofx.h events.">gen_event</a>();
<a name="l00062"></a>00062 <span class="keyword">delete</span> container;
<a name="l00063"></a>00063 <span class="keywordflow">return</span> 0;
<a name="l00064"></a>00064 }
<a name="l00065"></a>00065
<a name="l00066"></a><a class="code" href="classOfxMainContainer.html#b99721779d57ad2ed3b5e3fab1329027">00066</a> <span class="keywordtype">int</span> <a class="code" href="classOfxMainContainer.html#bf9596f27e1f2382fe6f1054d2a00e1d">OfxMainContainer::add_container</a>(<a class="code" href="classOfxSecurityContainer.html" title="Represents a security, such as a stock or bond.">OfxSecurityContainer</a> * container)
<a name="l00067"></a>00067 {
<a name="l00068"></a>00068 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"OfxMainContainer::add_container, adding a security"</span>);
<a name="l00069"></a>00069 security_tree.<a class="code" href="classtree.html#c3d19d3a42f91618267674f2c236aad9" title="Insert node as previous sibling of node pointed to by position.">insert</a>(security_tree.<a class="code" href="classtree.html#76b3a629c0208d5ae5b4ffcd4492e05e" title="Return iterator to the beginning of the tree.">begin</a>(), container);
<a name="l00070"></a>00070 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00071"></a>00071
<a name="l00072"></a>00072
<a name="l00073"></a>00073 }
<a name="l00074"></a>00074
<a name="l00075"></a><a class="code" href="classOfxMainContainer.html#0233b98484c114e449b22f67d5d8bafc">00075</a> <span class="keywordtype">int</span> <a class="code" href="classOfxMainContainer.html#bf9596f27e1f2382fe6f1054d2a00e1d">OfxMainContainer::add_container</a>(<a class="code" href="classOfxAccountContainer.html" title="Represents a bank account or a credit card account.">OfxAccountContainer</a> * container)
<a name="l00076"></a>00076 {
<a name="l00077"></a>00077 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"OfxMainContainer::add_container, adding an account"</span>);
<a name="l00078"></a>00078 <span class="keywordflow">if</span>( account_tree.<a class="code" href="classtree.html#219ff1bfc99f78fd9a2db71f41891523" title="Count the total number of nodes.">size</a>()==0)
<a name="l00079"></a>00079 {
<a name="l00080"></a>00080 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"OfxMainContainer::add_container, account is the first account"</span>);
<a name="l00081"></a>00081 account_tree.<a class="code" href="classtree.html#c3d19d3a42f91618267674f2c236aad9" title="Insert node as previous sibling of node pointed to by position.">insert</a>(account_tree.<a class="code" href="classtree.html#76b3a629c0208d5ae5b4ffcd4492e05e" title="Return iterator to the beginning of the tree.">begin</a>(), container);
<a name="l00082"></a>00082 }
<a name="l00083"></a>00083 <span class="keywordflow">else</span>
<a name="l00084"></a>00084 {
<a name="l00085"></a>00085 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"OfxMainContainer::add_container, account is not the first account"</span>);
<a name="l00086"></a>00086 <a class="code" href="classtree.html">tree<OfxGenericContainer *>::sibling_iterator</a> tmp = account_tree.<a class="code" href="classtree.html#76b3a629c0208d5ae5b4ffcd4492e05e" title="Return iterator to the beginning of the tree.">begin</a>();
<a name="l00087"></a>00087 tmp += (account_tree.<a class="code" href="classtree.html#3cddce970c4d44af57cf9ec0d7c3d009" title="Count the number of &#39;next&#39; siblings of node at iterator.">number_of_siblings</a>(tmp)); <span class="comment">//Find last account</span>
<a name="l00088"></a>00088 account_tree.<a class="code" href="classtree.html#215ab56bd13f59c661eb2298e373ff3e" title="Insert node as next sibling of node pointed to by position.">insert_after</a>(tmp, container);
<a name="l00089"></a>00089 }
<a name="l00090"></a>00090 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00091"></a>00091 }
<a name="l00092"></a>00092
<a name="l00093"></a><a class="code" href="classOfxMainContainer.html#4b1ee2f1b0fe365acf3037abee8cc7d2">00093</a> <span class="keywordtype">int</span> <a class="code" href="classOfxMainContainer.html#bf9596f27e1f2382fe6f1054d2a00e1d">OfxMainContainer::add_container</a>(<a class="code" href="classOfxStatementContainer.html" title="Represents a statement for either a bank account or a credit card account.">OfxStatementContainer</a> * container)
<a name="l00094"></a>00094 {
<a name="l00095"></a>00095 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"OfxMainContainer::add_container, adding a statement"</span>);
<a name="l00096"></a>00096 <a class="code" href="classtree.html">tree<OfxGenericContainer *>::sibling_iterator</a> tmp = account_tree.<a class="code" href="classtree.html#76b3a629c0208d5ae5b4ffcd4492e05e" title="Return iterator to the beginning of the tree.">begin</a>();
<a name="l00097"></a>00097 <span class="comment">//cerr<< "size="<<account_tree.size()<<"; num_sibblings="<<account_tree.number_of_siblings(tmp)<<endl;</span>
<a name="l00098"></a>00098 tmp += (account_tree.<a class="code" href="classtree.html#3cddce970c4d44af57cf9ec0d7c3d009" title="Count the number of &#39;next&#39; siblings of node at iterator.">number_of_siblings</a>(tmp)); <span class="comment">//Find last account</span>
<a name="l00099"></a>00099
<a name="l00100"></a>00100 <span class="keywordflow">if</span>(account_tree.<a class="code" href="classtree.html#9605b028195248894dc8cf506cd256e3" title="Determine whether the iterator is an &#39;end&#39; iterator and thus not actually...">is_valid</a>(tmp))
<a name="l00101"></a>00101 {
<a name="l00102"></a>00102 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"1: tmp is valid, Accounts are present"</span>);
<a name="l00103"></a>00103 <a class="code" href="classtree.html">tree<OfxGenericContainer *>::iterator</a> child = account_tree.<a class="code" href="classtree.html#76b3a629c0208d5ae5b4ffcd4492e05e" title="Return iterator to the beginning of the tree.">begin</a>(tmp);
<a name="l00104"></a>00104 <span class="keywordflow">if</span>(account_tree.<a class="code" href="classtree.html#96f82a90a3e21e82f486f325b0cf9faa" title="Count the number of children of node at position.">number_of_children</a>(tmp)!=0)
<a name="l00105"></a>00105 {
<a name="l00106"></a>00106 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"There are already children for this account"</span>);
<a name="l00107"></a>00107 account_tree.<a class="code" href="classtree.html#c3d19d3a42f91618267674f2c236aad9" title="Insert node as previous sibling of node pointed to by position.">insert</a>(tmp.<a class="code" href="classtree.html#76b3a629c0208d5ae5b4ffcd4492e05e" title="Return iterator to the beginning of the tree.">begin</a>(), container);
<a name="l00108"></a>00108
<a name="l00109"></a>00109 }
<a name="l00110"></a>00110 <span class="keywordflow">else</span>
<a name="l00111"></a>00111 {
<a name="l00112"></a>00112 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"There are no children for this account"</span>);
<a name="l00113"></a>00113 account_tree.<a class="code" href="classtree.html#8d68e95f5088d48cb54fd6ae381729f0" title="Insert empty node as last child of node pointed to by position.">append_child</a>(tmp,container);
<a name="l00114"></a>00114 }
<a name="l00115"></a>00115 container-><a class="code" href="classOfxStatementContainer.html#90996500eb442c33c2539eed823ec318">add_account</a>(&( ((<a class="code" href="classOfxAccountContainer.html" title="Represents a bank account or a credit card account.">OfxAccountContainer</a> *)(*tmp))->data));
<a name="l00116"></a>00116 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00117"></a>00117 }
<a name="l00118"></a>00118 <span class="keywordflow">else</span>
<a name="l00119"></a>00119 {
<a name="l00120"></a>00120 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f692fd6f336d08340583bd620a7f5694c90">ERROR</a>,<span class="stringliteral">"OfxMainContainer::add_container, no accounts are present (tmp is invalid)"</span>);
<a name="l00121"></a>00121 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00122"></a>00122 }
<a name="l00123"></a>00123 }
<a name="l00124"></a>00124
<a name="l00125"></a><a class="code" href="classOfxMainContainer.html#e60ff6ec23a3a54d08cb86f088105b29">00125</a> <span class="keywordtype">int</span> <a class="code" href="classOfxMainContainer.html#bf9596f27e1f2382fe6f1054d2a00e1d">OfxMainContainer::add_container</a>(<a class="code" href="classOfxTransactionContainer.html" title="Represents a generic transaction.">OfxTransactionContainer</a> * container)
<a name="l00126"></a>00126 {
<a name="l00127"></a>00127 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"OfxMainContainer::add_container, adding a transaction"</span>);
<a name="l00128"></a>00128
<a name="l00129"></a>00129 <span class="keywordflow">if</span>( account_tree.<a class="code" href="classtree.html#219ff1bfc99f78fd9a2db71f41891523" title="Count the total number of nodes.">size</a>()!=0)
<a name="l00130"></a>00130 {
<a name="l00131"></a>00131 <a class="code" href="classtree.html">tree<OfxGenericContainer *>::sibling_iterator</a> tmp = account_tree.<a class="code" href="classtree.html#76b3a629c0208d5ae5b4ffcd4492e05e" title="Return iterator to the beginning of the tree.">begin</a>();
<a name="l00132"></a>00132 <span class="comment">//cerr<< "size="<<account_tree.size()<<"; num_sibblings="<<account_tree.number_of_siblings(tmp)<<endl;</span>
<a name="l00133"></a>00133 tmp += (account_tree.<a class="code" href="classtree.html#3cddce970c4d44af57cf9ec0d7c3d009" title="Count the number of &#39;next&#39; siblings of node at iterator.">number_of_siblings</a>(tmp)); <span class="comment">//Find last account</span>
<a name="l00134"></a>00134 <span class="keywordflow">if</span>(account_tree.<a class="code" href="classtree.html#9605b028195248894dc8cf506cd256e3" title="Determine whether the iterator is an &#39;end&#39; iterator and thus not actually...">is_valid</a>(tmp))
<a name="l00135"></a>00135 {
<a name="l00136"></a>00136 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"OfxMainContainer::add_container: tmp is valid, Accounts are present"</span>);
<a name="l00137"></a>00137 account_tree.<a class="code" href="classtree.html#8d68e95f5088d48cb54fd6ae381729f0" title="Insert empty node as last child of node pointed to by position.">append_child</a>(tmp,container);
<a name="l00138"></a>00138 container-><a class="code" href="classOfxTransactionContainer.html#c3228dd35282322803e75f9f9015422f">add_account</a>(&(((<a class="code" href="classOfxAccountContainer.html" title="Represents a bank account or a credit card account.">OfxAccountContainer</a> *)(*tmp))->data));
<a name="l00139"></a>00139 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00140"></a>00140 }
<a name="l00141"></a>00141 <span class="keywordflow">else</span>
<a name="l00142"></a>00142 {
<a name="l00143"></a>00143 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f692fd6f336d08340583bd620a7f5694c90">ERROR</a>,<span class="stringliteral">"OfxMainContainer::add_container: tmp is invalid!"</span>);
<a name="l00144"></a>00144 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00145"></a>00145 }
<a name="l00146"></a>00146 }
<a name="l00147"></a>00147 <span class="keywordflow">else</span>
<a name="l00148"></a>00148 {
<a name="l00149"></a>00149 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f692fd6f336d08340583bd620a7f5694c90">ERROR</a>,<span class="stringliteral">"OfxMainContainer::add_container: the tree is empty!"</span>);
<a name="l00150"></a>00150 <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00151"></a>00151 }
<a name="l00152"></a>00152 }
<a name="l00153"></a>00153
<a name="l00154"></a><a class="code" href="classOfxMainContainer.html#e0b60f837b87b912f70a6f19bab12c52">00154</a> <span class="keywordtype">int</span> <a class="code" href="classOfxMainContainer.html#e0b60f837b87b912f70a6f19bab12c52" title="Generate libofx.h events.">OfxMainContainer::gen_event</a>()
<a name="l00155"></a>00155 {
<a name="l00156"></a>00156 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"Begin walking the trees of the main container to generate events"</span>);
<a name="l00157"></a>00157 <a class="code" href="classtree.html">tree<OfxGenericContainer *>::iterator</a> tmp = security_tree.<a class="code" href="classtree.html#76b3a629c0208d5ae5b4ffcd4492e05e" title="Return iterator to the beginning of the tree.">begin</a>();
<a name="l00158"></a>00158 <span class="comment">//cerr<<"security_tree.size(): "<<security_tree.size()<<endl;</span>
<a name="l00159"></a>00159 <span class="keywordtype">int</span> i = 0;
<a name="l00160"></a>00160 <span class="keywordflow">while</span>(tmp!=security_tree.<a class="code" href="classtree.html#0d09fe9fd34fbfc9c9e4e28cb694448e" title="Return iterator to the end of the tree.">end</a>())
<a name="l00161"></a>00161 {
<a name="l00162"></a>00162 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"Looping..."</span>);
<a name="l00163"></a>00163 <span class="comment">//cerr <<i<<endl;</span>
<a name="l00164"></a>00164 i++;
<a name="l00165"></a>00165 (*tmp)->gen_event();
<a name="l00166"></a>00166 ++tmp;
<a name="l00167"></a>00167 }
<a name="l00168"></a>00168 tmp = account_tree.<a class="code" href="classtree.html#76b3a629c0208d5ae5b4ffcd4492e05e" title="Return iterator to the beginning of the tree.">begin</a>();
<a name="l00169"></a>00169 <span class="comment">//cerr<<account_tree.size()<<endl;</span>
<a name="l00170"></a>00170 i = 0;
<a name="l00171"></a>00171 <span class="keywordflow">while</span>(tmp!=account_tree.<a class="code" href="classtree.html#0d09fe9fd34fbfc9c9e4e28cb694448e" title="Return iterator to the end of the tree.">end</a>())
<a name="l00172"></a>00172 {
<a name="l00173"></a>00173 <span class="comment">//cerr<< "i="<<i<<"; depth="<<account_tree.depth(tmp)<<endl;</span>
<a name="l00174"></a>00174 i++;
<a name="l00175"></a>00175 (*tmp)->gen_event();
<a name="l00176"></a>00176 ++tmp;
<a name="l00177"></a>00177 }
<a name="l00178"></a>00178 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"End walking the trees of the main container to generate events"</span>);
<a name="l00179"></a>00179
<a name="l00180"></a>00180 <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00181"></a>00181 }
<a name="l00182"></a>00182
<a name="l00183"></a><a class="code" href="classOfxMainContainer.html#054cf887c77188c235d9b964ae44efa5">00183</a> <a class="code" href="structOfxSecurityData.html" title="An abstraction of a security, such as a stock, mutual fund, etc.">OfxSecurityData</a> * <a class="code" href="classOfxMainContainer.html#054cf887c77188c235d9b964ae44efa5">OfxMainContainer::find_security</a>(<span class="keywordtype">string</span> unique_id)
<a name="l00184"></a>00184 {
<a name="l00185"></a>00185 <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,<span class="stringliteral">"OfxMainContainer::find_security() Begin."</span>);
<a name="l00186"></a>00186
<a name="l00187"></a>00187 <a class="code" href="classtree.html">tree<OfxGenericContainer *>::sibling_iterator</a> tmp = security_tree.<a class="code" href="classtree.html#76b3a629c0208d5ae5b4ffcd4492e05e" title="Return iterator to the beginning of the tree.">begin</a>();
<a name="l00188"></a>00188 <a class="code" href="structOfxSecurityData.html" title="An abstraction of a security, such as a stock, mutual fund, etc.">OfxSecurityData</a> * retval = NULL;
<a name="l00189"></a>00189 <span class="keywordflow">while</span>(tmp!=security_tree.<a class="code" href="classtree.html#0d09fe9fd34fbfc9c9e4e28cb694448e" title="Return iterator to the end of the tree.">end</a>()&&retval==NULL)
<a name="l00190"></a>00190 {
<a name="l00191"></a>00191 <span class="keywordflow">if</span>(((<a class="code" href="classOfxSecurityContainer.html" title="Represents a security, such as a stock or bond.">OfxSecurityContainer</a>*)(*tmp))->data.unique_id==unique_id)
<a name="l00192"></a>00192 { <a class="code" href="messages_8cpp.html#6af6947c1ec6fcbefd793f80c26d90fa" title="Message output function.">message_out</a>(<a class="code" href="messages_8hh.html#7cd03dafa59895bc306bf220b7b85f690593585da9181e972974c1274d8f2b4f">DEBUG</a>,(<span class="keywordtype">string</span>)<span class="stringliteral">"Security "</span>+((<a class="code" href="classOfxSecurityContainer.html" title="Represents a security, such as a stock or bond.">OfxSecurityContainer</a>*)(*tmp))->data.unique_id+<span class="stringliteral">" found."</span>);
<a name="l00193"></a>00193 retval=&((<a class="code" href="classOfxSecurityContainer.html" title="Represents a security, such as a stock or bond.">OfxSecurityContainer</a>*)(*tmp))->data;
<a name="l00194"></a>00194 }
<a name="l00195"></a>00195 ++tmp;
<a name="l00196"></a>00196 }
<a name="l00197"></a>00197 <span class="keywordflow">return</span> retval;
<a name="l00198"></a>00198 }
</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Mon Nov 19 20:27:59 2007 for LibOFX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
</body>
</html>
|