23 #include "Serialize.h"
25 string Serialize::demangle(
const char *mangled)
27 int status;
char *demangled;
29 demangled = __cxa_demangle(mangled, NULL, 0, &status);
34 string Serialize::getClassName(
void* instance)
36 const char *mangled =
typeid(instance).name();
37 return demangle(mangled);
40 string Serialize::_handleAllSerialization(
string className,
void *t)
46 if(className==
"std::string" || className==
"string")
48 string tem = *(
string*)t;
49 object.setName(className);
50 object.addPacket(tem);
51 objXml = enc.encodeB(&
object,
false);
54 else if(className==
"int")
57 object.addPacket(tem, className);
58 objXml = enc.encodeB(&
object,
false);
61 else if(className==
"short")
63 short tem = *(
short*)t;
64 object.addPacket(tem, className);
65 objXml = enc.encodeB(&
object,
false);
68 else if(className==
"long")
71 object.addPacket(tem, className);
72 objXml = enc.encodeB(&
object,
false);
75 else if(className==
"float")
77 float tem = *(
float*)t;
78 object.addPacket(tem, className);
79 objXml = enc.encodeB(&
object,
false);
82 else if(className==
"double")
84 double tem = *(
double*)t;
85 object.addPacket(tem, className);
86 objXml = enc.encodeB(&
object,
false);
89 else if(className==
"bool")
92 object.addPacket(tem, className);
93 objXml = enc.encodeB(&
object,
false);
96 else if(className==
"Date")
99 object.addPacket(formt.format(*(
Date*)t), className);
100 objXml = enc.encodeB(&
object,
false);
103 else if(className==
"BinaryData")
105 object.addPacket(BinaryData::serilaize(*(
BinaryData*)t), className);
106 objXml = enc.encodeB(&
object,
false);
109 else if(className.find(
"std::vector<std::string,")!=string::npos || className.find(
"std::vector<string,")!=string::npos)
111 vector<string> *tt = (vector<string>*)t;
112 objXml = serializevec<string>(*tt);
114 else if(className.find(
"std::vector<int,")!=string::npos)
116 vector<int> *tt = (vector<int>*)t;
117 objXml = serializevec<int>(*tt);
119 else if(className.find(
"std::vector<short,")!=string::npos)
121 vector<short> *tt = (vector<short>*)t;
122 objXml = serializevec<short>(*tt);
124 else if(className.find(
"std::vector<long,")!=string::npos)
126 vector<long> *tt = (vector<long>*)t;
127 objXml = serializevec<long>(*tt);
129 else if(className.find(
"std::vector<double,")!=string::npos)
131 vector<double> *tt = (vector<double>*)t;
132 objXml = serializevec<double>(*tt);
134 else if(className.find(
"std::vector<float,")!=string::npos)
136 vector<float> *tt = (vector<float>*)t;
137 objXml = serializevec<float>(*tt);
139 else if(className.find(
"std::vector<bool,")!=string::npos)
141 vector<bool> *tt = (vector<bool>*)t;
142 objXml = serializevec<bool>(*tt);
144 else if(className.find(
"std::vector<")!=string::npos)
146 StringUtil::replaceFirst(className,
"std::vector<",
"");
147 string vtyp = className.substr(0,className.find(
","));
148 return _servec(t,vtyp);
150 else if(className.find(
"std::list<std::string,")!=string::npos || className.find(
"std::list<string,")!=string::npos)
152 list<string> *tt = (list<string>*)t;
153 objXml = serializelist<string>(*tt);
155 else if(className.find(
"std::list<int,")!=string::npos)
157 list<int> *tt = (list<int>*)t;
158 objXml = serializelist<int>(*tt);
160 else if(className.find(
"std::list<long,")!=string::npos)
162 list<long> *tt = (list<long>*)t;
163 objXml = serializelist<long>(*tt);
165 else if(className.find(
"std::list<short,")!=string::npos)
167 list<short> *tt = (list<short>*)t;
168 objXml = serializelist<short>(*tt);
170 else if(className.find(
"std::list<double,")!=string::npos)
172 list<double> *tt = (list<double>*)t;
173 objXml = serializelist<double>(*tt);
175 else if(className.find(
"std::list<float,")!=string::npos)
177 list<float> *tt = (list<float>*)t;
178 objXml = serializelist<float>(*tt);
180 else if(className.find(
"std::list<bool,")!=string::npos)
182 list<bool> *tt = (list<bool>*)t;
183 objXml = serializelist<bool>(*tt);
185 else if(className.find(
"std::list<")!=string::npos)
187 StringUtil::replaceFirst(className,
"std::list<",
"");
188 string vtyp = className.substr(0,className.find(
","));
189 return _serlis(t,vtyp);
191 else if(className.find(
"std::set<std::string,")!=string::npos || className.find(
"std::set<string,")!=string::npos)
193 set<string> *tt = (set<string>*)t;
194 objXml = serializeset<string>(*tt);
196 else if(className.find(
"std::set<int,")!=string::npos)
198 set<int> *tt = (set<int>*)t;
199 objXml = serializeset<int>(*tt);
201 else if(className.find(
"std::set<short,")!=string::npos)
203 set<short> *tt = (set<short>*)t;
204 objXml = serializeset<short>(*tt);
206 else if(className.find(
"std::set<long,")!=string::npos)
208 set<long> *tt = (set<long>*)t;
209 objXml = serializeset<long>(*tt);
211 else if(className.find(
"std::set<double,")!=string::npos)
213 set<double> *tt = (set<double>*)t;
214 objXml = serializeset<double>(*tt);
216 else if(className.find(
"std::set<float,")!=string::npos)
218 set<float> *tt = (set<float>*)&t;
219 objXml = serializeset<float>(*tt);
221 else if(className.find(
"std::set<bool,")!=string::npos)
223 set<bool> *tt = (set<bool>*)&t;
224 objXml = serializeset<bool>(*tt);
226 else if(className.find(
"std::set<")!=string::npos)
228 StringUtil::replaceFirst(className,
"std::set<",
"");
229 string vtyp = className.substr(0,className.find(
","));
230 return _serset(t,vtyp);
232 else if(className.find(
"std::multiset<std::string,")!=string::npos || className.find(
"std::multiset<string,")!=string::npos)
234 multiset<string> *tt = (multiset<string>*)t;
235 objXml = serializemultiset<string>(*tt);
237 else if(className.find(
"std::multiset<int,")!=string::npos)
239 multiset<int> *tt = (multiset<int>*)t;
240 objXml = serializemultiset<int>(*tt);
242 else if(className.find(
"std::multiset<long,")!=string::npos)
244 multiset<long> *tt = (multiset<long>*)t;
245 objXml = serializemultiset<long>(*tt);
247 else if(className.find(
"std::multiset<short,")!=string::npos)
249 multiset<short> *tt = (multiset<short>*)t;
250 objXml = serializemultiset<short>(*tt);
252 else if(className.find(
"std::multiset<double,")!=string::npos)
254 multiset<double> *tt = (multiset<double>*)t;
255 objXml = serializemultiset<double>(*tt);
257 else if(className.find(
"std::multiset<float,")!=string::npos)
259 multiset<float> *tt = (multiset<float>*)t;
260 objXml = serializemultiset<float>(*tt);
262 else if(className.find(
"std::multiset<bool,")!=string::npos)
264 multiset<bool> *tt = (multiset<bool>*)t;
265 objXml = serializemultiset<bool>(*tt);
267 else if(className.find(
"std::multiset<")!=string::npos)
269 StringUtil::replaceFirst(className,
"std::multiset<",
"");
270 string vtyp = className.substr(0,className.find(
","));
271 return _sermultiset(t,vtyp);
273 else if(className.find(
"std::queue<std::string,")!=string::npos || className.find(
"std::queue<string,")!=string::npos)
275 std::queue<string> *tt = (std::queue<string>*)t;
276 objXml = serializeq<string>(*tt);
278 else if(className.find(
"std::queue<int,")!=string::npos)
280 std::queue<int> *tt = (std::queue<int>*)t;
281 objXml = serializeq<int>(*tt);
283 else if(className.find(
"std::queue<short,")!=string::npos)
285 std::queue<short> *tt = (std::queue<short>*)t;
286 objXml = serializeq<short>(*tt);
288 else if(className.find(
"std::queue<long,")!=string::npos)
290 std::queue<long> *tt = (std::queue<long>*)t;
291 objXml = serializeq<long>(*tt);
293 else if(className.find(
"std::queue<double,")!=string::npos)
295 std::queue<double> *tt = (std::queue<double>*)t;
296 objXml = serializeq<double>(*tt);
298 else if(className.find(
"std::queue<float,")!=string::npos)
300 std::queue<float> *tt = (std::queue<float>*)t;
301 objXml = serializeq<float>(*tt);
303 else if(className.find(
"std::queue<bool,")!=string::npos)
305 std::queue<bool> *tt = (std::queue<bool>*)t;
306 objXml = serializeq<bool>(*tt);
308 else if(className.find(
"std::queue<")!=string::npos)
310 StringUtil::replaceFirst(className,
"std::queue<",
"");
311 string vtyp = className.substr(0,className.find(
","));
312 return _serq(t,vtyp);
314 else if(className.find(
"std::deque<std::string,")!=string::npos || className.find(
"std::deque<string,")!=string::npos)
316 deque<string> *tt = (deque<string>*)t;
317 objXml = serializedq<string>(*tt);
319 else if(className.find(
"std::deque<int,")!=string::npos)
321 deque<int> *tt = (deque<int>*)t;
322 objXml = serializedq<int>(*tt);
324 else if(className.find(
"std::deque<long,")!=string::npos)
326 deque<long> *tt = (deque<long>*)t;
327 objXml = serializedq<long>(*tt);
329 else if(className.find(
"std::deque<short,")!=string::npos)
331 deque<short> *tt = (deque<short>*)t;
332 objXml = serializedq<short>(*tt);
334 else if(className.find(
"std::deque<double,")!=string::npos)
336 deque<double> *tt = (deque<double>*)t;
337 objXml = serializedq<double>(*tt);
339 else if(className.find(
"std::deque<float,")!=string::npos)
341 deque<float> *tt = (deque<float>*)t;
342 objXml = serializedq<float>(*tt);
344 else if(className.find(
"std::deque<bool,")!=string::npos)
346 deque<bool> *tt = (deque<bool>*)t;
347 objXml = serializedq<bool>(*tt);
349 else if(className.find(
"std::deque<")!=string::npos)
351 StringUtil::replaceFirst(className,
"std::deque<",
"");
352 string vtyp = className.substr(0,className.find(
","));
353 return _serdq(t,vtyp);
357 return _ser(t,className);
362 string Serialize::_servec(
void* t,
string className)
365 string libName = Constants::INTER_LIB_FILE;
366 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
369 cerr << dlerror() << endl;
372 string methodname =
"binarySerialize"+className+
"Vec";
373 void *mkr = dlsym(dlib, methodname.c_str());
374 typedef string (*RfPtr) (
void*);
375 RfPtr f = (RfPtr)mkr;
381 string Serialize::_serlis(
void* t,
string className)
384 string libName = Constants::INTER_LIB_FILE;
385 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
388 cerr << dlerror() << endl;
391 string methodname =
"binarySerialize"+className+
"Lis";
392 void *mkr = dlsym(dlib, methodname.c_str());
393 typedef string (*RfPtr) (
void*);
394 RfPtr f = (RfPtr)mkr;
399 string Serialize::_serset(
void* t,
string className)
402 string libName = Constants::INTER_LIB_FILE;
403 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
406 cerr << dlerror() << endl;
409 string methodname =
"binarySerialize"+className+
"Set";
410 void *mkr = dlsym(dlib, methodname.c_str());
411 typedef string (*RfPtr) (
void*);
412 RfPtr f = (RfPtr)mkr;
417 string Serialize::_sermultiset(
void* t,
string className)
420 string libName = Constants::INTER_LIB_FILE;
421 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
424 cerr << dlerror() << endl;
427 string methodname =
"binarySerialize"+className+
"MulSet";
428 void *mkr = dlsym(dlib, methodname.c_str());
429 typedef string (*RfPtr) (
void*);
430 RfPtr f = (RfPtr)mkr;
435 string Serialize::_serq(
void* t,
string className)
438 string libName = Constants::INTER_LIB_FILE;
439 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
442 cerr << dlerror() << endl;
445 string methodname =
"binarySerialize"+className+
"Q";
446 void *mkr = dlsym(dlib, methodname.c_str());
447 typedef string (*RfPtr) (
void*);
448 RfPtr f = (RfPtr)mkr;
453 string Serialize::_serdq(
void* t,
string className)
456 string libName = Constants::INTER_LIB_FILE;
457 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
460 cerr << dlerror() << endl;
463 string methodname =
"binarySerialize"+className+
"Dq";
464 void *mkr = dlsym(dlib, methodname.c_str());
465 typedef string (*RfPtr) (
void*);
466 RfPtr f = (RfPtr)mkr;
472 string Serialize::_ser(
void* t,
string className)
475 string libName = Constants::INTER_LIB_FILE;
476 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
479 cerr << dlerror() << endl;
482 string methodname =
"binarySerialize"+className;
483 void *mkr = dlsym(dlib, methodname.c_str());
484 typedef string (*RfPtr) (
void*);
485 RfPtr f = (RfPtr)mkr;
491 string Serialize::_ser(
Object t)
493 return _ser(t.getVoidPointer(),t.getTypeName());
497 void* Serialize::_handleAllUnSerialization(
string objXml,
string className)
500 AMEFObject* root = dec.decodeB(objXml,
true,
false);
501 if(root==NULL || root->getNameStr()==
"")
503 if(root->getNameStr()==className &&
504 (className==
"std::string" || className==
"string" || className==
"int" || className==
"short" ||
505 className==
"bool" || className==
"long" || className==
"float" || className==
"double"))
513 else if(className==
"short")
515 short *vt =
new short;
519 else if(className==
"long")
525 else if(className==
"Date")
528 return formt.parse(root->getValueStr());
530 else if(className==
"BinaryData")
532 return BinaryData::unSerilaize(root->getValueStr());
534 else if(className==
"float")
536 float *vt =
new float;
540 else if(className==
"double")
542 double *vt =
new double;
546 else if(className==
"bool")
552 else if(className==
"std::string" || className==
"string")
554 string *vt =
new string;
555 *vt = root->getValueStr();
559 if(root->getNameStr().find(
"vector<")==0)
561 return unserializevec(root, objXml);
563 else if(root->getNameStr().find(
"set<")==0)
565 return unserializeset(root, objXml);
567 else if(root->getNameStr().find(
"multiset<")==0)
569 return unserializemultiset(root, objXml);
571 else if(root->getNameStr().find(
"list<")==0)
573 return unserializelist(root, objXml);
575 else if(root->getNameStr().find(
"std::queue<")==0 || root->getNameStr().find(
"queue<")==0)
577 return unserializeq(root, objXml);
579 else if(root->getNameStr().find(
"deque<")==0)
581 return unserializedq(root, objXml);
583 return _unser(objXml,className);
586 void* Serialize::unserializeset(
AMEFObject* root,
string objXml)
589 string stlclassName = root->getNameStr();
590 string className = stlclassName.substr(4,stlclassName.find(
">")-4);
592 if(className==
"std::string" || className==
"string")
593 t =
new set<string>();
594 else if(className==
"int")
596 else if(className==
"short")
597 t =
new set<short>();
598 else if(className==
"long")
600 else if(className==
"float")
601 t =
new set<float>();
602 else if(className==
"double")
603 t =
new set<double>();
604 else if(className==
"bool")
608 return _unserSet(objXml,className);
612 for (
int var = 0; var < (int)root->getPackets().size(); var++)
614 AMEFObject* root2 = dec.decodeB(root->getPackets().at(var)->getValue(),
true,
false);
615 if(className==
"std::string" || className==
"string")
616 ((set<string>*)t)->insert(root2->getPackets().at(0)->getValueStr());
617 else if(className==
"int")
618 ((set<int>*)t)->insert(root2->getPackets().at(0)->getIntValue());
619 else if(className==
"short")
620 ((set<short>*)t)->insert(root2->getPackets().at(0)->getShortValue());
621 else if(className==
"long")
622 ((set<long>*)t)->insert(root2->getPackets().at(0)->getNumericValue());
623 else if(className==
"float")
624 ((set<float>*)t)->insert(root2->getPackets().at(0)->getFloatValue());
625 else if(className==
"double")
626 ((set<double>*)t)->insert(root2->getPackets().at(0)->getDoubleValue());
627 else if(className==
"bool")
628 ((set<bool>*)t)->insert(root2->getPackets().at(0)->getBoolValue());
635 void* Serialize::unserializelist(
AMEFObject* root,
string objXml)
638 string stlclassName = root->getNameStr();
639 string className = stlclassName.substr(5,stlclassName.find(
">")-5);
641 if(className==
"std::string" || className==
"string")
642 t =
new list<string>();
643 else if(className==
"int")
645 else if(className==
"short")
646 t =
new list<short>();
647 else if(className==
"long")
648 t =
new list<long>();
649 else if(className==
"float")
650 t =
new list<float>();
651 else if(className==
"double")
652 t =
new list<double>();
653 else if(className==
"bool")
654 t =
new list<bool>();
657 return _unserLis(objXml,className);
661 for (
int var = 0; var < (int)root->getPackets().size(); var++)
663 AMEFObject* root2 = dec.decodeB(root->getPackets().at(var)->getValue(),
true,
false);
664 if(className==
"std::string" || className==
"string")
665 ((list<string>*)t)->push_back(root2->getPackets().at(0)->getValueStr());
666 else if(className==
"int")
667 ((list<int>*)t)->push_back(root2->getPackets().at(0)->getIntValue());
668 else if(className==
"short")
669 ((list<short>*)t)->push_back(root2->getPackets().at(0)->getShortValue());
670 else if(className==
"long")
671 ((list<long>*)t)->push_back(root2->getPackets().at(0)->getNumericValue());
672 else if(className==
"float")
673 ((list<float>*)t)->push_back(root2->getPackets().at(0)->getFloatValue());
674 else if(className==
"double")
675 ((list<double>*)t)->push_back(root2->getPackets().at(0)->getDoubleValue());
676 else if(className==
"bool")
677 ((list<bool>*)t)->push_back(root2->getPackets().at(0)->getBoolValue());
684 void* Serialize::unserializeq(
AMEFObject* root,
string objXml)
687 string stlclassName = root->getNameStr();
688 string className = stlclassName.substr(6,stlclassName.find(
">")-6);
690 if(className==
"std::string" || className==
"string")
691 t =
new std::queue<string>();
692 else if(className==
"int")
693 t =
new std::queue<int>();
694 else if(className==
"short")
695 t =
new std::queue<short>();
696 else if(className==
"long")
697 t =
new std::queue<long>();
698 else if(className==
"float")
699 t =
new std::queue<float>();
700 else if(className==
"double")
701 t =
new std::queue<double>();
702 else if(className==
"bool")
703 t =
new std::queue<bool>();
706 return _unserQ(objXml,className);
710 for (
int var = 0; var < (int)root->getPackets().size(); var++)
712 AMEFObject* root2 = dec.decodeB(root->getPackets().at(var)->getValue(),
true,
false);
713 if(className==
"std::string" || className==
"string")
714 ((std::queue<string>*)t)->push(root2->getPackets().at(0)->getValueStr());
715 else if(className==
"int")
716 ((std::queue<int>*)t)->push(root2->getPackets().at(0)->getIntValue());
717 else if(className==
"short")
718 ((std::queue<short>*)t)->push(root2->getPackets().at(0)->getShortValue());
719 else if(className==
"long")
720 ((std::queue<long>*)t)->push(root2->getPackets().at(0)->getNumericValue());
721 else if(className==
"float")
722 ((std::queue<float>*)t)->push(root2->getPackets().at(0)->getFloatValue());
723 else if(className==
"double")
724 ((std::queue<double>*)t)->push(root2->getPackets().at(0)->getDoubleValue());
725 else if(className==
"bool")
726 ((std::queue<bool>*)t)->push(root2->getPackets().at(0)->getBoolValue());
733 void* Serialize::unserializevec(
AMEFObject* root,
string objXml)
736 string stlclassName = root->getNameStr();
737 string className = stlclassName.substr(7,stlclassName.find(
">")-7);
739 if(className==
"std::string" || className==
"string")
740 t =
new vector<string>();
741 else if(className==
"int")
742 t =
new vector<int>();
743 else if(className==
"short")
744 t =
new vector<short>();
745 else if(className==
"long")
746 t =
new vector<long>();
747 else if(className==
"float")
748 t =
new vector<float>();
749 else if(className==
"double")
750 t =
new vector<double>();
751 else if(className==
"bool")
752 t =
new vector<bool>();
755 return _unserVec(objXml,className);
759 for (
int var = 0; var < (int)root->getPackets().size(); var++)
761 AMEFObject* root2 = dec.decodeB(root->getPackets().at(var)->getValue(),
true,
false);
762 if(className==
"std::string" || className==
"string")
763 ((vector<string>*)t)->push_back(root2->getPackets().at(0)->getValueStr());
764 else if(className==
"int")
765 ((vector<int>*)t)->push_back(root2->getPackets().at(0)->getIntValue());
766 else if(className==
"short")
767 ((vector<short>*)t)->push_back(root2->getPackets().at(0)->getShortValue());
768 else if(className==
"long")
769 ((vector<long>*)t)->push_back(root2->getPackets().at(0)->getNumericValue());
770 else if(className==
"float")
771 ((vector<float>*)t)->push_back(root2->getPackets().at(0)->getFloatValue());
772 else if(className==
"double")
773 ((vector<double>*)t)->push_back(root2->getPackets().at(0)->getDoubleValue());
774 else if(className==
"bool")
775 ((vector<bool>*)t)->push_back(root2->getPackets().at(0)->getBoolValue());
782 void* Serialize::unserializedq(
AMEFObject* root,
string objXml)
785 string stlclassName = root->getNameStr();
786 string className = stlclassName.substr(6,stlclassName.find(
">")-6);
788 if(className==
"std::string" || className==
"string")
789 t =
new deque<string>();
790 else if(className==
"int")
791 t =
new deque<int>();
792 else if(className==
"short")
793 t =
new deque<short>();
794 else if(className==
"long")
795 t =
new deque<long>();
796 else if(className==
"float")
797 t =
new deque<float>();
798 else if(className==
"double")
799 t =
new deque<double>();
800 else if(className==
"bool")
801 t =
new deque<bool>();
804 return _unserDq(objXml,className);
808 for (
int var = 0; var < (int)root->getPackets().size(); var++)
810 AMEFObject* root2 = dec.decodeB(root->getPackets().at(var)->getValue(),
true,
false);
811 if(className==
"std::string" || className==
"string")
812 ((deque<string>*)t)->push_back(root2->getPackets().at(0)->getValueStr());
813 else if(className==
"int")
814 ((deque<int>*)t)->push_back(root2->getPackets().at(0)->getIntValue());
815 else if(className==
"short")
816 ((deque<short>*)t)->push_back(root2->getPackets().at(0)->getShortValue());
817 else if(className==
"long")
818 ((deque<long>*)t)->push_back(root2->getPackets().at(0)->getNumericValue());
819 else if(className==
"float")
820 ((deque<float>*)t)->push_back(root2->getPackets().at(0)->getFloatValue());
821 else if(className==
"double")
822 ((deque<double>*)t)->push_back(root2->getPackets().at(0)->getDoubleValue());
823 else if(className==
"bool")
824 ((deque<bool>*)t)->push_back(root2->getPackets().at(0)->getBoolValue());
831 void* Serialize::unserializemultiset(
AMEFObject* root,
string objXml)
834 string stlclassName = root->getNameStr();
835 string className = stlclassName.substr(9,stlclassName.find(
">")-9);
837 if(className==
"std::string" || className==
"string")
838 t =
new multiset<string>();
839 else if(className==
"int")
840 t =
new multiset<int>();
841 else if(className==
"short")
842 t =
new multiset<short>();
843 else if(className==
"long")
844 t =
new multiset<long>();
845 else if(className==
"float")
846 t =
new multiset<float>();
847 else if(className==
"double")
848 t =
new multiset<double>();
849 else if(className==
"bool")
850 t =
new multiset<bool>();
853 return _unserMulSet(objXml,className);
857 for (
int var = 0; var < (int)root->getPackets().size(); var++)
859 AMEFObject* root2 = dec.decodeB(root->getPackets().at(var)->getValue(),
true,
false);
860 if(className==
"std::string" || className==
"string")
861 ((multiset<string>*)t)->insert(root2->getPackets().at(0)->getValueStr());
862 else if(className==
"int")
863 ((multiset<int>*)t)->insert(root2->getPackets().at(0)->getIntValue());
864 else if(className==
"short")
865 ((multiset<short>*)t)->insert(root2->getPackets().at(0)->getShortValue());
866 else if(className==
"long")
867 ((multiset<long>*)t)->insert(root2->getPackets().at(0)->getNumericValue());
868 else if(className==
"float")
869 ((multiset<float>*)t)->insert(root2->getPackets().at(0)->getFloatValue());
870 else if(className==
"double")
871 ((multiset<double>*)t)->insert(root2->getPackets().at(0)->getDoubleValue());
872 else if(className==
"bool")
873 ((multiset<bool>*)t)->insert(root2->getPackets().at(0)->getBoolValue());
880 void* Serialize::_unserSet(
string objXml,
string className)
883 string libName = Constants::INTER_LIB_FILE;
884 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
887 cerr << dlerror() << endl;
890 string methodname =
"binaryUnSerialize"+className+
"Set";
891 void *mkr = dlsym(dlib, methodname.c_str());
892 typedef void* (*RfPtr) (string);
893 RfPtr f = (RfPtr)mkr;
901 void* Serialize::_unserMulSet(
string objXml,
string className)
904 string libName = Constants::INTER_LIB_FILE;
905 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
908 cerr << dlerror() << endl;
911 string methodname =
"binaryUnSerialize"+className+
"MulSet";
912 void *mkr = dlsym(dlib, methodname.c_str());
913 typedef void* (*RfPtr) (string);
914 RfPtr f = (RfPtr)mkr;
922 void* Serialize::_unserQ(
string objXml,
string className)
925 string libName = Constants::INTER_LIB_FILE;
926 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
929 cerr << dlerror() << endl;
932 string methodname =
"binaryUnSerialize"+className+
"Q";
933 void *mkr = dlsym(dlib, methodname.c_str());
934 typedef void* (*RfPtr) (string);
935 RfPtr f = (RfPtr)mkr;
943 void* Serialize::_unserDq(
string objXml,
string className)
946 string libName = Constants::INTER_LIB_FILE;
947 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
950 cerr << dlerror() << endl;
953 string methodname =
"binaryUnSerialize"+className+
"Dq";
954 void *mkr = dlsym(dlib, methodname.c_str());
955 typedef void* (*RfPtr) (string);
956 RfPtr f = (RfPtr)mkr;
964 void* Serialize::_unserLis(
string objXml,
string className)
967 string libName = Constants::INTER_LIB_FILE;
968 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
971 cerr << dlerror() << endl;
974 string methodname =
"binaryUnSerialize"+className+
"Lis";
975 void *mkr = dlsym(dlib, methodname.c_str());
976 typedef void* (*RfPtr) (string);
977 RfPtr f = (RfPtr)mkr;
985 void* Serialize::_unserVec(
string objXml,
string className)
988 string libName = Constants::INTER_LIB_FILE;
989 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
992 cerr << dlerror() << endl;
995 string methodname =
"binaryUnSerialize"+className+
"Vec";
996 void *mkr = dlsym(dlib, methodname.c_str());
997 typedef void* (*RfPtr) (string);
998 RfPtr f = (RfPtr)mkr;
1007 void* Serialize::_unser(
string objXml,
string className)
1010 string libName = Constants::INTER_LIB_FILE;
1011 void *dlib = dlopen(libName.c_str(), RTLD_NOW);
1014 cerr << dlerror() << endl;
1017 string methodname =
"binaryUnSerialize"+className;
1018 void *mkr = dlsym(dlib, methodname.c_str());
1019 typedef void* (*RfPtr) (string);
1020 RfPtr f = (RfPtr)mkr;