qt.h
00001 #ifndef VVELIB_STORAGE_QT_H
00002 #define VVELIB_STORAGE_QT_H
00003
00004 #include <config.h>
00005 #include <QtCore/QList>
00006 #include <QtCore/QVector>
00007
00008 template <typename T>
00009 bool serialization(storage::VVEStorage& store, QVector<T>& vec)
00010 {
00011 size_t size = vec.size();
00012 if(!store.field("Size", size))
00013 return false;
00014 if(store.reader())
00015 vec.resize(size);
00016 for(size_t i = 0 ; i < size ; ++i)
00017 {
00018 if(!store.field("V", vec[i]))
00019 return false;
00020 }
00021 return true;
00022 }
00023
00024 template <typename T>
00025 bool serialization(storage::VVEStorage& store, QList<T>& vec)
00026 {
00027 size_t size = vec.size();
00028 if(!store.field("Size", size))
00029 return false;
00030 if(store.reader())
00031 {
00032 for(size_t i = 0 ; i < size ; ++i)
00033 {
00034 T value;
00035 store.field("V", value);
00036 vec.push_back(value);
00037 }
00038 }
00039 else
00040 {
00041 for(typename QList<T>::iterator it = vec.begin() ; it != vec.end() ; ++it)
00042 {
00043 if(!store.field("V", *it))
00044 return false;
00045 }
00046 }
00047 return true;
00048 }
00049
00050 inline bool serialization(storage::VVEStorage& store, QStringList& sl)
00051 {
00052 return serialization(store, (QList<QString>&)sl);
00053 }
00054
00055 template <typename T>
00056 bool serialization(storage::VVEStorage& store, QSet<T>& vec)
00057 {
00058 size_t size = vec.size();
00059 if(!store.field("Size", size))
00060 return false;
00061 if(store.reader())
00062 {
00063 vec.clear();
00064 for(size_t i = 0 ; i < size ; ++i)
00065 {
00066 T value;
00067 if(!store.field("V", value))
00068 return false;
00069 vec.insert(value);
00070 }
00071 }
00072 else
00073 {
00074 for(typename QSet<T>::iterator it = vec.begin() ; it != vec.end() ; ++it)
00075 {
00076 if(!store.field("V", *it))
00077 return false;
00078 }
00079 }
00080 return true;
00081 }
00082
00083 #endif // VVELIB_STORAGE_QT_H
00084