23 #include "XMLSerialize.h"
25 string XMLSerialize::demangle(
const char *mangled)
27 int status;
char *demangled;
29 demangled = __cxa_demangle(mangled, NULL, 0, &status);
34 string XMLSerialize::getClassName(
void* instance)
36 const char *mangled =
typeid(instance).name();
37 return demangle(mangled);
40 string XMLSerialize::_handleAllSerialization(
string className,
void *t)
43 if(className==
"std::string" || className==
"string")
45 string tem = *(
string*)t;
46 objXml =
"<string>"+CastUtil::lexical_cast<
string>(tem)+
"</string>";
48 else if(className==
"int")
51 objXml =
"<int>"+CastUtil::lexical_cast<
string>(tem)+
"</int>";
53 else if(className==
"long")
56 objXml =
"<long>"+CastUtil::lexical_cast<
string>(tem)+
"</long>";
58 else if(className==
"short")
60 short tem = *(
short*)t;
61 objXml =
"<short>"+CastUtil::lexical_cast<
string>(tem)+
"</short>";
63 else if(className==
"float")
65 float tem = *(
float*)t;
66 objXml =
"<float>"+CastUtil::lexical_cast<
string>(tem)+
"</float>";
68 else if(className==
"double")
70 double tem = *(
double*)t;
71 objXml =
"<double>"+CastUtil::lexical_cast<
string>(tem)+
"</double>";
73 else if(className==
"bool")
76 objXml =
"<bool>"+CastUtil::lexical_cast<
string>(tem)+
"</bool>";
78 else if(className==
"Date")
81 objXml =
"<Date>"+formt.format(*(
Date*)t)+
"</Date>";
83 else if(className==
"BinaryData")
85 objXml = BinaryData::serilaize(*(
BinaryData*)t);
87 else if(className.find(
"std::vector<std::string,")!=string::npos || className.find(
"std::vector<string,")!=string::npos)
89 vector<string> *tt = (vector<string>*)t;
90 objXml = serializevec<string>(*tt);
92 else if(className.find(
"std::vector<int,")!=string::npos)
94 vector<int> *tt = (vector<int>*)t;
95 objXml = serializevec<int>(*tt);
97 else if(className.find(
"std::vector<short,")!=string::npos)
99 vector<short> *tt = (vector<short>*)t;
100 objXml = serializevec<short>(*tt);
102 else if(className.find(
"std::vector<long,")!=string::npos)
104 vector<long> *tt = (vector<long>*)t;
105 objXml = serializevec<long>(*tt);
107 else if(className.find(
"std::vector<double,")!=string::npos)
109 vector<double> *tt = (vector<double>*)t;
110 objXml = serializevec<double>(*tt);
112 else if(className.find(
"std::vector<float,")!=string::npos)
114 vector<float> *tt = (vector<float>*)t;
115 objXml = serializevec<float>(*tt);
117 else if(className.find(
"std::vector<bool,")!=string::npos)
119 vector<bool> *tt = (vector<bool>*)t;
120 objXml = serializevec<bool>(*tt);
122 else if(className.find(
"std::vector<")!=string::npos)
124 StringUtil::replaceFirst(className,
"std::vector<",
"");
125 string vtyp = className.substr(0,className.find(
","));
126 return _servec(t,vtyp);
128 else if(className.find(
"std::list<std::string,")!=string::npos || className.find(
"std::list<string,")!=string::npos)
130 list<string> *tt = (list<string>*)t;
131 objXml = serializelist<string>(*tt);
133 else if(className.find(
"std::list<int,")!=string::npos)
135 list<int> *tt = (list<int>*)t;
136 objXml = serializelist<int>(*tt);
138 else if(className.find(
"std::list<long,")!=string::npos)
140 list<long> *tt = (list<long>*)t;
141 objXml = serializelist<long>(*tt);
143 else if(className.find(
"std::list<short,")!=string::npos)
145 list<short> *tt = (list<short>*)t;
146 objXml = serializelist<short>(*tt);
148 else if(className.find(
"std::list<double,")!=string::npos)
150 list<double> *tt = (list<double>*)t;
151 objXml = serializelist<double>(*tt);
153 else if(className.find(
"std::list<float,")!=string::npos)
155 list<float> *tt = (list<float>*)t;
156 objXml = serializelist<float>(*tt);
158 else if(className.find(
"std::list<bool,")!=string::npos)
160 list<bool> *tt = (list<bool>*)t;
161 objXml = serializelist<bool>(*tt);
163 else if(className.find(
"std::list<")!=string::npos)
165 StringUtil::replaceFirst(className,
"std::list<",
"");
166 string vtyp = className.substr(0,className.find(
","));
167 return _serlis(t,vtyp);
169 else if(className.find(
"std::set<std::string,")!=string::npos || className.find(
"std::set<string,")!=string::npos)
171 set<string> *tt = (set<string>*)t;
172 objXml = serializeset<string>(*tt);
174 else if(className.find(
"std::set<int,")!=string::npos)
176 set<int> *tt = (set<int>*)t;
177 objXml = serializeset<int>(*tt);
179 else if(className.find(
"std::set<short,")!=string::npos)
181 set<short> *tt = (set<short>*)t;
182 objXml = serializeset<short>(*tt);
184 else if(className.find(
"std::set<long,")!=string::npos)
186 set<long> *tt = (set<long>*)t;
187 objXml = serializeset<long>(*tt);
189 else if(className.find(
"std::set<double,")!=string::npos)
191 set<double> *tt = (set<double>*)t;
192 objXml = serializeset<double>(*tt);
194 else if(className.find(
"std::set<float,")!=string::npos)
196 set<float> *tt = (set<float>*)&t;
197 objXml = serializeset<float>(*tt);
199 else if(className.find(
"std::set<bool,")!=string::npos)
201 set<bool> *tt = (set<bool>*)&t;
202 objXml = serializeset<bool>(*tt);
204 else if(className.find(
"std::set<")!=string::npos)
206 StringUtil::replaceFirst(className,
"std::set<",
"");
207 string vtyp = className.substr(0,className.find(
","));
208 return _serset(t,vtyp);
210 else if(className.find(
"std::multiset<std::string,")!=string::npos || className.find(
"std::multiset<string,")!=string::npos)
212 multiset<string> *tt = (multiset<string>*)t;
213 objXml = serializemultiset<string>(*tt);
215 else if(className.find(
"std::multiset<int,")!=string::npos)
217 multiset<int> *tt = (multiset<int>*)t;
218 objXml = serializemultiset<int>(*tt);
220 else if(className.find(
"std::multiset<long,")!=string::npos)
222 multiset<long> *tt = (multiset<long>*)t;
223 objXml = serializemultiset<long>(*tt);
225 else if(className.find(
"std::multiset<short,")!=string::npos)
227 multiset<short> *tt = (multiset<short>*)t;
228 objXml = serializemultiset<short>(*tt);
230 else if(className.find(
"std::multiset<double,")!=string::npos)
232 multiset<double> *tt = (multiset<double>*)t;
233 objXml = serializemultiset<double>(*tt);
235 else if(className.find(
"std::multiset<float,")!=string::npos)
237 multiset<float> *tt = (multiset<float>*)t;
238 objXml = serializemultiset<float>(*tt);
240 else if(className.find(
"std::multiset<bool,")!=string::npos)
242 multiset<bool> *tt = (multiset<bool>*)t;
243 objXml = serializemultiset<bool>(*tt);
245 else if(className.find(
"std::multiset<")!=string::npos)
247 StringUtil::replaceFirst(className,
"std::multiset<",
"");
248 string vtyp = className.substr(0,className.find(
","));
249 return _sermultiset(t,vtyp);
251 else if(className.find(
"std::queue<std::string,")!=string::npos || className.find(
"std::queue<string,")!=string::npos)
253 std::queue<string> *tt = (std::queue<string>*)t;
254 objXml = serializeq<string>(*tt);
256 else if(className.find(
"std::queue<int,")!=string::npos)
258 std::queue<int> *tt = (std::queue<int>*)t;
259 objXml = serializeq<int>(*tt);
261 else if(className.find(
"std::queue<short,")!=string::npos)
263 std::queue<short> *tt = (std::queue<short>*)t;
264 objXml = serializeq<short>(*tt);
266 else if(className.find(
"std::queue<long,")!=string::npos)
268 std::queue<long> *tt = (std::queue<long>*)t;
269 objXml = serializeq<long>(*tt);
271 else if(className.find(
"std::queue<double,")!=string::npos)
273 std::queue<double> *tt = (std::queue<double>*)t;
274 objXml = serializeq<double>(*tt);
276 else if(className.find(
"std::queue<float,")!=string::npos)
278 std::queue<float> *tt = (std::queue<float>*)t;
279 objXml = serializeq<float>(*tt);
281 else if(className.find(
"std::queue<bool,")!=string::npos)
283 std::queue<bool> *tt = (std::queue<bool>*)t;
284 objXml = serializeq<bool>(*tt);
286 else if(className.find(
"std::queue<")!=string::npos)
288 StringUtil::replaceFirst(className,
"std::queue<",
"");
289 string vtyp = className.substr(0,className.find(
","));
290 return _serq(t,vtyp);
292 else if(className.find(
"std::deque<std::string,")!=string::npos || className.find(
"std::deque<string,")!=string::npos)
294 deque<string> *tt = (deque<string>*)t;
295 objXml = serializedq<string>(*tt);
297 else if(className.find(
"std::deque<int,")!=string::npos)
299 deque<int> *tt = (deque<int>*)t;
300 objXml = serializedq<int>(*tt);
302 else if(className.find(
"std::deque<long,")!=string::npos)
304 deque<long> *tt = (deque<long>*)t;
305 objXml = serializedq<long>(*tt);
307 else if(className.find(
"std::deque<short,")!=string::npos)
309 deque<short> *tt = (deque<short>*)t;
310 objXml = serializedq<short>(*tt);
312 else if(className.find(
"std::deque<double,")!=string::npos)
314 deque<double> *tt = (deque<double>*)t;
315 objXml = serializedq<double>(*tt);
317 else if(className.find(
"std::deque<float,")!=string::npos)
319 deque<float> *tt = (deque<float>*)t;
320 objXml = serializedq<float>(*tt);
322 else if(className.find(
"std::deque<bool,")!=string::npos)
324 deque<bool> *tt = (deque<bool>*)t;
325 objXml = serializedq<bool>(*tt);
327 else if(className.find(
"std::deque<")!=string::npos)
329 StringUtil::replaceFirst(className,
"std::deque<",
"");
330 string vtyp = className.substr(0,className.find(
","));
331 return _serdq(t,vtyp);
335 return _ser(t,className);
340 string XMLSerialize::_servec(
void* t,
string className)
343 string libName = Constants::INTER_LIB_FILE;
344 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
347 cerr << dlerror() << endl;
350 string methodname =
"serialize"+className+
"Vec";
351 void *mkr = dlsym(dlib, methodname.c_str());
352 typedef string (*RfPtr) (
void*);
353 RfPtr f = (RfPtr)mkr;
359 string XMLSerialize::_serlis(
void* t,
string className)
362 string libName = Constants::INTER_LIB_FILE;
363 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
366 cerr << dlerror() << endl;
369 string methodname =
"serialize"+className+
"Lis";
370 void *mkr = dlsym(dlib, methodname.c_str());
371 typedef string (*RfPtr) (
void*);
372 RfPtr f = (RfPtr)mkr;
377 string XMLSerialize::_serset(
void* t,
string className)
380 string libName = Constants::INTER_LIB_FILE;
381 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
384 cerr << dlerror() << endl;
387 string methodname =
"serialize"+className+
"Set";
388 void *mkr = dlsym(dlib, methodname.c_str());
389 typedef string (*RfPtr) (
void*);
390 RfPtr f = (RfPtr)mkr;
395 string XMLSerialize::_sermultiset(
void* t,
string className)
398 string libName = Constants::INTER_LIB_FILE;
399 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
402 cerr << dlerror() << endl;
405 string methodname =
"serialize"+className+
"MulSet";
406 void *mkr = dlsym(dlib, methodname.c_str());
407 typedef string (*RfPtr) (
void*);
408 RfPtr f = (RfPtr)mkr;
413 string XMLSerialize::_serq(
void* t,
string className)
416 string libName = Constants::INTER_LIB_FILE;
417 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
420 cerr << dlerror() << endl;
423 string methodname =
"serialize"+className+
"Q";
424 void *mkr = dlsym(dlib, methodname.c_str());
425 typedef string (*RfPtr) (
void*);
426 RfPtr f = (RfPtr)mkr;
431 string XMLSerialize::_serdq(
void* t,
string className)
434 string libName = Constants::INTER_LIB_FILE;
435 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
438 cerr << dlerror() << endl;
441 string methodname =
"serialize"+className+
"Dq";
442 void *mkr = dlsym(dlib, methodname.c_str());
443 typedef string (*RfPtr) (
void*);
444 RfPtr f = (RfPtr)mkr;
450 string XMLSerialize::_ser(
void* t,
string className)
453 string libName = Constants::INTER_LIB_FILE;
454 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
457 cerr << dlerror() << endl;
460 string methodname =
"serialize"+className;
461 void *mkr = dlsym(dlib, methodname.c_str());
462 typedef string (*RfPtr) (
void*);
463 RfPtr f = (RfPtr)mkr;
469 string XMLSerialize::_ser(
Object t)
471 return _ser(t.getVoidPointer(),t.getTypeName());
475 void* XMLSerialize::_handleAllUnSerialization(
string objXml,
string className)
477 if(className==
"std::string" || className==
"string" || className==
"int" || className==
"short" || className==
"float" || className==
"double"
478 || className==
"long" || className==
"bool")
481 Document doc = parser.getDocument(objXml);
482 Element message = doc.getRootElement();
486 *vt = CastUtil::lexical_cast<
int>(message.getText());
489 else if(className==
"short")
491 short *vt =
new short;
492 *vt = CastUtil::lexical_cast<
short>(message.getText());
495 else if(className==
"long")
498 *vt = CastUtil::lexical_cast<
long>(message.getText());
501 else if(className==
"Date")
504 return formt.parse(message.getText());
506 else if(className==
"BinaryData")
508 return BinaryData::unSerilaize(message.getText());
510 else if(className==
"float")
512 float *vt =
new float;
513 *vt = CastUtil::lexical_cast<
float>(message.getText());
516 else if(className==
"double")
518 double *vt =
new double;
519 *vt = CastUtil::lexical_cast<
double>(message.getText());
522 else if(className==
"bool")
525 *vt = CastUtil::lexical_cast<
bool>(message.getText());
528 else if(className==
"std::string" || className==
"string")
530 string *vt =
new string;
531 *vt = CastUtil::lexical_cast<
string>(message.getText());
535 else if(objXml.find(
"<vector-")==0)
537 return unserializevec(objXml);
539 else if(objXml.find(
"<set-")==0)
541 return unserializeset(objXml);
543 else if(objXml.find(
"<multiset-")==0)
545 return unserializemultiset(objXml);
547 else if(objXml.find(
"<list-")==0)
549 return unserializelist(objXml);
551 else if(objXml.find(
"<queue-")==0)
553 return unserializeq(objXml);
555 else if(objXml.find(
"<deque-")==0)
557 return unserializedq(objXml);
559 return _unser(objXml,className);
562 void* XMLSerialize::unserializevec(
string objXml)
564 string cls = objXml.substr(8,objXml.find(
">")-8);
565 if(cls==
"string" || cls==
"std::string")
567 vector<string> *t =
new vector<string>;
569 Document doc = parser.getDocument(objXml);
570 Element message = doc.getRootElement();
571 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
573 Element ele = message.getChildElements().at(var);
574 if(ele.getTagName()==
"string" || ele.getTagName()==
"std::string")
576 t->push_back(ele.getText());
581 else if(cls==
"double")
583 vector<double> *t =
new vector<double>;
585 Document doc = parser.getDocument(objXml);
586 Element message = doc.getRootElement();
587 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
589 Element ele = message.getChildElements().at(var);
590 if(ele.getTagName()==
"double")
592 t->push_back(CastUtil::lexical_cast<double>(ele.getText()));
597 else if(cls==
"float")
599 vector<float> *t =
new vector<float>;
601 Document doc = parser.getDocument(objXml);
602 Element message = doc.getRootElement();
603 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
605 Element ele = message.getChildElements().at(var);
606 if(ele.getTagName()==
"float")
608 t->push_back(CastUtil::lexical_cast<float>(ele.getText()));
615 vector<int> *t =
new vector<int>;
617 Document doc = parser.getDocument(objXml);
618 Element message = doc.getRootElement();
619 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
621 Element ele = message.getChildElements().at(var);
622 if(ele.getTagName()==
"int")
624 t->push_back(CastUtil::lexical_cast<int>(ele.getText()));
629 else if(cls==
"short")
631 vector<short> *t =
new vector<short>;
633 Document doc = parser.getDocument(objXml);
634 Element message = doc.getRootElement();
635 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
637 Element ele = message.getChildElements().at(var);
638 if(ele.getTagName()==
"short")
640 t->push_back(CastUtil::lexical_cast<short>(ele.getText()));
647 vector<long> *t =
new vector<long>;
649 Document doc = parser.getDocument(objXml);
650 Element message = doc.getRootElement();
651 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
653 Element ele = message.getChildElements().at(var);
654 if(ele.getTagName()==
"long")
656 t->push_back(CastUtil::lexical_cast<long>(ele.getText()));
663 vector<bool> *t =
new vector<bool>;
665 Document doc = parser.getDocument(objXml);
666 Element message = doc.getRootElement();
667 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
669 Element ele = message.getChildElements().at(var);
670 if(ele.getTagName()==
"bool")
672 t->push_back(CastUtil::lexical_cast<bool>(ele.getText()));
678 return _unserVec(objXml,cls);
682 void* XMLSerialize::unserializelist(
string objXml)
684 string cls = objXml.substr(6,objXml.find(
">")-6);
685 if(cls==
"string" || cls==
"std::string")
687 list<string> *t =
new list<string>;
689 Document doc = parser.getDocument(objXml);
690 Element message = doc.getRootElement();
691 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
693 Element ele = message.getChildElements().at(var);
694 if(ele.getTagName()==
"string" || ele.getTagName()==
"std::string")
696 t->push_back(ele.getText());
701 else if(cls==
"double")
703 list<double> *t =
new list<double>;
705 Document doc = parser.getDocument(objXml);
706 Element message = doc.getRootElement();
707 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
709 Element ele = message.getChildElements().at(var);
710 if(ele.getTagName()==
"double")
712 t->push_back(CastUtil::lexical_cast<double>(ele.getText()));
717 else if(cls==
"float")
719 list<float> *t =
new list<float>;
721 Document doc = parser.getDocument(objXml);
722 Element message = doc.getRootElement();
723 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
725 Element ele = message.getChildElements().at(var);
726 if(ele.getTagName()==
"float")
728 t->push_back(CastUtil::lexical_cast<float>(ele.getText()));
735 list<int> *t =
new list<int>;
737 Document doc = parser.getDocument(objXml);
738 Element message = doc.getRootElement();
739 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
741 Element ele = message.getChildElements().at(var);
742 if(ele.getTagName()==
"int")
744 t->push_back(CastUtil::lexical_cast<int>(ele.getText()));
749 else if(cls==
"short")
751 list<short> *t =
new list<short>;
753 Document doc = parser.getDocument(objXml);
754 Element message = doc.getRootElement();
755 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
757 Element ele = message.getChildElements().at(var);
758 if(ele.getTagName()==
"short")
760 t->push_back(CastUtil::lexical_cast<short>(ele.getText()));
767 list<long> *t =
new list<long>;
769 Document doc = parser.getDocument(objXml);
770 Element message = doc.getRootElement();
771 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
773 Element ele = message.getChildElements().at(var);
774 if(ele.getTagName()==
"long")
776 t->push_back(CastUtil::lexical_cast<long>(ele.getText()));
783 list<bool> *t =
new list<bool>;
785 Document doc = parser.getDocument(objXml);
786 Element message = doc.getRootElement();
787 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
789 Element ele = message.getChildElements().at(var);
790 if(ele.getTagName()==
"bool")
792 t->push_back(CastUtil::lexical_cast<bool>(ele.getText()));
798 return _unserLis(objXml,cls);
801 void* XMLSerialize::unserializeset(
string objXml)
803 string cls = objXml.substr(5,objXml.find(
">")-5);
804 if(cls==
"string" || cls==
"std::string")
806 set<string> *t =
new set<string>;
808 Document doc = parser.getDocument(objXml);
809 Element message = doc.getRootElement();
810 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
812 Element ele = message.getChildElements().at(var);
813 if(ele.getTagName()==
"string" || ele.getTagName()==
"std::string")
815 t->insert(ele.getText());
820 else if(cls==
"double")
822 set<double> *t =
new set<double>;
824 Document doc = parser.getDocument(objXml);
825 Element message = doc.getRootElement();
826 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
828 Element ele = message.getChildElements().at(var);
829 if(ele.getTagName()==
"double")
831 t->insert(CastUtil::lexical_cast<double>(ele.getText()));
836 else if(cls==
"float")
838 set<float> *t =
new set<float>;
840 Document doc = parser.getDocument(objXml);
841 Element message = doc.getRootElement();
842 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
844 Element ele = message.getChildElements().at(var);
845 if(ele.getTagName()==
"float")
847 t->insert(CastUtil::lexical_cast<float>(ele.getText()));
854 set<int> *t =
new set<int>;
856 Document doc = parser.getDocument(objXml);
857 Element message = doc.getRootElement();
858 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
860 Element ele = message.getChildElements().at(var);
861 if(ele.getTagName()==
"int")
863 t->insert(CastUtil::lexical_cast<int>(ele.getText()));
868 else if(cls==
"short")
870 set<short> *t =
new set<short>;
872 Document doc = parser.getDocument(objXml);
873 Element message = doc.getRootElement();
874 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
876 Element ele = message.getChildElements().at(var);
877 if(ele.getTagName()==
"short")
879 t->insert(CastUtil::lexical_cast<short>(ele.getText()));
886 set<long> *t =
new set<long>;
888 Document doc = parser.getDocument(objXml);
889 Element message = doc.getRootElement();
890 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
892 Element ele = message.getChildElements().at(var);
893 if(ele.getTagName()==
"long")
895 t->insert(CastUtil::lexical_cast<long>(ele.getText()));
902 set<bool> *t =
new set<bool>;
904 Document doc = parser.getDocument(objXml);
905 Element message = doc.getRootElement();
906 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
908 Element ele = message.getChildElements().at(var);
909 if(ele.getTagName()==
"bool")
911 t->insert(CastUtil::lexical_cast<bool>(ele.getText()));
917 return _unserSet(objXml,cls);
920 void* XMLSerialize::unserializemultiset(
string objXml)
922 string cls = objXml.substr(10,objXml.find(
">")-10);
923 if(cls==
"string" || cls==
"std::string")
925 multiset<string> *t =
new multiset<string>;
927 Document doc = parser.getDocument(objXml);
928 Element message = doc.getRootElement();
929 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
931 Element ele = message.getChildElements().at(var);
932 if(ele.getTagName()==
"string" || ele.getTagName()==
"std::string")
934 t->insert(ele.getText());
939 else if(cls==
"double")
941 multiset<double> *t =
new multiset<double>;
943 Document doc = parser.getDocument(objXml);
944 Element message = doc.getRootElement();
945 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
947 Element ele = message.getChildElements().at(var);
948 if(ele.getTagName()==
"double")
950 t->insert(CastUtil::lexical_cast<double>(ele.getText()));
955 else if(cls==
"float")
957 multiset<float> *t =
new multiset<float>;
959 Document doc = parser.getDocument(objXml);
960 Element message = doc.getRootElement();
961 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
963 Element ele = message.getChildElements().at(var);
964 if(ele.getTagName()==
"float")
966 t->insert(CastUtil::lexical_cast<float>(ele.getText()));
973 multiset<int> *t =
new multiset<int>;
975 Document doc = parser.getDocument(objXml);
976 Element message = doc.getRootElement();
977 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
979 Element ele = message.getChildElements().at(var);
980 if(ele.getTagName()==
"int")
982 t->insert(CastUtil::lexical_cast<int>(ele.getText()));
987 else if(cls==
"short")
989 multiset<short> *t =
new multiset<short>;
991 Document doc = parser.getDocument(objXml);
992 Element message = doc.getRootElement();
993 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
995 Element ele = message.getChildElements().at(var);
996 if(ele.getTagName()==
"short")
998 t->insert(CastUtil::lexical_cast<short>(ele.getText()));
1003 else if(cls==
"long")
1005 multiset<long> *t =
new multiset<long>;
1007 Document doc = parser.getDocument(objXml);
1008 Element message = doc.getRootElement();
1009 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1011 Element ele = message.getChildElements().at(var);
1012 if(ele.getTagName()==
"long")
1014 t->insert(CastUtil::lexical_cast<long>(ele.getText()));
1019 else if(cls==
"bool")
1021 multiset<bool> *t =
new multiset<bool>;
1023 Document doc = parser.getDocument(objXml);
1024 Element message = doc.getRootElement();
1025 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1027 Element ele = message.getChildElements().at(var);
1028 if(ele.getTagName()==
"bool")
1030 t->insert(CastUtil::lexical_cast<bool>(ele.getText()));
1036 return _unserMulSet(objXml,cls);
1039 void* XMLSerialize::unserializeq(
string objXml)
1041 string cls = objXml.substr(7,objXml.find(
">")-7);
1042 if(cls==
"string" || cls==
"std::string")
1044 queue<string> *t =
new queue<string>;
1046 Document doc = parser.getDocument(objXml);
1047 Element message = doc.getRootElement();
1048 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1050 Element ele = message.getChildElements().at(var);
1051 if(ele.getTagName()==
"string" || ele.getTagName()==
"std::string")
1053 t->push(ele.getText());
1058 else if(cls==
"double")
1060 queue<double> *t =
new queue<double>;
1062 Document doc = parser.getDocument(objXml);
1063 Element message = doc.getRootElement();
1064 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1066 Element ele = message.getChildElements().at(var);
1067 if(ele.getTagName()==
"double")
1069 t->push(CastUtil::lexical_cast<double>(ele.getText()));
1074 else if(cls==
"float")
1076 queue<float> *t =
new queue<float>;
1078 Document doc = parser.getDocument(objXml);
1079 Element message = doc.getRootElement();
1080 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1082 Element ele = message.getChildElements().at(var);
1083 if(ele.getTagName()==
"float")
1085 t->push(CastUtil::lexical_cast<float>(ele.getText()));
1092 queue<int> *t =
new queue<int>;
1094 Document doc = parser.getDocument(objXml);
1095 Element message = doc.getRootElement();
1096 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1098 Element ele = message.getChildElements().at(var);
1099 if(ele.getTagName()==
"int")
1101 t->push(CastUtil::lexical_cast<int>(ele.getText()));
1106 else if(cls==
"short")
1108 queue<short> *t =
new queue<short>;
1110 Document doc = parser.getDocument(objXml);
1111 Element message = doc.getRootElement();
1112 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1114 Element ele = message.getChildElements().at(var);
1115 if(ele.getTagName()==
"short")
1117 t->push(CastUtil::lexical_cast<short>(ele.getText()));
1122 else if(cls==
"long")
1124 std::queue<long> *t =
new queue<long>;
1126 Document doc = parser.getDocument(objXml);
1127 Element message = doc.getRootElement();
1128 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1130 Element ele = message.getChildElements().at(var);
1131 if(ele.getTagName()==
"long")
1133 t->push(CastUtil::lexical_cast<long>(ele.getText()));
1138 else if(cls==
"bool")
1140 std::queue<bool> *t =
new queue<bool>;
1142 Document doc = parser.getDocument(objXml);
1143 Element message = doc.getRootElement();
1144 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1146 Element ele = message.getChildElements().at(var);
1147 if(ele.getTagName()==
"bool")
1149 t->push(CastUtil::lexical_cast<bool>(ele.getText()));
1155 return _unserQ(objXml,cls);
1158 void* XMLSerialize::unserializedq(
string objXml)
1160 string cls = objXml.substr(7,objXml.find(
">")-7);
1161 if(cls==
"string" || cls==
"std::string")
1163 deque<string> *t =
new deque<string>;
1165 Document doc = parser.getDocument(objXml);
1166 Element message = doc.getRootElement();
1167 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1169 Element ele = message.getChildElements().at(var);
1170 if(ele.getTagName()==
"string" || ele.getTagName()==
"std::string")
1172 t->push_back(ele.getText());
1177 else if(cls==
"double")
1179 deque<double> *t =
new deque<double>;
1181 Document doc = parser.getDocument(objXml);
1182 Element message = doc.getRootElement();
1183 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1185 Element ele = message.getChildElements().at(var);
1186 if(ele.getTagName()==
"double")
1188 t->push_back(CastUtil::lexical_cast<double>(ele.getText()));
1193 else if(cls==
"float")
1195 deque<float> *t =
new deque<float>;
1197 Document doc = parser.getDocument(objXml);
1198 Element message = doc.getRootElement();
1199 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1201 Element ele = message.getChildElements().at(var);
1202 if(ele.getTagName()==
"float")
1204 t->push_back(CastUtil::lexical_cast<float>(ele.getText()));
1211 deque<int> *t =
new deque<int>;
1213 Document doc = parser.getDocument(objXml);
1214 Element message = doc.getRootElement();
1215 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1217 Element ele = message.getChildElements().at(var);
1218 if(ele.getTagName()==
"int")
1220 t->push_back(CastUtil::lexical_cast<int>(ele.getText()));
1225 else if(cls==
"short")
1227 deque<short> *t =
new deque<short>;
1229 Document doc = parser.getDocument(objXml);
1230 Element message = doc.getRootElement();
1231 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1233 Element ele = message.getChildElements().at(var);
1234 if(ele.getTagName()==
"short")
1236 t->push_back(CastUtil::lexical_cast<short>(ele.getText()));
1241 else if(cls==
"long")
1243 deque<long> *t =
new deque<long>;
1245 Document doc = parser.getDocument(objXml);
1246 Element message = doc.getRootElement();
1247 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1249 Element ele = message.getChildElements().at(var);
1250 if(ele.getTagName()==
"long")
1252 t->push_back(CastUtil::lexical_cast<long>(ele.getText()));
1257 else if(cls==
"bool")
1259 deque<bool> *t =
new deque<bool>;
1261 Document doc = parser.getDocument(objXml);
1262 Element message = doc.getRootElement();
1263 for (
int var = 0; var < (int)message.getChildElements().size(); var++)
1265 Element ele = message.getChildElements().at(var);
1266 if(ele.getTagName()==
"bool")
1268 t->push_back(CastUtil::lexical_cast<bool>(ele.getText()));
1274 return _unserDq(objXml,cls);
1277 void* XMLSerialize::_unserSet(
string objXml,
string className)
1280 string libName = Constants::INTER_LIB_FILE;
1281 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
1284 cerr << dlerror() << endl;
1287 string methodname =
"unSerialize"+className+
"Set";
1288 void *mkr = dlsym(dlib, methodname.c_str());
1289 typedef void* (*RfPtr) (string);
1290 RfPtr f = (RfPtr)mkr;
1298 void* XMLSerialize::_unserMulSet(
string objXml,
string className)
1301 string libName = Constants::INTER_LIB_FILE;
1302 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
1305 cerr << dlerror() << endl;
1308 string methodname =
"unSerialize"+className+
"MulSet";
1309 void *mkr = dlsym(dlib, methodname.c_str());
1310 typedef void* (*RfPtr) (string);
1311 RfPtr f = (RfPtr)mkr;
1319 void* XMLSerialize::_unserQ(
string objXml,
string className)
1322 string libName = Constants::INTER_LIB_FILE;
1323 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
1326 cerr << dlerror() << endl;
1329 string methodname =
"unSerialize"+className+
"Q";
1330 void *mkr = dlsym(dlib, methodname.c_str());
1331 typedef void* (*RfPtr) (string);
1332 RfPtr f = (RfPtr)mkr;
1340 void* XMLSerialize::_unserDq(
string objXml,
string className)
1343 string libName = Constants::INTER_LIB_FILE;
1344 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
1347 cerr << dlerror() << endl;
1350 string methodname =
"unSerialize"+className+
"Dq";
1351 void *mkr = dlsym(dlib, methodname.c_str());
1352 typedef void* (*RfPtr) (string);
1353 RfPtr f = (RfPtr)mkr;
1361 void* XMLSerialize::_unserLis(
string objXml,
string className)
1364 string libName = Constants::INTER_LIB_FILE;
1365 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
1368 cerr << dlerror() << endl;
1371 string methodname =
"unSerialize"+className+
"Lis";
1372 void *mkr = dlsym(dlib, methodname.c_str());
1373 typedef void* (*RfPtr) (string);
1374 RfPtr f = (RfPtr)mkr;
1382 void* XMLSerialize::_unserVec(
string objXml,
string className)
1385 string libName = Constants::INTER_LIB_FILE;
1386 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
1389 cerr << dlerror() << endl;
1392 string methodname =
"unSerialize"+className+
"Vec";
1393 void *mkr = dlsym(dlib, methodname.c_str());
1394 typedef void* (*RfPtr) (string);
1395 RfPtr f = (RfPtr)mkr;
1404 void* XMLSerialize::_unser(
string objXml,
string className)
1407 string libName = Constants::INTER_LIB_FILE;
1408 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
1411 cerr << dlerror() << endl;
1414 string methodname =
"unSerialize"+className;
1415 void *mkr = dlsym(dlib, methodname.c_str());
1416 typedef void* (*RfPtr) (string);
1417 RfPtr f = (RfPtr)mkr;