stl.h

00001 #ifndef VVELIB_STORAGE_STL_H
00002 #define VVELIB_STORAGE_STL_H
00003 
00004 #include <config.h>
00005 #include <vector>
00006 #include <list>
00007 #include <set>
00008 
00009 namespace std
00010 {
00011 
00012   template <typename T>
00013   bool serialization(storage::VVEStorage& store, vector<T>& vec)
00014   {
00015     size_t size = vec.size();
00016     if(!store.field("Size", size))
00017       return false;
00018     if(store.reader())
00019       vec.resize(size, T());
00020     for(size_t i = 0 ; i < size ; ++i)
00021     {
00022       if(!store.field("V", vec[i]))
00023         return false;
00024     }
00025     return true;
00026   }
00027 
00028   template <typename T, typename Sort>
00029   bool serialization(storage::VVEStorage& store, multiset<T, Sort>& vec)
00030   {
00031     size_t size = vec.size();
00032     if(!store.field("Size", size))
00033       return false;
00034     if(store.reader())
00035     {
00036       vec.clear();
00037       for(size_t i = 0 ; i < size ; ++i)
00038       {
00039         T value;
00040         if(!store.field("V", value))
00041           return false;
00042         vec.insert(value);
00043       }
00044     }
00045     else
00046     {
00047       for(typename multiset<T, Sort>::iterator it = vec.begin() ; it != vec.end() ; ++it)
00048       {
00049         if(!store.field("V", const_cast<T&>(*it)))
00050           return false;
00051       }
00052     }
00053     return true;
00054   }
00055 
00056   template <typename T, typename Sort>
00057   bool serialization(storage::VVEStorage& store, set<T, Sort>& vec)
00058   {
00059     size_t size = vec.size();
00060     if(!store.field("Size", size))
00061       return false;
00062     if(store.reader())
00063     {
00064       vec.clear();
00065       for(size_t i = 0 ; i < size ; ++i)
00066       {
00067         T value;
00068         if(!store.field("V", value))
00069           return false;
00070         vec.insert(value);
00071       }
00072     }
00073     else
00074     {
00075       for(typename set<T, Sort>::iterator it = vec.begin() ; it != vec.end() ; ++it)
00076       {
00077         if(!store.field("V", const_cast<T&>(*it)))
00078           return false;
00079       }
00080     }
00081     return true;
00082   }
00083 
00084   template <typename T>
00085   bool serialization(storage::VVEStorage& store, list<T>& vec)
00086   {
00087     size_t size = vec.size();
00088     if(!store.field("Size", size))
00089       return false;
00090     if(store.reader())
00091       vec.resize(size, T());
00092     for(typename list<T>::iterator it = vec.begin() ; it != vec.end() ; ++it)
00093     {
00094       if(!store.field("V", *it))
00095         return false;
00096     }
00097     return true;
00098   }
00099 
00100 }
00101 
00102 #endif // VVELIB_STORAGE_STL_H
00103 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Fri May 31 15:37:52 2013 for VVE by  doxygen 1.6.3