Version: 9.15.0
YACS::memberdatatypeParser Struct Reference

Class for XML-RPC member parser. More...

#include <xmlrpcParsers.hxx>

Inheritance diagram for YACS::memberdatatypeParser:
Collaboration diagram for YACS::memberdatatypeParser:

Public Member Functions

virtual void onStart (const XML_Char *el, const XML_Char **attr)
 
virtual void onEnd (const char *el, parser *child)
 
virtual void pre ()
 
virtual void name (const std::string &v)
 
virtual void value (const std::string &v)
 
virtual std::string post ()
 
- Public Member Functions inherited from YACS::parser
 parser ()
 
virtual ~parser ()
 
virtual void SetUserDataAndPush (parser *pp)
 
virtual void charData (const XML_Char *s, int len)
 
virtual void endParser ()
 
virtual void init ()
 
virtual void incrCount (const XML_Char *elem)
 
virtual void checkOrder (std::string &el)
 
virtual void maxcount (std::string name, int max, std::string &el)
 
virtual void mincount (std::string name, int min)
 
virtual void maxchoice (std::string *names, int max, std::string &el)
 
virtual void minchoice (std::string *names, int min)
 
virtual void required (const std::string &name, const XML_Char **attr)
 
virtual void buildAttr (const XML_Char **attr)
 
std::stack< parser * > & getStack ()
 
template<class T >
post ()
 
void logError (const std::string &reason)
 

Public Attributes

std::string _data
 
std::vector< std::string > _datas
 
- Public Attributes inherited from YACS::parser
std::string _file
 
std::string _content
 
std::map< std::string, int > * _counts
 
std::map< std::string, int > _orders
 
int _orderState
 
int _level
 
std::stack< std::map< std::string, int > * > _stackCount
 
std::stack< int > _stackOrder
 
std::map< std::string, parser * > * _defaultParsersMap
 

Static Public Attributes

static memberdatatypeParser memberdataParser
 
- Static Public Attributes inherited from YACS::parser
static parser main_parser
 
static std::stack< parser * > _stackParser
 

Additional Inherited Members

- Static Public Member Functions inherited from YACS::parser
static void XMLCALL start_document (void *data)
 
static void XMLCALL end_document (void *data)
 
static void XMLCALL start_element (void *data, const xmlChar *name, const xmlChar **p)
 
static void XMLCALL end_element (void *data, const xmlChar *name)
 
static void XMLCALL characters (void *data, const xmlChar *ch, int len)
 
static void XMLCALL comment (void *data, const xmlChar *value)
 
static void XMLCALL cdata_block (void *data, const xmlChar *value, int len)
 
static void XMLCALL warning (void *data, const char *fmt,...)
 
static void XMLCALL error (void *data, const char *fmt,...)
 
static void XMLCALL fatal_error (void *data, const char *fmt,...)
 
static void XML_SetUserData (_xmlParserCtxt *ctxt, parser *par)
 

Detailed Description

Class for XML-RPC member parser.

This class is used to parse XML data that describes a sequence in XML-RPC format

Its XML schema is:

  <xsd:complexType name="MemberDataType">
    <xsd:element name="name" type="StringType"/>
    <xsd:element name="value" type="ValueType"/>
  </xsd:complexType>

Definition at line 102 of file xmlrpcParsers.hxx.

Member Function Documentation

◆ name()

void YACS::memberdatatypeParser::name ( const std::string &  v)
virtual

Definition at line 139 of file xmlrpcParsers.cxx.

140  {
141  _data=_data+"<name>"+v+"</name>";
142  }

References _data.

Referenced by onEnd().

◆ onEnd()

void YACS::memberdatatypeParser::onEnd ( const char *  el,
parser child 
)
virtual

Reimplemented from YACS::parser.

Definition at line 126 of file xmlrpcParsers.cxx.

127  {
128  std::string element(el);
129  this->maxcount("name",1,element);
130  this->maxcount("value",1,element);
131  if(element == "name")name(((stringtypeParser*)child)->post());
132  else if(element == "value")value(((valuetypeParser*)child)->post());
133  }
virtual void name(const std::string &v)
virtual std::string post()
virtual void value(const std::string &v)
virtual void maxcount(std::string name, int max, std::string &el)
Definition: parserBase.cxx:122

References YACS::parser::maxcount(), name(), post(), and value().

◆ onStart()

void YACS::memberdatatypeParser::onStart ( const XML_Char el,
const XML_Char **  attr 
)
virtual

Reimplemented from YACS::parser.

Definition at line 115 of file xmlrpcParsers.cxx.

116  {
117  std::string element(el);
119  if(element == "name")pp=&stringtypeParser::stringParser;
120  else if(element == "value")pp=&valuetypeParser::valueParser;
121  SetUserDataAndPush(pp);
122  pp->init();
123  pp->pre();
124  pp->buildAttr(attr);
125  }
virtual void SetUserDataAndPush(parser *pp)
Definition: parserBase.cxx:55
static parser main_parser
Definition: parserBase.hxx:41
static stringtypeParser stringParser
Definition: dataParsers.hxx:33
static valuetypeParser valueParser

References YACS::parser::buildAttr(), YACS::parser::init(), YACS::parser::main_parser, YACS::parser::pre(), YACS::parser::SetUserDataAndPush(), YACS::stringtypeParser::stringParser, and YACS::valuetypeParser::valueParser.

◆ post()

std::string YACS::memberdatatypeParser::post ( )
virtual

Definition at line 147 of file xmlrpcParsers.cxx.

148  {
149  mincount("value",1);
150  mincount("name",1);
151  std::string d="<member>\n"+_data+"</member>";
152  _data=_datas.back();
153  _datas.pop_back();
154  return d;
155  }
std::vector< std::string > _datas
virtual void mincount(std::string name, int min)
Definition: parserBase.cxx:134

References _data, _datas, and YACS::parser::mincount().

Referenced by onEnd().

◆ pre()

void YACS::memberdatatypeParser::pre ( )
virtual

Reimplemented from YACS::parser.

Definition at line 134 of file xmlrpcParsers.cxx.

135  {
136  _datas.push_back(_data);
137  _data="";
138  }

References _data, and _datas.

◆ value()

void YACS::memberdatatypeParser::value ( const std::string &  v)
virtual

Member Data Documentation

◆ _data

std::string YACS::memberdatatypeParser::_data

Definition at line 111 of file xmlrpcParsers.hxx.

Referenced by name(), post(), pre(), and value().

◆ _datas

std::vector<std::string> YACS::memberdatatypeParser::_datas

Definition at line 112 of file xmlrpcParsers.hxx.

Referenced by post(), and pre().

◆ memberdataParser

memberdatatypeParser YACS::memberdatatypeParser::memberdataParser
static

Definition at line 104 of file xmlrpcParsers.hxx.

Referenced by YACS::structdatatypeParser::onStart().


The documentation for this struct was generated from the following files: