~ubuntu-branches/ubuntu/natty/libofx/natty

« back to all changes in this revision

Viewing changes to doc/html/fx-0_87_80_2lib_2ofc__sgml_8cpp-source.html

  • Committer: Bazaar Package Importer
  • Author(s): Thomas Bushnell, BSG
  • Date: 2005-11-29 00:12:00 UTC
  • mfrom: (1.2.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20051129001200-aplj8zbj80f68xby
Tags: 1:0.8.0-9
Generate autotools using Debian libtool (rerun libtoolize --copy
--force, aclocal-1.9, autoconf). (Closes: #341190)

Show diffs side-by-side

added added

removed removed

Lines of Context:
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: ofc_sgml.cpp Source File</title>
4
 
<link href="doxygen.css" rel="stylesheet" type="text/css">
5
 
</head><body>
6
 
<!-- Generated by Doxygen 1.3.7 -->
7
 
<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
8
 
<h1>ofc_sgml.cpp</h1><a href="fx-0_87_80_2lib_2ofc__sgml_8cpp.html">Go to the documentation of this file.</a><pre class="fragment"><div>00001 <span class="comment">/***************************************************************************</span>
9
 
00002 <span class="comment">                          ofx_sgml.cpp</span>
10
 
00003 <span class="comment">                          -------------------</span>
11
 
00004 <span class="comment">    copyright            : (C) 2002 by Benoit Gr�goire</span>
12
 
00005 <span class="comment">    email                : bock@step.polymtl.ca</span>
13
 
00006 <span class="comment">***************************************************************************/</span>
14
 
00012 <span class="comment">/***************************************************************************</span>
15
 
00013 <span class="comment"> *                                                                         *</span>
16
 
00014 <span class="comment"> *   This program is free software; you can redistribute it and/or modify  *</span>
17
 
00015 <span class="comment"> *   it under the terms of the GNU General Public License as published by  *</span>
18
 
00016 <span class="comment"> *   the Free Software Foundation; either version 2 of the License, or     *</span>
19
 
00017 <span class="comment"> *   (at your option) any later version.                                   *</span>
20
 
00018 <span class="comment"> *                                                                         *</span>
21
 
00019 <span class="comment"> ***************************************************************************/</span>
22
 
00020 
23
 
00021 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
24
 
00022 <span class="preprocessor"></span><span class="preprocessor">#include &lt;config.h&gt;</span>
25
 
00023 <span class="preprocessor">#endif</span>
26
 
00024 <span class="preprocessor"></span>
27
 
00025 <span class="preprocessor">#include &lt;iostream&gt;</span>
28
 
00026 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
29
 
00027 <span class="preprocessor">#include &lt;string&gt;</span>
30
 
00028 <span class="preprocessor">#include "ParserEventGeneratorKit.h"</span>
31
 
00029 <span class="preprocessor">#include "<a class="code" href="libofx-0_87_80_2inc_2libofx_8h.html">libofx.h</a>"</span>
32
 
00030 <span class="preprocessor">#include "<a class="code" href="fx-0_87_80_2lib_2ofx__utilities_8hh.html">ofx_utilities.hh</a>"</span>
33
 
00031 <span class="preprocessor">#include "<a class="code" href="fx-0_87_80_2lib_2messages_8hh.html">messages.hh</a>"</span>
34
 
00032 <span class="preprocessor">#include "<a class="code" href="fx-0_87_80_2lib_2ofx__containers_8hh.html">ofx_containers.hh</a>"</span>
35
 
00033 <span class="preprocessor">#include "<a class="code" href="fx-0_87_80_2lib_2ofc__sgml_8hh.html">ofc_sgml.hh</a>"</span>
36
 
00034 
37
 
00035 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
38
 
00036 
39
 
00037 
40
 
<a name="l00038"></a><a class="code" href="fx-0_87_80_2lib_2ofc__sgml_8cpp.html#a0">00038</a> <span class="keyword">extern</span> SGMLApplication::OpenEntityPtr <a class="code" href="messages_8cpp.html#a0">entity_ptr</a>;
41
 
<a name="l00039"></a><a class="code" href="fx-0_87_80_2lib_2ofc__sgml_8cpp.html#a1">00039</a> <span class="keyword">extern</span> SGMLApplication::Position <a class="code" href="messages_8cpp.html#a1">position</a>;
42
 
00040 <span class="keyword">extern</span> <a class="code" href="classOfxMainContainer.html">OfxMainContainer</a> * MainContainer;
43
 
00041 
44
 
00044 <span class="keyword">class </span><a class="code" href="classOFCApplication.html">OFCApplication</a> : <span class="keyword">public</span> SGMLApplication{
45
 
00045 <span class="keyword">private</span>:
46
 
00046   <a class="code" href="classOfxGenericContainer.html">OfxGenericContainer</a> *curr_container_element; 
47
 
00047   <a class="code" href="classOfxGenericContainer.html">OfxGenericContainer</a> *tmp_container_element;
48
 
00048   <span class="keywordtype">bool</span> is_data_element; 
49
 
00049   string incoming_data; 
50
 
00050   LibofxContext * libofx_context;
51
 
00051  <span class="keyword">public</span>:
52
 
00052   <a class="code" href="classOFCApplication.html">OFCApplication</a> (LibofxContext * p_libofx_context)
53
 
00053   {
54
 
00054     MainContainer=NULL;
55
 
00055     curr_container_element = NULL;
56
 
00056     is_data_element = <span class="keyword">false</span>;
57
 
00057     libofx_context=p_libofx_context;
58
 
00058   }
59
 
00059   
60
 
<a name="l00064"></a><a class="code" href="classOFCApplication.html#a7">00064</a>   <span class="keywordtype">void</span> <a class="code" href="classOFCApplication.html#a1">startElement</a> (<span class="keyword">const</span> StartElementEvent &amp; event)
61
 
00065   {
62
 
00066     string identifier;
63
 
00067     <a class="code" href="fx-0_87_80_2lib_2ofx__utilities_8hh.html#a2">CharStringtostring</a> (event.gi, identifier);
64
 
00068     <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a10">PARSER</a>,<span class="stringliteral">"startElement event received from OpenSP for element "</span> + identifier);
65
 
00069     
66
 
00070     <a class="code" href="messages_8cpp.html#a1">position</a> = event.pos;
67
 
00071 
68
 
00072     <span class="keywordflow">switch</span> (event.contentType)
69
 
00073       {
70
 
00074       <span class="keywordflow">case</span> StartElementEvent::empty:    <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a9">ERROR</a>,<span class="stringliteral">"StartElementEvent::empty\n"</span>);
71
 
00075         <span class="keywordflow">break</span>;
72
 
00076       <span class="keywordflow">case</span> StartElementEvent::cdata:    <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a9">ERROR</a>,<span class="stringliteral">"StartElementEvent::cdata\n"</span>);
73
 
00077         <span class="keywordflow">break</span>;
74
 
00078       <span class="keywordflow">case</span> StartElementEvent::rcdata:   <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a9">ERROR</a>,<span class="stringliteral">"StartElementEvent::rcdata\n"</span>);
75
 
00079         <span class="keywordflow">break</span>;
76
 
00080       <span class="keywordflow">case</span> StartElementEvent::mixed:    <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a10">PARSER</a>,<span class="stringliteral">"StartElementEvent::mixed"</span>);
77
 
00081         is_data_element = <span class="keyword">true</span>;
78
 
00082         <span class="keywordflow">break</span>;
79
 
00083       <span class="keywordflow">case</span> StartElementEvent::element:  <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a10">PARSER</a>,<span class="stringliteral">"StartElementEvent::element"</span>);
80
 
00084         is_data_element = <span class="keyword">false</span>;
81
 
00085         <span class="keywordflow">break</span>;
82
 
00086       <span class="keywordflow">default</span>:
83
 
00087         <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a9">ERROR</a>,<span class="stringliteral">"Unknow SGML content type?!?!?!? OpenSP interface changed?"</span>);
84
 
00088       }
85
 
00089     
86
 
00090     <span class="keywordflow">if</span> (is_data_element == <span class="keyword">false</span>)
87
 
00091       {
88
 
00092         <span class="comment">/*------- The following are OFC entities ---------------*/</span>
89
 
00093 
90
 
00094         <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"OFC"</span>)
91
 
00095           {
92
 
00096             <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" found"</span>);
93
 
00097             MainContainer = <span class="keyword">new</span> <a class="code" href="classOfxMainContainer.html">OfxMainContainer</a> (libofx_context, curr_container_element, identifier);
94
 
00098             curr_container_element = MainContainer;
95
 
00099           }
96
 
00100         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"STATUS"</span>)
97
 
00101           {
98
 
00102             <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" found"</span>);
99
 
00103             curr_container_element = <span class="keyword">new</span> <a class="code" href="classOfxStatusContainer.html">OfxStatusContainer</a> (libofx_context, curr_container_element, identifier);
100
 
00104           }
101
 
00105         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"ACCTSTMT"</span>)
102
 
