PhoenixXml  0.1.0
Xml parser for Phoenix
Loading...
Searching...
No Matches
PParseSeq_utils.h File Reference
#include "PParseSeq.h"
+ Include dependency graph for PParseSeq_utils.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef std::vector< PParseCmd > PVecParseCmd
 
typedef std::vector< PParseStep > PVecParseStep
 

Functions

PParseSeq createSequenceAllMatch (const PVecString &vecStr)
 Create a full sequence of string to match totaly.
 
bool loadParserSeq (PParseSeq &seq, const PXml &xmlSeq)
 Load a ParseSeq with a XML balise.
 

Typedef Documentation

◆ PVecParseCmd

typedef std::vector<PParseCmd> PVecParseCmd

Definition at line 14 of file PParseSeq_utils.h.

◆ PVecParseStep

typedef std::vector<PParseStep> PVecParseStep

Definition at line 13 of file PParseSeq_utils.h.

Function Documentation

◆ createSequenceAllMatch()

PParseSeq createSequenceAllMatch ( const PVecString & vecStr)

Create a full sequence of string to match totaly.

Parameters
vecStr: vector of string
Returns
corresponding sequence

Definition at line 63 of file PParseSeq_utils.cpp.

63 {
64 PParseSeq seq;
65 for(PVecString::const_iterator it(vecStr.begin()); it != vecStr.end(); ++it){
66 PParseStep stepBegin;
67 stepBegin.setIsOptional(false);
68 PParseCmd cmdBegin;
69 cmdBegin.setIsMatch(true);
70 cmdBegin.setStr(*it);
71 stepBegin.getVecCmd().push_back(cmdBegin);
72 seq.getVecStep().push_back(stepBegin);
73 }
74 return seq;
75}

◆ loadParserSeq()

bool loadParserSeq ( PParseSeq & seq,
const PXml & xmlSeq )

Load a ParseSeq with a XML balise.

Parameters
[out]seq: ParseSeq to be initialised
xmlSeq: sequence in XML
Returns
true on success, false otherwise Parse a xml such as : <sequence> <step> <str>0123456789</str> </step> <step optional="true"> <match>lu</match> <m>u</m> </step> </sequence> It get a number followed by lu or u or nothing

Definition at line 26 of file PParseSeq_utils.cpp.

26 {
27 if(xmlSeq.getName() != "sequence"){
28 std::cerr << "loadParserSeq : expect <sequence> balise, not <"<<xmlSeq.getName()<<"> balise" << std::endl;
29 return false;
30 }
31 PVecXml listXmlStep;
32 if(pxml_getVecChildIfExist(listXmlStep, xmlSeq, "step")){
33 for(PVecXml::iterator itStep(listXmlStep.begin()); itStep != listXmlStep.end(); ++itStep){
34 PParseStep step;
35 PXmlAttr attrStep;
36 if(pxml_getAttrIfExist(attrStep, *itStep, "optional")){
37 PString val(attrStep.getValue());
38 step.setIsOptional(val == "true" || val == "True" || val == "TRUE");
39 }
40 PVecXml & listCmd(itStep->getVecChild());
41 for(PVecXml::iterator itCmd(listCmd.begin()); itCmd != listCmd.end(); ++itCmd){
42 PParseCmd cmd;
43 cmd.setStr(pxml_getFullContent(*itCmd));
44 PString cmdName(itCmd->getName());
45 bool isString(cmdName == "str" || cmdName == "s");
46 bool isMatch(cmdName == "match" || cmdName == "m");
47 cmd.setIsMatch(isMatch);
48 if(isString || isMatch){
49 step.getVecCmd().push_back(cmd);
50 }
51 }
52 seq.getVecStep().push_back(step);
53 }
54 }
55 return true;
56}
Attribute from xml.
Definition PXml.h:30
const PString & getValue() const
Get the variable p_value.
Definition PXml.cpp:82
const PString & getName() const
Get the variable p_name.
Definition PXml.cpp:194
bool pxml_getVecChildIfExist(PVecXml &vecMatch, const PXml &xml, const PString &childName)
Get the vector of childs with given name if exist.
bool pxml_getAttrIfExist(PXmlAttr &attr, const PXml &xml, const PString &attrName)
Get the attribute with given name if exist.
PString pxml_getFullContent(const PXml &xml)
Get the content of the PXml (children or value)
std::vector< PXml > PVecXml
Vector of PXml.
Definition pxml_utils.h:14

References PXml::getName(), PXmlAttr::getValue(), pxml_getAttrIfExist(), pxml_getFullContent(), and pxml_getVecChildIfExist().

+ Here is the call graph for this function: