20 #ifndef _PROCPARSER_HXX_
21 #define _PROCPARSER_HXX_
38 template <
class T=YACS::ENGINE::Proc*>
56 for (
int i = 0; attr[
i];
i += 2)
58 if(std::string(attr[
i]) ==
"state")
60 if(std::string(attr[
i]) ==
"name")
66 std::string
name(
"proc");
69 currentProc->
names.push_back(
"");
101 DEBTRACE(
"componentinstance: " <<
t._name );
105 std::map<std::string, std::string>::const_iterator pt;
106 for(pt=
t._props.begin();pt!=
t._props.end();pt++)
114 else if(
t._container ==
"")
129 std::cerr <<
"WARNING: Unknown container " <<
t._container <<
" ignored" << std::endl;
138 std::vector<machine>::const_iterator iter;
139 for(iter=
t._machs.begin();iter!=
t._machs.end();iter++)
141 DEBTRACE(
"machine name: " << (*iter)._name )
146 std::cerr <<
"Warning: container " <<
t._name <<
" already defined. It will be ignored" << std::endl;
151 std::string kindOfContainer;
153 if(pt!=
t._props.end())
154 kindOfContainer=pt->second;
156 for(pt=
t._props.begin();pt!=
t._props.end();pt++)
175 DEBTRACE(
"proctypeParser::onStart: " << el )
176 std::string element(el);
177 this->checkOrder(element);
213 if ( this->_defaultParsersMap )
215 if((this->_defaultParsersMap)->count(element) != 0)
217 pp=(*(this->_defaultParsersMap))[element];
221 std::cerr <<
"There is no parser for this element type. It will be ignored! " << element << std::endl;
225 this->SetUserDataAndPush(pp);
234 DEBTRACE(
"proctypeParser::onEnd: " << el )
235 std::string element(el);
238 else if(element ==
"sequence")sequence(((
seqtypeParser*)child)->post());
239 else if(element ==
"objref")objref(((
objtypeParser*)child)->post());
259 else if(element ==
"switch")this->switch_(((
switchtypeParser*)child)->post());
262 else if(element ==
"datalink") this->datalink(((
linktypeParser<>*)child)->post());
YACS::ENGINE::Runtime * theRuntime
Base class for all component instances.
virtual bool setContainer(Container *cont)
virtual void setProperty(const std::string &name, const std::string &value)=0
static const char KIND_ENTRY[]
Base class for all schema objects.
virtual Container * createContainer(const std::string &name, const std::string &kind="")
Create a new Container and store it in containerMap.
virtual TypeCode * createType(const std::string &name, const std::string &kind)
std::vector< std::string > names
std::map< std::string, Container * > containerMap
void setName(const std::string &name)
virtual ComponentInstance * createComponentInstance(const std::string &componame, const std::string &name="", const std::string &kind="")
Create a new ComponentInstance and add it into componentInstanceMap.
virtual void setProperty(const std::string &name, const std::string &value)
virtual Proc * createProc(const std::string &name)
Base class for all type objects.
YACS::ENGINE::Proc * currentProc
virtual void state(const std::string &name)
YACS::ENGINE::Proc * _bloc
Class for componentinstance parser.
static componentinstancetypeParser componentinstanceParser
Class for container parser.
static containertypeParser containerParser
static objtypeParser objParser
Class for OutNode parser.
static parametertypeParser parameterParser
virtual void buildAttr(const XML_Char **attr)
static parser main_parser
std::map< std::string, int > _orders
Class for PresetNode parser.
virtual void sequence(ENGINE::TypeCode *const &t)
virtual void onEnd(const char *el, parser *child)
virtual void name(const std::string &name)
virtual void buildAttr(const XML_Char **attr)
void onStart(const XML_Char *el, const XML_Char **attr)
virtual void type(const mytype &t)
virtual void componentinstance(const mycomponentinstance &t)
virtual void objref(ENGINE::TypeCode *const &t)
virtual void container(const mycontainer &t)
virtual void struct_(ENGINE::TypeCode *const &t)
static proctypeParser< T > procParser
Class for property parser.
static propertytypeParser propertyParser
Class for sequence parser.
static seqtypeParser seqParser
Class for parsing ServiceInlineNode description.
static structtypeParser structParser
static switchtypeParser switchParser
static typetypeParser typeParser