Version: 9.15.0
YACS::valuetypeParser Struct Reference

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

#include <xmlrpcParsers.hxx>

Inheritance diagram for YACS::valuetypeParser:
Collaboration diagram for YACS::valuetypeParser:

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 int_ (const int &d)
 
virtual void boolean (const bool &d)
 
virtual void double_ (const double &d)
 
virtual void string (const std::string &d)
 
virtual void objref (const std::string &d)
 
virtual void array (const std::string &d)
 
virtual void struct_ (const std::string &d)
 
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 > _v
 
- 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 valuetypeParser valueParser
 
- 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 value parser.

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

Its XML schema is:

  <xsd:complexType name="ValueType">
    <xsd:choice >
      <xsd:element name="int" type="IntType"/>
      <xsd:element name="boolean" type="BooleanType"/>
      <xsd:element name="double" type="DoubleType"/>
      <xsd:element name="string" type="StringType"/>
      <xsd:element name="objref" type="ObjrefType"/>
      <xsd:element name="array" type="ArrayType"/>
      <xsd:element name="struct" type="StructType"/>
    </xsd:choice>
  </xsd:complexType>

Definition at line 49 of file xmlrpcParsers.hxx.

Member Function Documentation

◆ array()

void YACS::valuetypeParser::array ( const std::string &  d)
virtual

Definition at line 68 of file xmlrpcParsers.cxx.

69  {
70  _v.push_back(d);
71  }
std::vector< std::string > _v

References _v.

Referenced by onEnd().

◆ boolean()

void YACS::valuetypeParser::boolean ( const bool &  d)
virtual

Definition at line 44 of file xmlrpcParsers.cxx.

45  {
46  std::ostringstream os;
47  os << "<boolean>" << d<< "</boolean>";
48  _data=os.str();
49  _v.push_back(_data);
50  }

References _data, and _v.

Referenced by onEnd().

◆ double_()

void YACS::valuetypeParser::double_ ( const double &  d)
virtual

Definition at line 51 of file xmlrpcParsers.cxx.

52  {
53  std::ostringstream os;
54  os << "<double>"<< std::setprecision(16) << d<< "</double>";
55  _data=os.str();
56  _v.push_back(_data);
57  }

References _data, and _v.

Referenced by onEnd().

◆ int_()

void YACS::valuetypeParser::int_ ( const int &  d)
virtual

Definition at line 37 of file xmlrpcParsers.cxx.

38  {
39  std::ostringstream os;
40  os << "<int>" << d<< "</int>";
41  _data=os.str();
42  _v.push_back(_data);
43  }

References _data, and _v.

Referenced by onEnd().

◆ objref()

void YACS::valuetypeParser::objref ( const std::string &  d)
virtual

Definition at line 63 of file xmlrpcParsers.cxx.

64  {
65  _data="<objref>"+ d+ "</objref>";
66  _v.push_back(_data);
67  }

References _data, and _v.

Referenced by onEnd().

◆ onEnd()

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

Reimplemented from YACS::parser.

Definition at line 244 of file xmlrpcParsers.cxx.

245 {
246  std::string element(el);
247  if(element == "string")string(((stringtypeParser*)child)->post());
248  else if(element == "objref")objref(((stringtypeParser*)child)->post());
249  else if(element == "double")double_(((doubletypeParser*)child)->post());
250  else if(element == "int")int_(((inttypeParser*)child)->post());
251  else if(element == "boolean")boolean(((booltypeParser*)child)->post());
252  else if(element == "array")array(((arraytypeParser*)child)->post());
253  else if(element == "struct")struct_(((structdatatypeParser*)child)->post());
254 }
virtual void struct_(const std::string &d)
virtual void string(const std::string &d)
virtual std::string post()
virtual void objref(const std::string &d)
virtual void double_(const double &d)
virtual void int_(const int &d)
virtual void boolean(const bool &d)
virtual void array(const std::string &d)

References array(), boolean(), double_(), int_(), objref(), post(), string(), and struct_().