00106           {
103
 
00107             <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" found"</span>);
104
 
00108             curr_container_element = <span class="keyword">new</span> <a class="code" href="classOfxStatementContainer.html">OfxStatementContainer</a> (libofx_context, curr_container_element, identifier);
105
 
00109           }
106
 
00110         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"STMTRS"</span>)
107
 
00111           {
108
 
00112             <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" found"</span>);
109
 
00113             <span class="comment">//STMTRS ignored, we will process it's attributes directly inside the STATEMENT,</span>
110
 
00114             <span class="keywordflow">if</span>(curr_container_element-&gt;<a class="code" href="classOfxGenericContainer.html#o0">type</a>!=<span class="stringliteral">"STATEMENT"</span>)
111
 
00115               {
112
 
00116                 <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a9">ERROR</a>,<span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" found while not inside a STATEMENT container"</span>);
113
 
00117               }
114
 
00118             <span class="keywordflow">else</span>
115
 
00119               {
116
 
00120                 curr_container_element = <span class="keyword">new</span> <a class="code" href="classOfxPushUpContainer.html">OfxPushUpContainer</a> (libofx_context, curr_container_element, identifier);
117
 
00121               }
118
 
00122           }
119
 
00123         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"GENTRN"</span> ||
120
 
00124                  identifier == <span class="stringliteral">"STMTTRN"</span>)
121
 
00125           {
122
 
00126             <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" found"</span>);
123
 
00127             curr_container_element = <span class="keyword">new</span> <a class="code" href="classOfxBankTransactionContainer.html">OfxBankTransactionContainer</a> (libofx_context, curr_container_element, identifier);
124
 
00128           }
125
 
00129         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(identifier == <span class="stringliteral">"BUYDEBT"</span> ||
126
 
00130                 identifier == <span class="stringliteral">"BUYMF"</span> ||
127
 
00131                 identifier == <span class="stringliteral">"BUYOPT"</span> ||
128
 
00132                 identifier == <span class="stringliteral">"BUYOTHER"</span> ||
129
 
00133                 identifier == <span class="stringliteral">"BUYSTOCK"</span> ||
130
 
00134                 identifier == <span class="stringliteral">"CLOSUREOPT"</span> ||
131
 
00135                 identifier == <span class="stringliteral">"INCOME"</span> ||
132
 
00136                 identifier == <span class="stringliteral">"INVEXPENSE"</span> ||
133
 
00137                 identifier == <span class="stringliteral">"JRNLFUND"</span> ||
134
 
00138                 identifier == <span class="stringliteral">"JRNLSEC"</span> ||
135
 
00139                 identifier == <span class="stringliteral">"MARGININTEREST"</span> ||
136
 
00140                 identifier == <span class="stringliteral">"REINVEST"</span> ||
137
 
00141                 identifier == <span class="stringliteral">"RETOFCAP"</span> ||
138
 
00142                 identifier == <span class="stringliteral">"SELLDEBT"</span> ||
139
 
00143                 identifier == <span class="stringliteral">"SELLMF"</span> ||
140
 
00144                 identifier == <span class="stringliteral">"SELLOPT"</span> ||
141
 
00145                 identifier == <span class="stringliteral">"SELLOTHER"</span> ||
142
 
00146                 identifier == <span class="stringliteral">"SELLSTOCK"</span> ||
143
 
00147                 identifier == <span class="stringliteral">"SPLIT"</span> ||
144
 
00148                 identifier == <span class="stringliteral">"TRANSFER"</span> )
145
 
