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
presetParsers.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 _PRESETPARSERS_HXX_
21
#define _PRESETPARSERS_HXX_
22
23
#include "
nodeParsers.hxx
"
24
25
#include "
factory.hxx
"
26
27
#include "
DataNode.hxx
"
28
29
namespace
YACS
30
{
31
43
struct
presetdatatypeParser
:
parser
44
{
45
static
presetdatatypeParser
presetdataParser
;
46
47
virtual
void
onStart
(
const
XML_Char
* el,
const
XML_Char
** attr)
48
{
49
DEBTRACE
(
"presetdatatypeParser::onStart"
);
50
std::string element(el);
51
this->
maxcount
(
"value"
,1,element);
52
parser
* pp=&
parser::main_parser
;
53
if
(element ==
"value"
)pp=&
valuetypeParser::valueParser
;
54
SetUserDataAndPush
(pp);
55
pp->
init
();
56
pp->
pre
();
57
pp->
buildAttr
(attr);
58
}
59
virtual
void
onEnd
(
const
char
*el,
parser
* child)
60
{
61
DEBTRACE
(
"presetdatatypeParser::onEnd"
);
62
std::string element(el);
63
if
(element ==
"value"
)
value
(((
valuetypeParser
*)child)->
post
());
64
}
65
virtual
void
buildAttr
(
const
XML_Char
** attr)
66
{
67
if
(!attr)
68
return
;
69
DEBTRACE
(
"presetdatatypeParser::buildAttr"
);
70
required
(
"name"
,attr);
71
required
(
"type"
,attr);
72
for
(
int
i
= 0; attr[
i
];
i
+= 2)
73
{
74
if
(std::string(attr[
i
]) ==
"name"
)
name
(attr[i+1]);
75
if
(std::string(attr[i]) ==
"type"
)
type
(attr[i+1]);
76
if
(std::string(attr[i]) ==
"ref"
)
ref
(attr[i+1]);
77
}
78
}
79
virtual
void
name
(
const
std::string&
name
)
80
{
81
DEBTRACE
(
"presetdatatypeParser::name"
);
82
_param
.
_name
=
name
;
83
_name
=
name
;
84
}
85
virtual
void
type
(
const
std::string&
type
)
86
{
87
DEBTRACE
(
"presetdatatypeParser::type"
);
88
_param
.
_type
=
type
;
89
_type
=
type
;
90
}
91
92
virtual
void
ref
(
const
std::string&
ref
)
93
{
94
_ref
=
ref
;
95
}
96
97
virtual
void
pre
()
98
{
99
DEBTRACE
(
"presetdatatypeParser::pre"
);
100
_ref
=
"undef"
;
101
_param
.
clear
();
102
}
103
virtual
void
value
(
const
std::string&
value
)
104
{
105
DEBTRACE
(
"presetdatatypeParser::value "
<< value);
106
_param
.
setProperty
(
"value"
,value);
107
}
108
virtual
myoutport
&
post
()
109
{
110
DEBTRACE
(
"presetdatatypeParser::post"
);
111
//a parameter can have a ref attribute OR one value element
112
if
(
_ref
==
"undef"
)
113
mincount
(
"value"
,1);
114
else
115
_param
.
setProperty
(
"value"
,
_ref
);
116
return
_param
;
117
}
118
myoutport
_param
;
119
std::string
_name
;
120
std::string
_type
;
121
std::string
_ref
;
122
};
123
134
template
<
class
T=ENGINE::DataNode*>
135
struct
presettypeParser
:
public
nodetypeParser
<T>
136
{
137
static
presettypeParser<T>
presetParser
;
138
virtual
void
onStart
(
const
XML_Char
* el,
const
XML_Char
** attr);
139
virtual
void
onEnd
(
const
char
*el,
parser
* child);
140
virtual
void
buildAttr
(
const
XML_Char
** attr);
141
virtual
void
create
();
142
virtual
void
pre
();
143
virtual
void
name
(
const
std::string&
name
);
144
virtual
void
kind
(
const
std::string&
kind
);
145
virtual
void
parameter
(
myoutport
&
p
);
146
std::string
_name
;
147
std::string
_kind
;
148
};
149
150
template
<
class
T>
presettypeParser<T>
presettypeParser<T>::presetParser
;
151
152
153
template
<
class
T>
154
void
presettypeParser<T>::onStart
(
const
XML_Char
* el,
const
XML_Char
** attr)
155
{
156
DEBTRACE
(
"presettypeParser::onStart"
);
157
std::string element(el);
158
parser
* pp=&
parser::main_parser
;
159
if
(element ==
"parameter"
)pp=&
presetdatatypeParser::presetdataParser
;
160
if
(element ==
"property"
)pp=&
propertytypeParser::propertyParser
;
161
this->SetUserDataAndPush(pp);
162
pp->
init
();
163
pp->
pre
();
164
pp->
buildAttr
(attr);
165
}
166
167
template
<
class
T>
168
void
presettypeParser<T>::onEnd
(
const
char
*el,
parser
* child)
169
{
170
DEBTRACE
(
"presettypeParser::onEnd"
);
171
std::string element(el);
172
if
(element ==
"parameter"
)parameter(((
presetdatatypeParser
*)child)->post());
173
if
(element ==
"property"
)this->property(((
propertytypeParser
*)child)->post());
174
}
175
176
template
<
class
T>
177
void
presettypeParser<T>::buildAttr
(
const
XML_Char
** attr)
178
{
179
if
(!attr)
180
return
;
181
DEBTRACE
(
"presettypeParser::buildAttr"
);
182
this->required(
"name"
,attr);
183
for
(
int
i
= 0; attr[
i
];
i
+= 2)
184
{
185
if
(std::string(attr[
i
]) ==
"name"
)name(attr[i+1]);
186
if
(std::string(attr[i]) ==
"kind"
)kind(attr[i+1]);
187
}
188
create();
189
}
190
191
template
<
class
T>
192
void
presettypeParser<T>::pre
()
193
{
194
_kind=
""
;
195
}
196
197
template
<
class
T>
198
void
presettypeParser<T>::name
(
const
std::string& name)
199
{
200
_name=name;
201
}
202
203
template
<
class
T>
204
void
presettypeParser<T>::kind
(
const
std::string& kind)
205
{
206
_kind=kind;
207
}
208
209
template
<
class
T>
210
void
presettypeParser<T>::create
()
211
{
212
this->_node =
theRuntime
->
createInDataNode
(_kind,_name);
213
}
214
215
template
<
class
T>
216
void
presettypeParser<T>::parameter
(
myoutport
&
p
)
217
{
218
DEBTRACE
(
"presettypeParser::parameter"
);
219
if
(
currentProc
->
typeMap
.count(p.
_type
)==0)
220
{
221
//Check if the typecode is defined in the runtime
222
YACS::ENGINE::TypeCode
*
t
=
theRuntime
->
getTypeCode
(p.
_type
);
223
if
(t==0)
224
{
225
std::string msg=
"Unknown Type: "
;
226
msg=msg+p.
_type
+
" for node: "
+this->_node->getName()+
" port name: "
+p.
_name
;
227
this->logError(msg);
228
return
;
229
}
230
else
231
{
232
currentProc
->
typeMap
[p.
_type
]=
t
;
233
t->
incrRef
();
234
}
235
}
236
ENGINE::OutputPort
*port = this->_node->edAddOutputPort(p.
_name
,
currentProc
->
typeMap
[p.
_type
]);
237
this->_node->setData(port,p.
_props
[
"value"
]);
238
}
239
240
}
241
#endif
src
yacsloader
presetParsers.hxx
Copyright © 2006-2017 CEA/DEN, EDF R&D