PhoenixPresentation  2.0.0
Set of cmake function to automate presentation generation
PParseSeq_utils.cpp
Go to the documentation of this file.
1 /***************************************
2  Auteur : Pierre Aubert
3  Mail : pierre.aubert@lapp.in2p3.fr
4  Licence : CeCILL-C
5 ****************************************/
6 
7 #include "pxml_utils.h"
8 #include "PParseSeq_utils.h"
9 
11 
26 bool loadParserSeq(PParseSeq & seq, const PXml & xmlSeq){
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 }
57 
58 
60 
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 }
76 
77 
bool loadParserSeq(PParseSeq &seq, const PXml &xmlSeq)
Load a ParseSeq with a XML balise.
PParseSeq createSequenceAllMatch(const PVecString &vecStr)
Create a full sequence of string to match totaly.
std::vector< PString > PVecString
Definition: PString.h:96
Parser command.
Definition: PParseSeq.h:33
void setIsMatch(bool isMatch)
Set the variable p_isMatch, of type 'bool'.
Definition: PParseSeq.cpp:51
void setStr(const PString &str)
Set the variable p_str, of type 'PString'.
Definition: PParseSeq.cpp:58
Parsing sequence.
Definition: PParseSeq.h:77
const std ::vector< PParseStep > & getVecStep() const
Get the variable p_vecStep.
Definition: PParseSeq.cpp:256
Describes a parsing step.
Definition: PParseSeq.h:55
void setIsOptional(bool isOptional)
Set the variable p_isOptional, of type 'bool'.
Definition: PParseSeq.cpp:150
const std ::vector< PParseCmd > & getVecCmd() const
Get the variable p_vecCmd.
Definition: PParseSeq.cpp:178
Extends the std::string.
Definition: PString.h:16
Attribute from xml.
Definition: PXml.h:30
const PString & getValue() const
Get the variable p_value.
Definition: PXml.cpp:82
Class used to parse xml.
Definition: PXml.h:54
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.
Definition: pxml_utils.cpp:197
bool pxml_getAttrIfExist(PXmlAttr &attr, const PXml &xml, const PString &attrName)
Get the attribute with given name if exist.
Definition: pxml_utils.cpp:251
PString pxml_getFullContent(const PXml &xml)
Get the content of the PXml (children or value)
Definition: pxml_utils.cpp:395
std::vector< PXml > PVecXml
Vector of PXml.
Definition: pxml_utils.h:14