Version: 8.3.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
YACS
Introduction
Features
Packages
Building
TODOs
Base classes
Engine
SALOME Runtime
XML file loader
GUI design
Python wrapping
PMMLlib C++ examples
Configuring and Installing PMML from sources
PMMLlib
PMMLlib Python examples
Modules
Namespaces
Classes
Files
File List
idl
src
bases
engine
genericgui
hmi
pmml
pyqt
runtime
salomegui
salomewrap
yacsloader
pmml
blocParsers.hxx
codeParsers.cxx
codeParsers.hxx
componentinstanceParsers.cxx
componentinstanceParsers.hxx
containerParsers.cxx
containerParsers.hxx
dataParsers.cxx
dataParsers.hxx
debugger.cxx
driver.cxx
ExampleOfObserversPluginForDriver.cxx
factory.cxx
factory.hxx
inlineParsers.hxx
linkParsers.hxx
LoadState.cxx
LoadState.hxx
loopParsers.hxx
nodeParsers.hxx
outputParsers.hxx
parserBase.cxx
parserBase.hxx
parsers.cxx
parsers.hxx
portParsers.hxx
presetParsers.hxx
ProcCataLoader.cxx
ProcCataLoader.hxx
procParsers.hxx
propertyParsers.cxx
propertyParsers.hxx
remoteParsers.hxx
resume.cxx
rootParser.cxx
rootParser.hxx
serverParsers.hxx
serviceParsers.hxx
sinlineParsers.hxx
switchParsers.hxx
typeParsers.cxx
typeParsers.hxx
xmlParserBase.cxx
xmlParserBase.hxx
xmlrpcParsers.cxx
xmlrpcParsers.hxx
YACSloaderExport.hxx
yacsorb
File Members
outputParsers.hxx
Go to the documentation of this file.
1
// Copyright (C) 2006-2016 CEA/DEN, EDF R&D
2
//
3
// This library is free software; you can redistribute it and/or
4
// modify it under the terms of the GNU Lesser General Public
5
// License as published by the Free Software Foundation; either
6
// version 2.1 of the License, or (at your option) any later version.
7
//
8
// This library is distributed in the hope that it will be useful,
9
// but WITHOUT ANY WARRANTY; without even the implied warranty of
10
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
// Lesser General Public License for more details.
12
//
13
// You should have received a copy of the GNU Lesser General Public
14
// License along with this library; if not, write to the Free Software
15
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
//
17
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18
//
19
20
#ifndef _OUTPUTPARSERS_HXX_
21
#define _OUTPUTPARSERS_HXX_
22
23
#include "
nodeParsers.hxx
"
24
25
#include "
factory.hxx
"
26
27
#include "
DataNode.hxx
"
28
29
namespace
YACS
30
{
31
43
struct
outputdatatypeParser
:
parser
44
{
45
static
outputdatatypeParser
outputdataParser
;
46
47
virtual
void
onStart
(
const
XML_Char
* el,
const
XML_Char
** attr)
48
{
49
DEBTRACE
(
"outputdatatypeParser::onStart"
);
50
std::string element(el);
51
parser
* pp=&
parser::main_parser
;
52
SetUserDataAndPush
(pp);
53
pp->
init
();
54
pp->
pre
();
55
pp->
buildAttr
(attr);
56
}
57
virtual
void
onEnd
(
const
char
*el,
parser
* child)
58
{
59
}
60
virtual
void
buildAttr
(
const
XML_Char
** attr)
61
{
62
if
(!attr)
63
return
;
64
DEBTRACE
(
"outputdatatypeParser::buildAttr"
);
65
required
(
"name"
,attr);
66
required
(
"type"
,attr);
67
for
(
int
i
= 0; attr[
i
];
i
+= 2)
68
{
69
if
(std::string(attr[
i
]) ==
"name"
)
name
(attr[i+1]);
70
if
(std::string(attr[i]) ==
"type"
)
type
(attr[i+1]);
71
if
(std::string(attr[i]) ==
"ref"
)
ref
(attr[i+1]);
72
}
73
}
74
virtual
void
name
(
const
std::string&
name
)
75
{
76
DEBTRACE
(
"outputdatatypeParser::name"
);
77
_param
.
_name
=
name
;
78
}
79
virtual
void
type
(
const
std::string&
type
)
80
{
81
DEBTRACE
(
"outputdatatypeParser::type"
);
82
_param
.
_type
=
type
;
83
}
84
virtual
void
ref
(
const
std::string&
ref
)
85
{
86
_param
.
setProperty
(
"ref"
,ref);
87
}
88
89
virtual
void
pre
()
90
{
91
DEBTRACE
(
"outputdatatypeParser::pre"
);
92
_param
.
clear
();
93
}
94
virtual
myoutport
&
post
()
95
{
96
return
_param
;
97
}
98
myoutport
_param
;
99
};
100
113
template
<
class
T=ENGINE::DataNode*>
114
struct
outnodetypeParser
:
public
nodetypeParser
<T>
115
{
116
static
outnodetypeParser<T>
outnodeParser
;
117
virtual
void
onStart
(
const
XML_Char
* el,
const
XML_Char
** attr);
118
virtual
void
onEnd
(
const
char
*el,
parser
* child);
119
virtual
void
buildAttr
(
const
XML_Char
** attr);
120
virtual
void
pre
();
121
virtual
void
name
(
const
std::string&
name
);
122
virtual
void
kind
(
const
std::string&
kind
);
123
virtual
void
ref
(
const
std::string&
ref
);
124
virtual
void
create
();
125
virtual
void
parameter
(
myoutport
&
p
);
126
virtual
T
post
();
127
std::string
_name
;
128
std::string
_kind
;
129
std::string
_ref
;
130
};
131
132
template
<
class
T>
outnodetypeParser<T>
outnodetypeParser<T>::outnodeParser
;
133
134
135
template
<
class
T>
136
void
outnodetypeParser<T>::onStart
(
const
XML_Char
* el,
const
XML_Char
** attr)
137
{
138
DEBTRACE
(
"outnodetypeParser::onStart"
);
139
std::string element(el);
140
parser
* pp=&
parser::main_parser
;
141
if
(element ==
"parameter"
)pp=&
outputdatatypeParser::outputdataParser
;
142
if
(element ==
"property"
)pp=&
propertytypeParser::propertyParser
;
143
this->SetUserDataAndPush(pp);
144
pp->
init
();
145
pp->
pre
();
146
pp->
buildAttr
(attr);
147
}
148
149
template
<
class
T>
150
void
outnodetypeParser<T>::onEnd
(
const
char
*el,
parser
* child)
151
{
152
DEBTRACE
(
"outnodetypeParser::onEnd"
);
153
std::string element(el);
154
if
(element ==
"parameter"
)parameter(((
outputdatatypeParser
*)child)->post());
155
if
(element ==
"property"
)this->property(((
propertytypeParser
*)child)->post());
156
}
157
158
template
<
class
T>
159
void
outnodetypeParser<T>::buildAttr
(
const
XML_Char
** attr)
160
{
161
if
(!attr)
162
return
;
163
DEBTRACE
(
"outnodetypeParser::buildAttr"
);
164
this->required(
"name"
,attr);
165
for
(
int
i
= 0; attr[
i
];
i
+= 2)
166
{
167
if
(std::string(attr[
i
]) ==
"name"
)name(attr[i+1]);
168
if
(std::string(attr[i]) ==
"kind"
)kind(attr[i+1]);
169
if
(std::string(attr[i]) ==
"ref"
)
ref
(attr[i+1]);
170
}
171
create();
172
}
173
174
template
<
class
T>
175
void
outnodetypeParser<T>::pre
()
176
{
177
this->_node=0;
178
_kind=
""
;
179
_ref=
""
;
180
}
181
182
template
<
class
T>
183
void
outnodetypeParser<T>::name
(
const
std::string& name)
184
{
185
_name=name;
186
}
187
template
<
class
T>
188
void
outnodetypeParser<T>::kind
(
const
std::string& kind)
189
{
190
_kind=kind;
191
}
192
template
<
class
T>
193
void
outnodetypeParser<T>::ref
(
const
std::string&
ref
)
194
{
195
_ref=
ref
;
196
}
197
198
template
<
class
T>
199
void
outnodetypeParser<T>::create
()
200
{
201
this->_node =
theRuntime
->
createOutDataNode
(_kind,_name);
202
}
203
204
template
<
class
T>
205
void
outnodetypeParser<T>::parameter
(
myoutport
&
p
)
206
{
207
DEBTRACE
(
"outnodetypeParser::parameter"
);
208
if
(
currentProc
->
typeMap
.count(p.
_type
)==0)
209
{
210
//Check if the typecode is defined in the runtime
211
YACS::ENGINE::TypeCode
*
t
=
theRuntime
->
getTypeCode
(p.
_type
);
212
if
(t==0)
213
{
214
std::string msg=
"Unknown Type: "
;
215
msg=msg+p.
_type
+
" for node: "
+this->_node->getName()+
" port name: "
+p.
_name
;
216
this->logError(msg);
217
return
;
218
}
219
else
220
{
221
currentProc
->
typeMap
[p.
_type
]=
t
;
222
t->
incrRef
();
223
}
224
}
225
ENGINE::InputPort
*port = this->_node->edAddInputPort(p.
_name
,
currentProc
->
typeMap
[p.
_type
]);
226
this->_node->setData(port,p.
_props
[
"ref"
]);
227
}
228
229
template
<
class
T>
230
T
outnodetypeParser<T>::post
()
231
{
232
this->_node->setRef(_ref);
233
return
this->_node;
234
}
235
236
}
237
#endif
src
yacsloader
outputParsers.hxx
Copyright © 2006-2017 CEA/DEN, EDF R&D