00149           {
146
 
00150             <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" found"</span>);
147
 
00151             curr_container_element = <span class="keyword">new</span> <a class="code" href="classOfxInvestmentTransactionContainer.html">OfxInvestmentTransactionContainer</a> (libofx_context, curr_container_element, identifier);
148
 
00152           }
149
 
00153         <span class="comment">/*The following is a list of OFX elements whose attributes will be processed by the parent container*/</span>
150
 
00154         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"INVBUY"</span> ||
151
 
00155                  identifier == <span class="stringliteral">"INVSELL"</span> ||
152
 
00156                  identifier == <span class="stringliteral">"INVTRAN"</span> ||
153
 
00157                  identifier == <span class="stringliteral">"SECID"</span>)
154
 
00158           {
155
 
00159             <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" found"</span>);
156
 
00160             curr_container_element = <span class="keyword">new</span> <a class="code" href="classOfxPushUpContainer.html">OfxPushUpContainer</a> (libofx_context, curr_container_element, identifier);
157
 
00161           }
158
 
00162 
159
 
00163         <span class="comment">/* The different types of accounts */</span>
160
 
00164         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"ACCOUNT"</span>||
161
 
00165                  identifier == <span class="stringliteral">"ACCTFROM"</span> )
162
 
00166           {
163
 
00167             <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" found"</span>);
164
 
00168             curr_container_element = <span class="keyword">new</span> <a class="code" href="classOfxAccountContainer.html">OfxAccountContainer</a> (libofx_context, curr_container_element, identifier);
165
 
00169           }
166
 
00170         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"SECINFO"</span>)
167
 
00171           {
168
 
00172             <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" found"</span>);
169
 
00173             curr_container_element = <span class="keyword">new</span> <a class="code" href="classOfxSecurityContainer.html">OfxSecurityContainer</a> (libofx_context, curr_container_element, identifier);
170
 
00174           }
171
 
00175         <span class="comment">/* The different types of balances */</span>
172
 
00176         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"LEDGERBAL"</span> || identifier == <span class="stringliteral">"AVAILBAL"</span>)
173
 
00177           {
174
 
00178             <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" found"</span>);
175
 
00179             curr_container_element = <span class="keyword">new</span> <a class="code" href="classOfxBalanceContainer.html">OfxBalanceContainer</a> (libofx_context, curr_container_element, identifier);
176
 
00180           }
177
 
00181         <span class="keywordflow">else</span>
178
 
00182           {
179
 
00183             <span class="comment">/* We dont know this OFX element, so we create a dummy container */</span>
180
 
00184             curr_container_element = <span class="keyword">new</span> <a class="code" href="classOfxDummyContainer.html">OfxDummyContainer</a>(libofx_context, curr_container_element, identifier);
181
 
00185           }
182
 
00186       }
183
 
00187     <span class="keywordflow">else</span>
184
 
00188       {
185
 
00189         <span class="comment">/* The element was a data element.  OpenSP will call one or several data() callback with the data */</span>
186
 
00190         <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"Data element "</span> + identifier + <span class="stringliteral">" found"</span>);
187
 
00191         <span class="comment">/* There is a bug in OpenSP 1.3.4, which won't send endElement Event for some elements, and will instead send an error like "document type does not allow element "MESSAGE" here".  Incoming_data should be empty in such a case, but it will not be if the endElement event was skiped. So we empty it, so at least the last element has a chance of having valid data */</span> 
188
 
00192         <span class="keywordflow">if</span> (incoming_data != <span class="stringliteral">""</span>)
189
 
00193           {
190
 
00194             <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a9">ERROR</a>, <span class="stringliteral">"startElement: incoming_data should be empty! You are probably using OpenSP &lt;= 1.3.4.  The folowing data was lost: "</span> + incoming_data );
191
 
00195             incoming_data.assign (<span class="stringliteral">""</span>);
192
 
00196           }
193
 
00197       }
194
 
00198   }
195
 
00199 
196
 
<a name="l00204"></a><a class="code" href="classOFCApplication.html#a8">00204</a>   <span class="keywordtype">void</span> <a class="code" href="classOFCApplication.html#a2">endElement</a> (<span class="keyword">const</span> EndElementEvent &amp; event)
197
 
00205   {
198
 
00206     string identifier;
199
 
00207     <span class="keywordtype">bool</span> end_element_for_data_element;
200
 
00208 
201
 
00209     <a class="code" href="fx-0_87_80_2lib_2ofx__utilities_8hh.html#a2">CharStringtostring</a> (event.gi, identifier);
202
 
00210     end_element_for_data_element=is_data_element;
203
 
00211     <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a10">PARSER</a>,<span class="stringliteral">"endElement event received from OpenSP for element "</span> + identifier);
204
 
00212 
205
 
00213     <a class="code" href="messages_8cpp.html#a1">position</a> = event.pos;
206
 
00214     <span class="keywordflow">if</span> (curr_container_element == NULL)
207
 
00215       {
208
 
00216         <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a9">ERROR</a>,<span class="stringliteral">"Tried to close a "</span>+identifier+<span class="stringliteral">" without a open element (NULL pointer)"</span>);
209
 
00217         incoming_data.assign (<span class="stringliteral">""</span>);
210
 
00218       }
211
 
00219     <span class="keywordflow">else</span> <span class="comment">//curr_container_element != NULL</span>
212
 
00220       {
213
 
00221         <span class="keywordflow">if</span> (end_element_for_data_element == <span class="keyword">true</span>)
214
 
00222           {
215
 
00223             incoming_data = <a class="code" href="fx-0_87_80_2lib_2ofx__utilities_8hh.html#a6">strip_whitespace</a>(incoming_data);
216
 
00224             
217
 
00225             curr_container_element-&gt;<a class="code" href="classOfxGenericContainer.html#a4">add_attribute</a> (identifier, incoming_data);
218
 
00226             <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>,<span class="stringliteral">"endElement: Added data '"</span> + incoming_data + <span class="stringliteral">"' from "</span> + identifier + <span class="stringliteral">" to "</span> + curr_container_element-&gt;<a class="code" href="classOfxGenericContainer.html#o0">type</a> + <span class="stringliteral">" container_element"</span>);
219
 
00227             incoming_data.assign (<span class="stringliteral">""</span>);
220
 
00228             is_data_element=<span class="keyword">false</span>;
221
 
00229           }
222
 
00230         <span class="keywordflow">else</span>
223
 
00231           {
224
 
00232             <span class="keywordflow">if</span> (identifier == curr_container_element-&gt;<a class="code" href="classOfxGenericContainer.html#o1">tag_identifier</a>)
225
 
00233               {
226
 
00234                 <span class="keywordflow">if</span>(incoming_data!=<span class="stringliteral">""</span>)
227
 
00235                   {
228
 
00236                     <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a9">ERROR</a>,<span class="stringliteral">"End tag for non data element "</span>+identifier+<span class="stringliteral">", incoming data should be empty but contains: "</span>+incoming_data+<span class="stringliteral">" DATA HAS BEEN LOST SOMEWHERE!"</span>);
229
 
00237                   }
230
 
00238 
231
 
00239                 <span class="keywordflow">if</span>(identifier == <span class="stringliteral">"OFX"</span>)
232
 
00240                   {
233
 
00241                     <span class="comment">/* The main container is a special case */</span>
234
 
00242                     tmp_container_element = curr_container_element;
235
 
00243                     curr_container_element = curr_container_element-&gt;<a class="code" href="classOfxGenericContainer.html#a7">getparent</a> ();
236
 
00244                     MainContainer-&gt;<a class="code" href="classOfxMainContainer.html#a7">gen_event</a>();
237
 
00245                     <span class="keyword">delete</span> MainContainer;
238
 
00246                     MainContainer = NULL;
239
 
00247                     <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a0">DEBUG</a>, <span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" closed, MainContainer destroyed"</span>);
240
 
00248                   }
241
 
00249                 <span class="keywordflow">else</span> 
242
 
00250                   {
243
 
00251                     tmp_container_element = curr_container_element;
244
 
00252                     curr_container_element = curr_container_element-&gt;<a class="code" href="classOfxGenericContainer.html#a7">getparent</a> ();
245
 
00253                     <span class="keywordflow">if</span>(MainContainer != NULL)
246
 
00254                       {
247
 
00255                         tmp_container_element-&gt;<a class="code" href="classOfxGenericContainer.html#a6">add_to_main_tree</a>();
248
 
00256                         <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"Element "</span> + identifier + <span class="stringliteral">" closed, object added to MainContainer"</span>);
249
 
00257                       }
250
 
00258                     <span class="keywordflow">else</span>
251
 
00259                       {
252
 
00260                         <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a9">ERROR</a>, <span class="stringliteral">"MainContainer is NULL trying to add element "</span> + identifier);
253
 
00261                       }
254
 
00262                   }
255
 
00263               }
256
 
00264             <span class="keywordflow">else</span>
257
 
00265               {
258
 
00266                 <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (<a class="code" href="messages_8hh.html#a12a9">ERROR</a>, <span class="stringliteral">"Tried to close a "</span>+identifier+<span class="stringliteral">" but a "</span>+curr_container_element-&gt;<a class="code" href="classOfxGenericContainer.html#o0">type</a>+<span class="stringliteral">" is currently open."</span>);
259
 
00267               }
260
 
00268           }
261
 
