00001 #ifndef SCT_ILUMARSHALLING_H
00002 #define SCT_ILUMARSHALLING_H
00003
00004 #include <list>
00005 #include <vector>
00006
00007 namespace Sct {
00008
00015 template <typename ILUSequence, typename ListMember>
00016 inline ILUSequence *copyListToILU(std::list<ListMember> thisList) {
00017 ILUSequence *result;
00018
00019 result = ILUSequence::Create(4, NULL);
00020 result->Clear(0);
00021
00022
00023
00024 for(typename std::list<ListMember>::const_iterator m = thisList.begin();
00025 m!=thisList.end();
00026 m++) {
00027 result->Append(*m);
00028 }
00029
00030 return result;
00031 }
00032
00033 template <typename ILUSequence, typename ListMember>
00034 inline std::list<ListMember> copyILUToList(ILUSequence* thisSeq) {
00035 std::list<ListMember> result;
00036
00037 if (thisSeq) {
00038 for(unsigned int i=0; i<thisSeq->Length(); i++) {
00039 result.push_back(thisSeq->Nth(i));
00040 }
00041 }
00042
00043 return result;
00044 }
00045
00046 template <typename ILUSequence, typename ArrayMember>
00047 inline ILUSequence *copyArrayToILU(ArrayMember *array, unsigned long length) {
00048 ILUSequence *result;
00049
00050 result = ILUSequence::Create(4, NULL);
00051 result->Clear(0);
00052
00053 if(array) {
00054 for(unsigned long i=0; i<length; i++) {
00055 result->Append(array[i]);
00056 }
00057 }
00058
00059 return result;
00060 }
00061
00062 template <typename ILUSequence, typename ArrayMember>
00063 inline ILUSequence *copyVectorToILU(std::vector<ArrayMember> array) {
00064 ILUSequence *result;
00065
00066 result = ILUSequence::Create(4, NULL);
00067 result->Clear(0);
00068
00069 for(unsigned long i=0; i<array.size(); i++) {
00070 result->Append(array[i]);
00071 }
00072
00073 return result;
00074 }
00075
00076 template <typename ILUBlock, typename ArrayMember>
00077 inline ArrayMember *copyILUToArray(ILUBlock thisSeq, ArrayMember *array, size_t length) {
00078 assert(thisSeq->Length() == length);
00079 for(unsigned int i=0; i<length; i++) {
00080 array[i] = thisSeq->Nth(i);
00081 }
00082
00083 return array;
00084 }
00085
00086
00087 }
00088
00089
00090 #endif //SCT_ILUMARSHALLING_H