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">
6
<!-- Generated by Doxygen 1.3.7 -->
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>
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>
23
00021 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
24
00022 <span class="preprocessor"></span><span class="preprocessor">#include <config.h></span>
25
00023 <span class="preprocessor">#endif</span>
26
00024 <span class="preprocessor"></span>
27
00025 <span class="preprocessor">#include <iostream></span>
28
00026 <span class="preprocessor">#include <stdlib.h></span>
29
00027 <span class="preprocessor">#include <string></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>
37
00035 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
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;
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)
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;
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 & event)
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);
66
00070 <a class="code" href="messages_8cpp.html#a1">position</a> = event.pos;
68
00072 <span class="keywordflow">switch</span> (event.contentType)
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>);
86
00090 <span class="keywordflow">if</span> (is_data_element == <span class="keyword">false</span>)
88
00092 <span class="comment">/*------- The following are OFC entities ---------------*/</span>
90
00094 <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"OFC"</span>)
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;
96
00100 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"STATUS"</span>)
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);
101
00105 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"ACCTSTMT"</span>)
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);
106
00110 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"STMTRS"</span>)
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-><a class="code" href="classOfxGenericContainer.html#o0">type</a>!=<span class="stringliteral">"STATEMENT"</span>)
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>);
114
00118 <span class="keywordflow">else</span>
116
00120 curr_container_element = <span class="keyword">new</span> <a class="code" href="classOfxPushUpContainer.html">OfxPushUpContainer</a> (libofx_context, curr_container_element, identifier);
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>)
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);
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> )
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);
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>)
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);
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> )
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);
166
00170 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier == <span class="stringliteral">"SECINFO"</span>)
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);
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>)
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);
177
00181 <span class="keywordflow">else</span>
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);
183
00187 <span class="keywordflow">else</span>
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>)
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 <= 1.3.4. The folowing data was lost: "</span> + incoming_data );
191
00195 incoming_data.assign (<span class="stringliteral">""</span>);
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 & event)
198
00206 string identifier;
199
00207 <span class="keywordtype">bool</span> end_element_for_data_element;
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);
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)
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>);
211
00219 <span class="keywordflow">else</span> <span class="comment">//curr_container_element != NULL</span>
213
00221 <span class="keywordflow">if</span> (end_element_for_data_element == <span class="keyword">true</span>)
215
00223 incoming_data = <a class="code" href="fx-0_87_80_2lib_2ofx__utilities_8hh.html#a6">strip_whitespace</a>(incoming_data);
217
00225 curr_container_element-><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-><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>;
222
00230 <span class="keywordflow">else</span>
224
00232 <span class="keywordflow">if</span> (identifier == curr_container_element-><a class="code" href="classOfxGenericContainer.html#o1">tag_identifier</a>)
226
00234 <span class="keywordflow">if</span>(incoming_data!=<span class="stringliteral">""</span>)
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>);
231
00239 <span class="keywordflow">if</span>(identifier == <span class="stringliteral">"OFX"</span>)
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-><a class="code" href="classOfxGenericContainer.html#a7">getparent</a> ();
236
00244 MainContainer-><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>);
241
00249 <span class="keywordflow">else</span>
243
00251 tmp_container_element = curr_container_element;
244
00252 curr_container_element = curr_container_element-><a class="code" href="classOfxGenericContainer.html#a7">getparent</a> ();
245
00253 <span class="keywordflow">if</span>(MainContainer != NULL)
247
00255 tmp_container_element-><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>);
250
00258 <span class="keywordflow">else</span>
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);
256
00264 <span class="keywordflow">else</span>
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-><a class="code" href="classOfxGenericContainer.html#o0">type</a>+<span class="stringliteral">" is currently open."</span>);
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 & event)
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);
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 & event)
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>;
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>;
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);
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 & para_entity_ptr)
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;
319
00339 <span class="keyword">private</span>:
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[])
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]);
329
00352 ParserEventGeneratorKit parserKit;
330
00353 parserKit.setOption (ParserEventGeneratorKit::showOpenEntities);
331
00354 EventGenerator *egp = parserKit.makeEventGenerator (argc, argv);
332
00355 egp->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->run (*app); <span class="comment">/* Begin parsing */</span>
335
00358 <span class="keyword">delete</span> egp;
336
00359 <span class="keywordflow">return</span> nErrors > 0;
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>