123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- namespace igl
- {
- namespace xml
- {
- struct XMLSerializableBase;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- template <typename T>
- IGL_INLINE void serialize_xml(const T& obj,const std::string& filename);
- template <typename T>
- IGL_INLINE void serialize_xml(
- const T& obj,
- const std::string& objectName,
- const std::string& filename,
- bool binary = false,
- bool overwrite = false);
- template <typename T>
- IGL_INLINE void serialize_xml(
- const T& obj,
- const std::string& objectName,
- tinyxml2::XMLDocument* doc,
- tinyxml2::XMLElement* element,
- bool binary = false);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- template <typename T>
- IGL_INLINE void deserialize_xml(T& obj,const std::string& filename);
- template <typename T>
- IGL_INLINE void deserialize_xml(T& obj,const std::string& objectName,const std::string& filename);
- template <typename T>
- IGL_INLINE void deserialize_xml(T& obj,const std::string& objectName,const tinyxml2::XMLDocument* doc,const tinyxml2::XMLElement* element);
-
- namespace serialization_xml
- {
- // fundamental types
- template <typename T>
- IGL_INLINE typename std::enable_if<std::is_fundamental<T>::value>::type serialize(const T& obj,tinyxml2::XMLDocument* doc,tinyxml2::XMLElement* element,const std::string& name);
- template <typename T>
- IGL_INLINE typename std::enable_if<std::is_fundamental<T>::value>::type deserialize(T& obj,const tinyxml2::XMLDocument* doc,const tinyxml2::XMLElement* element,const std::string& name);
-
- IGL_INLINE void serialize(const std::string& obj,tinyxml2::XMLDocument* doc,tinyxml2::XMLElement* element,const std::string& name);
- IGL_INLINE void deserialize(std::string& obj,const tinyxml2::XMLDocument* doc,const tinyxml2::XMLElement* element,const std::string& name);
-
- template <typename T>
- IGL_INLINE typename std::enable_if<std::is_base_of<XMLSerializableBase,T>::value>::type serialize(const T& obj,tinyxml2::XMLDocument* doc,tinyxml2::XMLElement* element,const std::string& name);
- template <typename T>
- IGL_INLINE typename std::enable_if<std::is_base_of<XMLSerializableBase,T>::value>::type deserialize(T& obj,const tinyxml2::XMLDocument* doc,const tinyxml2::XMLElement* element,const std::string& name);
-
- template <typename T1, typename T2>
- IGL_INLINE void serialize(const std::pair<T1,T2>& obj,tinyxml2::XMLDocument* doc,tinyxml2::XMLElement* element,const std::string& name);
- template <typename T1,typename T2>
- IGL_INLINE void deserialize(std::pair<T1,T2>& obj,const tinyxml2::XMLDocument* doc,const tinyxml2::XMLElement* element,const std::string& name);
- template <typename T1,typename T2>
- IGL_INLINE void serialize(const std::vector<T1,T2>& obj,tinyxml2::XMLDocument* doc,tinyxml2::XMLElement* element,const std::string& name);
- template <typename T1,typename T2>
- IGL_INLINE void deserialize(std::vector<T1,T2>& obj,const tinyxml2::XMLDocument* doc,const tinyxml2::XMLElement* element,const std::string& name);
- template <typename T>
- IGL_INLINE void serialize(const std::set<T>& obj,tinyxml2::XMLDocument* doc,tinyxml2::XMLElement* element,const std::string& name);
- template <typename T>
- IGL_INLINE void deserialize(std::set<T>& obj,const tinyxml2::XMLDocument* doc,const tinyxml2::XMLElement* element,const std::string& name);
- template <typename T1,typename T2>
- IGL_INLINE void serialize(const std::map<T1,T2>& obj,tinyxml2::XMLDocument* doc,tinyxml2::XMLElement* element,const std::string& name);
- template <typename T1,typename T2>
- IGL_INLINE void deserialize(std::map<T1,T2>& obj,const tinyxml2::XMLDocument* doc,const tinyxml2::XMLElement* element,const std::string& name);
-
-
-
-
-
-
-
-
-
-
-
-
- template<typename T,int R,int C,int P,int MR,int MC>
- IGL_INLINE void serialize(
- const Eigen::Matrix<T,R,C,P,MR,MC>& obj,
- const std::string& name,
- const std::function<std::string(const T &) >& to_string,
- tinyxml2::XMLDocument* doc,
- tinyxml2::XMLElement* element);
-
-
-
-
-
-
-
-
-
-
- template<typename T,int R,int C,int P,int MR,int MC>
- IGL_INLINE void deserialize(
- const tinyxml2::XMLDocument* doc,
- const tinyxml2::XMLElement* element,
- const std::string& name,
- const std::function<void(const std::string &,T &)> & from_string,
- Eigen::Matrix<T,R,C,P,MR,MC>& obj);
-
- template<typename T,int R,int C,int P,int MR,int MC>
- IGL_INLINE void serialize(
- const Eigen::Matrix<T,R,C,P,MR,MC>& obj,
- tinyxml2::XMLDocument* doc,
- tinyxml2::XMLElement* element,
- const std::string& name);
- template<typename T,int R,int C,int P,int MR,int MC>
- IGL_INLINE void deserialize(
- Eigen::Matrix<T,R,C,P,MR,MC>& obj,
- const tinyxml2::XMLDocument* doc,
- const tinyxml2::XMLElement* element,
- const std::string& name);
- template<typename T,int P,typename I>
- IGL_INLINE void serialize(const Eigen::SparseMatrix<T,P,I>& obj,tinyxml2::XMLDocument* doc,tinyxml2::XMLElement* element,const std::string& name);
- template<typename T,int P,typename I>
- IGL_INLINE void deserialize(Eigen::SparseMatrix<T,P,I>& obj,const tinyxml2::XMLDocument* doc,const tinyxml2::XMLElement* element,const std::string& name);
-
- template <typename T>
- IGL_INLINE typename std::enable_if<std::is_pointer<T>::value>::type serialize(const T& obj,tinyxml2::XMLDocument* doc,tinyxml2::XMLElement* element,const std::string& name);
- template <typename T>
- IGL_INLINE typename std::enable_if<std::is_pointer<T>::value>::type deserialize(T& obj,const tinyxml2::XMLDocument* doc,const tinyxml2::XMLElement* element,const std::string& name);
-
- tinyxml2::XMLElement* getElement(tinyxml2::XMLDocument* doc,tinyxml2::XMLElement* element,const std::string& name);
- IGL_INLINE void getAttribute(const char* src,bool& dest);
- IGL_INLINE void getAttribute(const char* scr,char& dest);
- IGL_INLINE void getAttribute(const char* src,std::string& dest);
- IGL_INLINE void getAttribute(const char* src,float& dest);
- IGL_INLINE void getAttribute(const char* src,double& dest);
- template<typename T>
- IGL_INLINE typename std::enable_if<std::is_integral<T>::value && std::is_unsigned<T>::value>::type getAttribute(const char* src,T& dest);
- template<typename T>
- IGL_INLINE typename std::enable_if<std::is_integral<T>::value && !std::is_unsigned<T>::value>::type getAttribute(const char* src,T& dest);
- IGL_INLINE void replaceSubString(std::string& str,const std::string& search,const std::string& replace);
- IGL_INLINE void encodeXMLElementName(std::string& name);
- IGL_INLINE void decodeXMLElementName(std::string& name);
- IGL_INLINE std::string base64_encode(unsigned char const* bytes_to_encode,unsigned int in_len);
- IGL_INLINE std::string base64_decode(std::string const& encoded_string);
-
- template <typename T>
- struct is_stl_container { static const bool value = false; };
- template <typename T1,typename T2>
- struct is_stl_container<std::pair<T1,T2> > { static const bool value = true; };
- template <typename T1,typename T2>
- struct is_stl_container<std::vector<T1,T2> > { static const bool value = true; };
- template <typename T>
- struct is_stl_container<std::set<T> > { static const bool value = true; };
- template <typename T1,typename T2>
- struct is_stl_container<std::map<T1,T2> > { static const bool value = true; };
- template <typename T>
- struct is_eigen_type { static const bool value = false; };
- template <typename T,int R,int C,int P,int MR,int MC>
- struct is_eigen_type<Eigen::Matrix<T,R,C,P,MR,MC> > { static const bool value = true; };
- template <typename T,int P,typename I>
- struct is_eigen_type<Eigen::SparseMatrix<T,P,I> > { static const bool value = true; };
- template <typename T>
- struct is_serializable {
- using T0 = typename std::remove_pointer<T>::type;
- static const bool value = std::is_fundamental<T0>::value || std::is_same<std::string,T0>::value || std::is_base_of<XMLSerializableBase,T0>::value
- || is_stl_container<T0>::value || is_eigen_type<T0>::value;
- };
- }
- }
- }
-
|