00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "UAPBuilder.hpp"
00026 using namespace std;
00027
00028 UAPBuilder::UAPBuilder(UAPNode* node) :
00029 root(node), currentNode(node) {}
00030
00031 UAPBuilder::~UAPBuilder() {}
00032
00033 UAPNode* UAPBuilder::getCurrentNode() {
00034 return currentNode;
00035 }
00036
00037 void UAPBuilder::addChild(enum UAPNode_type type, string name)
00038 {
00039 currentNode = currentNode->addChild(name, type);
00040 }
00041
00042 void UAPBuilder::moveToParent()
00043 {
00044 currentNode = currentNode->getParent();
00045 }
00046
00047 void UAPBuilder::addAttribute(string name, string value, bool allow_repeats)
00048 {
00049 enum UAPNode_type type = currentNode->getType();
00050 currentNode->addAttribute(name, value, allow_repeats);
00051
00052 }
00053
00054 UAPNode* UAPBuilder::getChildByName(const string& _name)
00055 {
00056 for (NodeVecIter it=root->getChildren().begin(); it!=root->getChildren().end(); ++it) {
00057 if ((*it)->getName() == _name) return *it;
00058 }
00059 return NULL;
00060 }
00061
00062 UAPNode* UAPBuilder::getChildByName(UAPNode* beginPosition, const string& _name)
00063 {
00064 for (NodeVecIter it=beginPosition->getChildren().begin(); it!=beginPosition->getChildren().end(); ++it) {
00065 if ((*it)->getName() == _name) return *it;
00066 }
00067 return NULL;
00068 }
00069
00070 NodeVec UAPBuilder::getChildrenByName(const string& _name)
00071 {
00072 NodeVec nList;
00073 for (NodeVecIter it=root->getChildren().begin(); it!=root->getChildren().end(); ++it) {
00074 if ((*it)->getName() == _name) nList.push_back(*it);
00075 }
00076 return nList;
00077 }
00078
00079 NodeVec UAPBuilder::getChildrenByName(UAPNode* beginPosition, const string& _name)
00080 {
00081 NodeVec nList;
00082 for (NodeVecIter it=beginPosition->getChildren().begin(); it!=beginPosition->getChildren().end(); ++it) {
00083 if ((*it)->getName() == _name) nList.push_back(*it);
00084 }
00085 return nList;
00086 }
00087
00088 UAPNode* UAPBuilder::getSubNodeByName(const string& _name)
00089 {
00090 UAPNode* node;
00091 for (NodeVecIter it=root->getChildren().begin(); it!=root->getChildren().end(); ++it) {
00092 if ((*it)->getName() == _name) return *it;
00093 node = getSubNodeByName(*it, _name);
00094 if (node) return node;
00095 }
00096 return NULL;
00097 }
00098
00099 UAPNode* UAPBuilder::getSubNodeByName(UAPNode* beginPosition, const string& _name)
00100 {
00101 UAPNode* node;
00102 for (NodeVecIter it=beginPosition->getChildren().begin(); it!=beginPosition->getChildren().end(); ++it) {
00103 if ((*it)->getName() == _name) return *it;
00104 node = getSubNodeByName(*it, _name);
00105 if (node) return node;
00106 }
00107 return NULL;
00108 }
00109
00110 NodeVec UAPBuilder::getSubNodesByName(const string& _name)
00111 {
00112 NodeVec nList;
00113 for (NodeVecIter it=root->getChildren().begin(); it!=root->getChildren().end(); ++it) {
00114 if ((*it)->getName() == _name) nList.push_back(*it);
00115 (*it)->getSubNodesByName (_name, nList);
00116 }
00117 return nList;
00118 }
00119
00120 NodeVec UAPBuilder::getSubNodesByName(UAPNode* beginPosition, const string& _name)
00121 {
00122 NodeVec nList;
00123 for (NodeVecIter it=beginPosition->getChildren().begin(); it!=beginPosition->getChildren().end(); ++it) {
00124 if ((*it)->getName() == _name) nList.push_back(*it);
00125 (*it)->getSubNodesByName ( _name, nList);
00126 }
00127 return nList;
00128 }
00129
00130