00001 #include "TreeNode.h"
00002
00003 TreeNode::TreeNode(string name,string value,vector<TreeNode *> * childVec) {
00004 init(name,value,childVec);
00005 }
00006 TreeNode::TreeNode(string name,string value) {
00007 init(name,value,NULL);
00008 }
00009 TreeNode::TreeNode() {
00010 init("","",NULL);
00011 }
00012 void TreeNode::init(string names,string values,vector<TreeNode*> * vecChild) {
00013 name = string(names);
00014 value = string(values);
00015 if (vecChild==NULL) {
00016 children = new vector<TreeNode *>();
00017 } else {
00018 children = vecChild;
00019 }
00020 }
00021 TreeNode::~TreeNode() {
00022
00023 clearChildren();
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 delete children;
00036
00037 }
00038 TreeNode * TreeNode::getChild(const string & name) {
00039
00040 vector<TreeNode*>::iterator iter;
00041 if (children!=NULL) {
00042
00043 for (iter = children->begin(); iter < children->end(); iter++) {
00044 if ((*iter)->getName() == name) {
00045 return (*iter);
00046 }
00047 }
00048 }
00049 throw new string("Child Not Found!");
00050 }
00051 bool TreeNode::existChild(const string & name) {
00052 vector<TreeNode*>::iterator iter;
00053 if (children!=NULL) {
00054 for (iter = children->begin(); iter < children->end(); iter++) {
00055
00056 if ((*iter)->getName() == name) {
00057 return true;
00058 }
00059 }
00060 }
00061 return false;
00062 }
00063 vector<TreeNode*> * TreeNode::getChildren() {
00064 return children;
00065 }
00066 void TreeNode::clearChildren() {
00067 vector<TreeNode*>::iterator iter = NULL;
00068 for (iter = children->begin(); iter < children->end(); iter++) {
00069 delete (TreeNode*)(*iter);
00070 }
00071 children->clear();
00072 }
00073 string TreeNode::getName() { return name; }
00074 string TreeNode::getValue() { return value; }