00269       }
262
 
00270   }
263
 
00271   
264
 
<a name="l00276"></a><a class="code" href="classOFCApplication.html#a9">00276</a>   <span class="keywordtype">void</span> <a class="code" href="classOFCApplication.html#a3">data</a> (<span class="keyword">const</span> DataEvent &amp; event)
265
 
00277   {
266
 
00278     string tmp;
267
 
00279     <a class="code" href="messages_8cpp.html#a1">position</a> = event.pos;
268
 
00280     <a class="code" href="fx-0_87_80_2lib_2ofx__utilities_8hh.html#a3">AppendCharStringtostring</a> (event.data, incoming_data);
269
 
00281     <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a10">PARSER</a>, <span class="stringliteral">"data event received from OpenSP, incoming_data is now: "</span> + incoming_data);
270
 
00282   }
271
 
00283 
272
 
<a name="l00288"></a><a class="code" href="classOFCApplication.html#a10">00288</a>   <span class="keywordtype">void</span> <a class="code" href="classOFCApplication.html#a4">error</a> (<span class="keyword">const</span> ErrorEvent &amp; event)
273
 
00289   {
274
 
00290     string message;
275
 
00291     string string_buf;
276
 
00292     <a class="code" href="messages_8hh.html#a12">OfxMsgType</a> error_type = <a class="code" href="messages_8hh.html#a12a9">ERROR</a>;
277
 
00293 
278
 
00294     <a class="code" href="messages_8cpp.html#a1">position</a> = event.pos;
279
 
00295     message = message + <span class="stringliteral">"OpenSP parser: "</span>;
280
 
00296     <span class="keywordflow">switch</span> (event.type){
281
 
00297     <span class="keywordflow">case</span> SGMLApplication::ErrorEvent::quantity:
282
 
00298       message = message + <span class="stringliteral">"quantity (Exceeding a quantity limit):"</span>;
283
 
00299       error_type = <a class="code" href="messages_8hh.html#a12a9">ERROR</a>;
284
 
00300       <span class="keywordflow">break</span>;
285
 
00301     <span class="keywordflow">case</span> SGMLApplication::ErrorEvent::idref:
286
 
00302       message = message + <span class="stringliteral">"idref (An IDREF to a non-existent ID):"</span>;
287
 
00303       error_type = <a class="code" href="messages_8hh.html#a12a9">ERROR</a>;
288
 
00304       <span class="keywordflow">break</span>;
289
 
00305     <span class="keywordflow">case</span> SGMLApplication::ErrorEvent::capacity:
290
 
00306       message = message + <span class="stringliteral">"capacity (Exceeding a capacity limit):"</span>;
291
 
00307       error_type = <a class="code" href="messages_8hh.html#a12a9">ERROR</a>;
292
 
00308       <span class="keywordflow">break</span>;
293
 
00309     <span class="keywordflow">case</span> SGMLApplication::ErrorEvent::otherError:
294
 
00310       message = message + <span class="stringliteral">"otherError (misc parse error):"</span>;
295
 
00311       error_type = <a class="code" href="messages_8hh.html#a12a9">ERROR</a>;
296
 
00312       <span class="keywordflow">break</span>;
297
 
00313     <span class="keywordflow">case</span> SGMLApplication::ErrorEvent::warning:
298
 
00314       message = message + <span class="stringliteral">"warning (Not actually an error.):"</span>;
299
 
00315       error_type = <a class="code" href="messages_8hh.html#a12a8">WARNING</a>;
300
 
00316       <span class="keywordflow">break</span>;
301
 
00317     <span class="keywordflow">case</span> SGMLApplication::ErrorEvent::info:
302
 
00318       message =  message + <span class="stringliteral">"info (An informationnal message.  Not actually an error):"</span>;
303
 
00319       error_type = <a class="code" href="messages_8hh.html#a12a7">INFO</a>;
304
 
00320       <span class="keywordflow">break</span>;
305
 
00321     <span class="keywordflow">default</span>:
306
 
00322       message = message + <span class="stringliteral">"OpenSP sent an unknown error to LibOFX (You probably have a newer version of OpenSP):"</span>;
307
 
00323     }
308
 
00324     message =   message + <span class="stringliteral">"\n"</span> + <a class="code" href="fx-0_87_80_2lib_2ofx__utilities_8hh.html#a2">CharStringtostring</a> (event.message, string_buf);
309
 
00325     <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a> (error_type, message);
310
 
00326   }
311
 
