equal
deleted
inserted
replaced
25 #include <osn/alfptrvector.h> |
25 #include <osn/alfptrvector.h> |
26 #include <alf/alfvarianttype.h> |
26 #include <alf/alfvarianttype.h> |
27 #include <osn/osncommon.h> |
27 #include <osn/osncommon.h> |
28 #include <osn/ustring.h> |
28 #include <osn/ustring.h> |
29 #include <alf/alfexceptions.h> |
29 #include <alf/alfexceptions.h> |
30 #include "alf/alfperf.h" |
30 //#include "alf/alfperf.h" |
31 #include <osn/osnnew.h> |
31 #include <osn/osnnew.h> |
32 #include "alfsort.h" |
32 #include "alfsort.h" |
33 |
33 |
34 using osncore::UString; |
34 using osncore::UString; |
35 using osncore::AlfPtrVector; |
35 using osncore::AlfPtrVector; |
579 // |
579 // |
580 OSN_EXPORT IAlfContainer* AlfContainer::clone() |
580 OSN_EXPORT IAlfContainer* AlfContainer::clone() |
581 { |
581 { |
582 try |
582 try |
583 { |
583 { |
584 ALF_PERF_START( perfdata, "AlfContainer-Clone-Cloning Container") |
584 //ALF_PERF_START( perfdata, "AlfContainer-Clone-Cloning Container") |
585 auto_ptr<AlfContainer> clone( new( EMM ) AlfContainer() ); |
585 auto_ptr<AlfContainer> clone( new( EMM ) AlfContainer() ); |
586 auto_ptr<IAlfVariantType> childData; |
586 auto_ptr<IAlfVariantType> childData; |
587 |
587 |
588 for ( int i = 0; i < mContainerData->mArray.count(); ++i ) |
588 for ( int i = 0; i < mContainerData->mArray.count(); ++i ) |
589 { |
589 { |
625 } |
625 } |
626 clone->mContainerData->mArray.resize( clone->mContainerData->mArray.count() + 1 ); |
626 clone->mContainerData->mArray.resize( clone->mContainerData->mArray.count() + 1 ); |
627 clone->mContainerData->mArray.insert( clone->mContainerData->mArray.count(), childData.get() ); |
627 clone->mContainerData->mArray.insert( clone->mContainerData->mArray.count(), childData.get() ); |
628 childData.release(); // ownership was transferred. |
628 childData.release(); // ownership was transferred. |
629 } |
629 } |
630 ALF_PERF_STOP( perfdata, "AlfContainer-Clone-Cloning Container") |
630 //ALF_PERF_STOP( perfdata, "AlfContainer-Clone-Cloning Container") |
631 return clone.release(); |
631 return clone.release(); |
632 } |
632 } |
633 catch(...) |
633 catch(...) |
634 { |
634 { |
635 ALF_THROW(AlfDataException,EInvalidContainerOperation,"AlfContainer") |
635 ALF_THROW(AlfDataException,EInvalidContainerOperation,"AlfContainer") |
1063 // |
1063 // |
1064 OSN_EXPORT IAlfMap* AlfMap::clone() |
1064 OSN_EXPORT IAlfMap* AlfMap::clone() |
1065 { |
1065 { |
1066 try |
1066 try |
1067 { |
1067 { |
1068 ALF_PERF_START( perfdata, "AlfContainer-Clone-Cloning Map") |
1068 //ALF_PERF_START( perfdata, "AlfContainer-Clone-Cloning Map") |
1069 auto_ptr<AlfMap> clone( new(EMM) AlfMap() ); |
1069 auto_ptr<AlfMap> clone( new(EMM) AlfMap() ); |
1070 auto_ptr<MapItem> cloneItem; |
1070 auto_ptr<MapItem> cloneItem; |
1071 |
1071 |
1072 for (int i = 0; i < mMapDataImpl->mArray.count(); ++i) |
1072 for (int i = 0; i < mMapDataImpl->mArray.count(); ++i) |
1073 { |
1073 { |
1115 |
1115 |
1116 clone->mMapDataImpl->mArray.resize(clone->mMapDataImpl->mArray.count()+1); |
1116 clone->mMapDataImpl->mArray.resize(clone->mMapDataImpl->mArray.count()+1); |
1117 clone->mMapDataImpl->mArray.insert(clone->mMapDataImpl->mArray.count(),cloneItem.get() ); |
1117 clone->mMapDataImpl->mArray.insert(clone->mMapDataImpl->mArray.count(),cloneItem.get() ); |
1118 cloneItem.release(); |
1118 cloneItem.release(); |
1119 } |
1119 } |
1120 ALF_PERF_STOP( perfdata, "AlfContainer-Clone-Cloning Map") |
1120 //ALF_PERF_STOP( perfdata, "AlfContainer-Clone-Cloning Map") |
1121 |
1121 |
1122 return clone.release(); |
1122 return clone.release(); |
1123 } |
1123 } |
1124 catch(...) |
1124 catch(...) |
1125 { |
1125 { |