2 #ifndef _TYPEPARSERS_HXX_
3 #define _TYPEPARSERS_HXX_
5 #include "parserBase.hxx"
6 #include "TypeCode.hxx"
12 /*! \brief Class for type parser.
14 * Class used to parse a type definition (class TypeCode in implementation)
15 * with a name and a kind (reserved to atomic types)
19 <xsd:complexType name="TypeType">
20 <xsd:attribute name="name" type="xsd:string" use="required"/>
21 <xsd:attribute name="kind" type="xsd:string" use="required"/>
25 struct typetypeParser: parser
27 static typetypeParser typeParser;
28 virtual void buildAttr(const XML_Char** attr);
30 virtual void name(const std::string& name);
31 virtual void kind(const std::string& name);
32 virtual mytype post();
37 /*! \brief Class for sequence parser.
39 * Class used to parse a sequence (type) definition (class TypeCodeSeq in implementation)
44 <xsd:complexType name="SequenceType">
45 <xsd:attribute name="name" type="xsd:string" use="required"/>
46 <xsd:attribute name="content" type="xsd:string" use="required"/>
51 struct seqtypeParser:public parser
53 static seqtypeParser seqParser;
54 virtual void onStart(const XML_Char* el, const XML_Char** attr);
55 virtual void onEnd(const char *el,parser* child);
56 virtual void buildAttr(const XML_Char** attr);
57 void name(const std::string& name);
58 void content(const std::string& name);
59 YACS::ENGINE::TypeCode* post();
60 YACS::ENGINE::TypeCode* _contentType;
64 /*! \brief Class for objref parser.
66 * Class used to parse a objref (type) definition (class TypeCodeObjref in implementation)
70 <xsd:complexType name="ObjrefType">
72 <xsd:element name="base" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
74 <xsd:attribute name="name" type="xsd:string" use="required"/>
75 <xsd:attribute name="id" type="xsd:string" />
80 struct objtypeParser: parser
82 static objtypeParser objParser;
83 virtual void onStart(const XML_Char* el, const XML_Char** attr);
84 virtual void onEnd(const char *el,parser* child);
85 virtual void buildAttr(const XML_Char** attr);
87 virtual void name(const std::string& name);
88 virtual void id(const std::string& name);
89 virtual void base(const std::string& name);
90 virtual YACS::ENGINE::TypeCode * post();
93 std::list<YACS::ENGINE::TypeCodeObjref *> _ltc;
96 /*! \brief Class for member parser.
98 * Class used to parse a struct member
99 * A struct member is a pair of name(string), type(string)
103 <xsd:complexType name="MemberType">
104 <xsd:attribute name="name" type="xsd:string" use="required"/>
105 <xsd:attribute name="type" type="xsd:string" use="required"/>
110 struct membertypeParser: parser
112 static membertypeParser memberParser;
113 virtual void buildAttr(const XML_Char** attr);
114 virtual void name(const std::string& name);
115 virtual void type(const std::string& name);
120 /*! \brief Class for struct parser.
122 * Class used to parse a struct (type) definition (class TypeCodeStruct in implementation)
126 <xsd:complexType name="StructType">
128 <xsd:element name="member" type="MemberType" minOccurs="0" maxOccurs="unbounded"/>
130 <xsd:attribute name="name" type="xsd:string" use="required"/>
131 <xsd:attribute name="id" type="xsd:string" />
136 struct structtypeParser: parser
138 static structtypeParser structParser;
140 virtual void onStart(const XML_Char* el, const XML_Char** attr);
141 virtual void onEnd(const char *el,parser* child);
142 virtual void buildAttr(const XML_Char** attr);
144 virtual void name(const std::string& name);
145 virtual void id(const std::string& name);
146 virtual void member (const myprop& prop);
147 virtual YACS::ENGINE::TypeCode * post();
150 std::vector<myprop> _members;