00327 
312
 
<a name="l00332"></a><a class="code" href="classOFCApplication.html#a11">00332</a>   <span class="keywordtype">void</span> <a class="code" href="classOFCApplication.html#a5">openEntityChange</a> (<span class="keyword">const</span> OpenEntityPtr &amp; para_entity_ptr)
313
 
00333   {
314
 
00334     <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a0">DEBUG</a>,<span class="stringliteral">"openEntityChange()\n"</span>);
315
 
00335     <a class="code" href="messages_8cpp.html#a0">entity_ptr</a> = para_entity_ptr;
316
 
00336 
317
 
00337   };
318
 
00338 
319
 
00339 <span class="keyword">private</span>:
320
 
00340 };
321
 
00341 
322
 
<a name="l00345"></a><a class="code" href="fx-0_87_80_2lib_2ofc__sgml_8cpp.html#a3">00345</a> <span class="keywordtype">int</span> <a class="code" href="fx-0_87_80_2lib_2ofc__sgml_8hh.html#a0">ofc_proc_sgml</a>(LibofxContext * libofx_context, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])
323
 
00346 {
324
 
00347   <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a0">DEBUG</a>,<span class="stringliteral">"Begin ofx_proc_sgml()"</span>);
325
 
00348   <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a0">DEBUG</a>,argv[0]);
326
 
00349   <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a0">DEBUG</a>,argv[1]);
327
 
00350   <a class="code" href="fx-0_87_80_2lib_2messages_8hh.html#a11">message_out</a>(<a class="code" href="messages_8hh.html#a12a0">DEBUG</a>,argv[2]);
328
 
00351   
329
 
00352   ParserEventGeneratorKit parserKit;
330
 
00353   parserKit.setOption (ParserEventGeneratorKit::showOpenEntities);
331
 
00354   EventGenerator *egp = parserKit.makeEventGenerator (argc, argv);
332
 
00355   egp-&gt;inhibitMessages (<span class="keyword">true</span>);  <span class="comment">/* Error output is handled by libofx not OpenSP */</span>
333
 
00356   <a class="code" href="classOFCApplication.html">OFCApplication</a> *app = <span class="keyword">new</span> <a class="code" href="classOFCApplication.html">OFCApplication</a>(libofx_context);
334
 
00357   <span class="keywordtype">unsigned</span> nErrors = egp-&gt;run (*app); <span class="comment">/* Begin parsing */</span>
335
 
00358   <span class="keyword">delete</span> egp;
336
 
00359   <span class="keywordflow">return</span> nErrors &gt; 0;
337
 
00360 }
338
 
</div></pre><hr size="1"><address style="align: right;"><small>Generated on Fri Oct 8 20:34:47 2004 for LibOFX by
339
 
<a href="http://www.doxygen.org/index.html">
340
 
<img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.7 </small></address>
341
 
</body>
342
 
</html>