◆ onStart()

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

Reimplemented from YACS::parser.

Definition at line 219 of file xmlrpcParsers.cxx.

220 {
221  std::string element(el);
223  this->maxcount("string",1,element);
224  this->maxcount("objref",1,element);
225  this->maxcount("double",1,element);
226  this->maxcount("int",1,element);
227  this->maxcount("boolean",1,element);
228  this->maxcount("array",1,element);
229  this->maxcount("struct",1,element);
230  this->maxchoice(t4,1,element);
231  if(element == "string")pp=&stringtypeParser::stringParser;
232  else if(element == "objref")pp=&stringtypeParser::stringParser;
233  else if(element == "double")pp=&doubletypeParser::doubleParser;
234  else if(element == "int")pp=&inttypeParser::intParser;
235  else if(element == "boolean")pp=&booltypeParser::boolParser;
236  else if(element == "array")pp=&arraytypeParser::arrayParser;
237  else if(element == "struct")pp=&structdatatypeParser::structdataParser;
238  SetUserDataAndPush(pp);
239  pp->init();
240  pp->pre();
241  pp->buildAttr(attr);
242 }
static std::string t4[]
static arraytypeParser arrayParser
static booltypeParser boolParser
Definition: dataParsers.hxx:63
static doubletypeParser doubleParser
Definition: dataParsers.hxx:43
static inttypeParser intParser
Definition: dataParsers.hxx:53
virtual void maxcount(std::string name, int max, std::string &el)
Definition: parserBase.cxx:122
virtual void SetUserDataAndPush(parser *pp)
Definition: parserBase.cxx:55
static parser main_parser
Definition: parserBase.hxx:41
virtual void maxchoice(std::string *names, int max, std::string &el)
Definition: parserBase.cxx:145
static stringtypeParser stringParser
Definition: dataParsers.hxx:33
static structdatatypeParser structdataParser

References YACS::arraytypeParser::arrayParser, YACS::booltypeParser::boolParser, YACS::parser::buildAttr(), YACS::doubletypeParser::doubleParser, YACS::parser::init(), YACS::inttypeParser::intParser, YACS::parser::main_parser, YACS::parser::maxchoice(), YACS::parser::maxcount(), YACS::parser::pre(), YACS::parser::SetUserDataAndPush(), YACS::stringtypeParser::stringParser, and YACS::structdatatypeParser::structdataParser.

◆ post()

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

Definition at line 76 of file xmlrpcParsers.cxx.

77  {
78  minchoice(t4,1);
79  std::string value="<value>"+_v.back()+"</value>\n";
80  _v.pop_back();
81  return value;
82  }
virtual void minchoice(std::string *names, int min)
Definition: parserBase.cxx:162

References _v, YACS::parser::minchoice(), and YACS::t4.

Referenced by onEnd().

◆ pre()

void YACS::valuetypeParser::pre ( )
virtual

Reimplemented from YACS::parser.

Definition at line 36 of file xmlrpcParsers.cxx.

36 { }

◆ string()

void YACS::valuetypeParser::string ( const std::string &  d)
virtual

Definition at line 58 of file xmlrpcParsers.cxx.

59  {
60  _data="<string>"+ d+ "</string>";
61  _v.push_back(_data);
62  }

References _data, and _v.

Referenced by onEnd().

◆ struct_()

void YACS::valuetypeParser::struct_ ( const std::string &  d)
virtual

Definition at line 72 of file xmlrpcParsers.cxx.

73  {
74  _v.push_back(d);
75  }

References _v.

Referenced by onEnd().

Member Data Documentation

◆ _data

std::string YACS::valuetypeParser::_data

Definition at line 63 of file xmlrpcParsers.hxx.

Referenced by boolean(), double_(), int_(), objref(), and string().

◆ _v

std::vector<std::string> YACS::valuetypeParser::_v

Definition at line 64 of file xmlrpcParsers.hxx.

Referenced by array(), boolean(), double_(), int_(), objref(), post(), string(), and struct_().

◆ valueParser


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