Loading src/GTMesh/Traits/CustomTypeTraits.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -78,7 +78,7 @@ template <typename T1> struct __has_default_traits< struct __has_default_traits< T1, T1, typename std::enable_if< typename std::enable_if< noexcept(Traits<T1>::getTraits) noexcept(DefaultTraits<T1>::getTraits) >::type >::type > : public std::true_type {}; > : public std::true_type {}; Loading src/GTMesh/Traits/Traits.h +5 −5 Original line number Original line Diff line number Diff line Loading @@ -285,14 +285,14 @@ public: template<typename Class> template<typename Class> class Traits<Class>{}; class DefaultTraits{}; template<typename Class> template<typename Class> class DefaultIOTraits : public Traits<Class> {}; class DefaultIOTraits : public DefaultTraits<Class> {}; template<typename Class> template<typename Class> class DefaultArithmeticTraits : public Traits<Class> {}; class DefaultArithmeticTraits : public DefaultTraits<Class> {}; #include "CustomTypeTraits.h" #include "CustomTypeTraits.h" Loading Loading @@ -368,14 +368,14 @@ public: \ static constexpr unsigned int size() {return traitsType::size();}\ static constexpr unsigned int size() {return traitsType::size();}\ } } #define MAKE_CUSTOM_TRAIT(Class,...) IMPL_MAKE_CUSTOM_TRAIT(Traits, Class, __VA_ARGS__) // defining specialization for Traits #define MAKE_CUSTOM_TRAIT(Class,...) IMPL_MAKE_CUSTOM_TRAIT(DefaultTraits, Class, __VA_ARGS__) // defining specialization for Traits #define MAKE_NAMED_ATTRIBUTE_TRAIT(Class, ...) MAKE_CUSTOM_TRAIT(Class, FOR_EACH_3ARGS_1STAT(IMPL_NAME_AND_REF, Class, __VA_ARGS__)) #define MAKE_NAMED_ATTRIBUTE_TRAIT(Class, ...) MAKE_CUSTOM_TRAIT(Class, FOR_EACH_3ARGS_1STAT(IMPL_NAME_AND_REF, Class, __VA_ARGS__)) #define MAKE_ATTRIBUTE_TRAIT(Class, ...) MAKE_NAMED_ATTRIBUTE_TRAIT(Class, FOR_EACH(IMPL_NAME_ATT, __VA_ARGS__)) #define MAKE_ATTRIBUTE_TRAIT(Class, ...) MAKE_NAMED_ATTRIBUTE_TRAIT(Class, FOR_EACH(IMPL_NAME_ATT, __VA_ARGS__)) #define MAKE_CUSTOM_TEMPLATE_TRAIT(Class, TemplateParameters, ...) IMPL_MAKE_CUSTOM_TEMPLATE_TRAIT(Traits, TemplateParameters, Class, __VA_ARGS__) // defining specialization for Traits #define MAKE_CUSTOM_TEMPLATE_TRAIT(Class, TemplateParameters, ...) IMPL_MAKE_CUSTOM_TEMPLATE_TRAIT(DefaultTraits, TemplateParameters, Class, __VA_ARGS__) // defining specialization for Traits #define MAKE_NAMED_ATTRIBUTE_TEMPLATE_TRAIT(Class, TemplateParameters, ...) MAKE_CUSTOM_TEMPLATE_TRAIT(Class, TemplateParameters, FOR_EACH_3ARGS_1STAT(IMPL_NAME_AND_REF_TEMPLATE, Class, __VA_ARGS__)) #define MAKE_NAMED_ATTRIBUTE_TEMPLATE_TRAIT(Class, TemplateParameters, ...) MAKE_CUSTOM_TEMPLATE_TRAIT(Class, TemplateParameters, FOR_EACH_3ARGS_1STAT(IMPL_NAME_AND_REF_TEMPLATE, Class, __VA_ARGS__)) Loading src/GTMesh/UnstructuredMesh/MeshDataContainer/MeshDataIO/VTKMeshDataReader.h +9 −8 Original line number Original line Diff line number Diff line Loading @@ -95,21 +95,21 @@ private: template<typename T,unsigned int Index = 0, typename Void = void> template<typename T,unsigned int Index = 0, typename Void = void> struct readCellData{}; struct readCellData{}; template<typename T,unsigned int Index, typename... Types> template<typename T,unsigned int Index> struct readCellData <Traits<T, Types...>, Index, std::enable_if_t<Index < Traits<T, Types...>::size() - 1>>{ struct readCellData <DefaultIOTraits<T>, Index, std::enable_if_t<Index < DefaultIOTraits<T>::size() - 1>>{ static void read(std::istream& ist, DataContainer<T, MeshDimension> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ static void read(std::istream& ist, DataContainer<T, MeshDimension> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ readColumn<T, Index>(ist, data, dataPositions); readColumn<T, Index>(ist, data, dataPositions); readCellData<Traits<T, Types...>, Index + 1>::read(ist, data, dataPositions); readCellData<DefaultIOTraits<T>, Index + 1>::read(ist, data, dataPositions); } } }; }; template<typename T,unsigned int Index, typename ... Types> template<typename T,unsigned int Index> struct readCellData <Traits<T, Types...>, Index, std::enable_if_t<Index == Traits<T, Types...>::size() - 1>>{ struct readCellData <DefaultIOTraits<T>, Index, std::enable_if_t<Index == DefaultIOTraits<T>::size() - 1>>{ static void read(std::istream& ist, DataContainer<T, MeshDimension> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ static void read(std::istream& ist, DataContainer<T, MeshDimension> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ Loading Loading @@ -176,8 +176,9 @@ private: >::type >::type readMDC(std::istream& ist, MeshDataContainer<T, Dimensions...> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ readMDC(std::istream& ist, MeshDataContainer<T, Dimensions...> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ using type = typename MeshDataContainer<T, Dimensions...>::template DataContainerType<Index>::type; readCellData< readCellData< typename DefaultIOTraits<typename MeshDataContainer<T, Dimensions...>::template DataContainerType<Index>::type>::traitsType DefaultIOTraits<type> >::read(ist, data.template getDataByPos<Index>(), dataPositions); >::read(ist, data.template getDataByPos<Index>(), dataPositions); readMDC<Index + 1, true, T, Dimensions...>(ist, data, dataPositions); readMDC<Index + 1, true, T, Dimensions...>(ist, data, dataPositions); Loading Loading @@ -205,9 +206,9 @@ private: >::type >::type readMDC(std::istream& ist, MeshDataContainer<T, Dimensions...> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ readMDC(std::istream& ist, MeshDataContainer<T, Dimensions...> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ using type = typename MeshDataContainer<T, Dimensions...>::template DataContainerType<Index>::type; readCellData< readCellData< typename DefaultIOTraits<typename MeshDataContainer<T, Dimensions...>::template DataContainerType<Index>::type>::traitsType DefaultIOTraits<type> >::read(ist, data.template getDataByPos<Index>(), dataPositions); >::read(ist, data.template getDataByPos<Index>(), dataPositions); } } Loading src/GTMesh/UnstructuredMesh/MeshDataContainer/MeshDataIO/VTKMeshDataWriter.h +7 −7 Original line number Original line Diff line number Diff line Loading @@ -182,8 +182,8 @@ class VTKMeshDataWriter { template<typename T,unsigned int Index = 0, typename Void = void> template<typename T,unsigned int Index = 0, typename Void = void> struct writeCellData{}; struct writeCellData{}; template<typename T,unsigned int Index, typename... Types> template<typename T,unsigned int Index> struct writeCellData <Traits<T, Types...>, Index, std::enable_if_t<(Index < Traits<T, Types...>::size() - 1)>>{ struct writeCellData <DefaultIOTraits<T>, Index, std::enable_if_t<(Index < DefaultIOTraits<T>::size() - 1)>>{ template<typename IndexType, typename Real> template<typename IndexType, typename Real> Loading @@ -191,13 +191,13 @@ class VTKMeshDataWriter { //DBGVAR(IsIndexable<typename DefaultIOTraits<T>::traitsType::template type<Index>>::value); //DBGVAR(IsIndexable<typename DefaultIOTraits<T>::traitsType::template type<Index>>::value); writeColumn<T, Index, IndexType, Real>(ost, data, writer); writeColumn<T, Index, IndexType, Real>(ost, data, writer); ost << std::endl; ost << std::endl; writeCellData<Traits<T, Types...>, Index + 1>::write(ost, data, writer); writeCellData<DefaultIOTraits<T>, Index + 1>::write(ost, data, writer); } } }; }; template<typename T,unsigned int Index, typename ... Types> template<typename T,unsigned int Index> struct writeCellData <Traits<T, Types...>, Index, std::enable_if_t<Index == Traits<T, Types...>::size() - 1>>{ struct writeCellData <DefaultIOTraits<T>, Index, std::enable_if_t<Index == DefaultIOTraits<T>::size() - 1>>{ template< typename IndexType, typename Real> template< typename IndexType, typename Real> static void write(std::ostream& ost, const DataContainer<T, MeshDimension> &data, VTKMeshWriter<MeshDimension,IndexType, Real>& writer){ static void write(std::ostream& ost, const DataContainer<T, MeshDimension> &data, VTKMeshWriter<MeshDimension,IndexType, Real>& writer){ //DBGVAR(IsIndexable<typename DefaultIOTraits<T>::traitsType::template type<Index>>::value); //DBGVAR(IsIndexable<typename DefaultIOTraits<T>::traitsType::template type<Index>>::value); Loading Loading @@ -267,7 +267,7 @@ private: { { using type = typename MeshDataContainer<T, Dimensions...>::template DataContainerType<Index>::type; using type = typename MeshDataContainer<T, Dimensions...>::template DataContainerType<Index>::type; VTKMeshDataWriter<MeshDimension>::writeCellData<typename DefaultIOTraits<type>::traitsType>::write(ost, data.template getDataByPos<Index>(), writer); VTKMeshDataWriter<MeshDimension>::writeCellData<DefaultIOTraits<type>>::write(ost, data.template getDataByPos<Index>(), writer); MeshDataIterator<Index - 1, OK | HasDefaultIOTraits<type>::value>:: writeToStream(ost, data, writer); MeshDataIterator<Index - 1, OK | HasDefaultIOTraits<type>::value>:: writeToStream(ost, data, writer); } } Loading Loading @@ -301,7 +301,7 @@ private: { { using type = typename MeshDataContainer<T, Dimensions...>::template DataContainerType<0>::type; using type = typename MeshDataContainer<T, Dimensions...>::template DataContainerType<0>::type; VTKMeshDataWriter<MeshDimension>::writeCellData<typename DefaultIOTraits<type>::traitsType>::write(ost, data.template getDataByPos<0>(), writer); VTKMeshDataWriter<MeshDimension>::writeCellData<DefaultIOTraits<type>>::write(ost, data.template getDataByPos<0>(), writer); } } }; }; Loading Loading
src/GTMesh/Traits/CustomTypeTraits.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -78,7 +78,7 @@ template <typename T1> struct __has_default_traits< struct __has_default_traits< T1, T1, typename std::enable_if< typename std::enable_if< noexcept(Traits<T1>::getTraits) noexcept(DefaultTraits<T1>::getTraits) >::type >::type > : public std::true_type {}; > : public std::true_type {}; Loading
src/GTMesh/Traits/Traits.h +5 −5 Original line number Original line Diff line number Diff line Loading @@ -285,14 +285,14 @@ public: template<typename Class> template<typename Class> class Traits<Class>{}; class DefaultTraits{}; template<typename Class> template<typename Class> class DefaultIOTraits : public Traits<Class> {}; class DefaultIOTraits : public DefaultTraits<Class> {}; template<typename Class> template<typename Class> class DefaultArithmeticTraits : public Traits<Class> {}; class DefaultArithmeticTraits : public DefaultTraits<Class> {}; #include "CustomTypeTraits.h" #include "CustomTypeTraits.h" Loading Loading @@ -368,14 +368,14 @@ public: \ static constexpr unsigned int size() {return traitsType::size();}\ static constexpr unsigned int size() {return traitsType::size();}\ } } #define MAKE_CUSTOM_TRAIT(Class,...) IMPL_MAKE_CUSTOM_TRAIT(Traits, Class, __VA_ARGS__) // defining specialization for Traits #define MAKE_CUSTOM_TRAIT(Class,...) IMPL_MAKE_CUSTOM_TRAIT(DefaultTraits, Class, __VA_ARGS__) // defining specialization for Traits #define MAKE_NAMED_ATTRIBUTE_TRAIT(Class, ...) MAKE_CUSTOM_TRAIT(Class, FOR_EACH_3ARGS_1STAT(IMPL_NAME_AND_REF, Class, __VA_ARGS__)) #define MAKE_NAMED_ATTRIBUTE_TRAIT(Class, ...) MAKE_CUSTOM_TRAIT(Class, FOR_EACH_3ARGS_1STAT(IMPL_NAME_AND_REF, Class, __VA_ARGS__)) #define MAKE_ATTRIBUTE_TRAIT(Class, ...) MAKE_NAMED_ATTRIBUTE_TRAIT(Class, FOR_EACH(IMPL_NAME_ATT, __VA_ARGS__)) #define MAKE_ATTRIBUTE_TRAIT(Class, ...) MAKE_NAMED_ATTRIBUTE_TRAIT(Class, FOR_EACH(IMPL_NAME_ATT, __VA_ARGS__)) #define MAKE_CUSTOM_TEMPLATE_TRAIT(Class, TemplateParameters, ...) IMPL_MAKE_CUSTOM_TEMPLATE_TRAIT(Traits, TemplateParameters, Class, __VA_ARGS__) // defining specialization for Traits #define MAKE_CUSTOM_TEMPLATE_TRAIT(Class, TemplateParameters, ...) IMPL_MAKE_CUSTOM_TEMPLATE_TRAIT(DefaultTraits, TemplateParameters, Class, __VA_ARGS__) // defining specialization for Traits #define MAKE_NAMED_ATTRIBUTE_TEMPLATE_TRAIT(Class, TemplateParameters, ...) MAKE_CUSTOM_TEMPLATE_TRAIT(Class, TemplateParameters, FOR_EACH_3ARGS_1STAT(IMPL_NAME_AND_REF_TEMPLATE, Class, __VA_ARGS__)) #define MAKE_NAMED_ATTRIBUTE_TEMPLATE_TRAIT(Class, TemplateParameters, ...) MAKE_CUSTOM_TEMPLATE_TRAIT(Class, TemplateParameters, FOR_EACH_3ARGS_1STAT(IMPL_NAME_AND_REF_TEMPLATE, Class, __VA_ARGS__)) Loading
src/GTMesh/UnstructuredMesh/MeshDataContainer/MeshDataIO/VTKMeshDataReader.h +9 −8 Original line number Original line Diff line number Diff line Loading @@ -95,21 +95,21 @@ private: template<typename T,unsigned int Index = 0, typename Void = void> template<typename T,unsigned int Index = 0, typename Void = void> struct readCellData{}; struct readCellData{}; template<typename T,unsigned int Index, typename... Types> template<typename T,unsigned int Index> struct readCellData <Traits<T, Types...>, Index, std::enable_if_t<Index < Traits<T, Types...>::size() - 1>>{ struct readCellData <DefaultIOTraits<T>, Index, std::enable_if_t<Index < DefaultIOTraits<T>::size() - 1>>{ static void read(std::istream& ist, DataContainer<T, MeshDimension> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ static void read(std::istream& ist, DataContainer<T, MeshDimension> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ readColumn<T, Index>(ist, data, dataPositions); readColumn<T, Index>(ist, data, dataPositions); readCellData<Traits<T, Types...>, Index + 1>::read(ist, data, dataPositions); readCellData<DefaultIOTraits<T>, Index + 1>::read(ist, data, dataPositions); } } }; }; template<typename T,unsigned int Index, typename ... Types> template<typename T,unsigned int Index> struct readCellData <Traits<T, Types...>, Index, std::enable_if_t<Index == Traits<T, Types...>::size() - 1>>{ struct readCellData <DefaultIOTraits<T>, Index, std::enable_if_t<Index == DefaultIOTraits<T>::size() - 1>>{ static void read(std::istream& ist, DataContainer<T, MeshDimension> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ static void read(std::istream& ist, DataContainer<T, MeshDimension> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ Loading Loading @@ -176,8 +176,9 @@ private: >::type >::type readMDC(std::istream& ist, MeshDataContainer<T, Dimensions...> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ readMDC(std::istream& ist, MeshDataContainer<T, Dimensions...> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ using type = typename MeshDataContainer<T, Dimensions...>::template DataContainerType<Index>::type; readCellData< readCellData< typename DefaultIOTraits<typename MeshDataContainer<T, Dimensions...>::template DataContainerType<Index>::type>::traitsType DefaultIOTraits<type> >::read(ist, data.template getDataByPos<Index>(), dataPositions); >::read(ist, data.template getDataByPos<Index>(), dataPositions); readMDC<Index + 1, true, T, Dimensions...>(ist, data, dataPositions); readMDC<Index + 1, true, T, Dimensions...>(ist, data, dataPositions); Loading Loading @@ -205,9 +206,9 @@ private: >::type >::type readMDC(std::istream& ist, MeshDataContainer<T, Dimensions...> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ readMDC(std::istream& ist, MeshDataContainer<T, Dimensions...> &data, std::map<std::string, std::istream::pos_type>& dataPositions){ using type = typename MeshDataContainer<T, Dimensions...>::template DataContainerType<Index>::type; readCellData< readCellData< typename DefaultIOTraits<typename MeshDataContainer<T, Dimensions...>::template DataContainerType<Index>::type>::traitsType DefaultIOTraits<type> >::read(ist, data.template getDataByPos<Index>(), dataPositions); >::read(ist, data.template getDataByPos<Index>(), dataPositions); } } Loading
src/GTMesh/UnstructuredMesh/MeshDataContainer/MeshDataIO/VTKMeshDataWriter.h +7 −7 Original line number Original line Diff line number Diff line Loading @@ -182,8 +182,8 @@ class VTKMeshDataWriter { template<typename T,unsigned int Index = 0, typename Void = void> template<typename T,unsigned int Index = 0, typename Void = void> struct writeCellData{}; struct writeCellData{}; template<typename T,unsigned int Index, typename... Types> template<typename T,unsigned int Index> struct writeCellData <Traits<T, Types...>, Index, std::enable_if_t<(Index < Traits<T, Types...>::size() - 1)>>{ struct writeCellData <DefaultIOTraits<T>, Index, std::enable_if_t<(Index < DefaultIOTraits<T>::size() - 1)>>{ template<typename IndexType, typename Real> template<typename IndexType, typename Real> Loading @@ -191,13 +191,13 @@ class VTKMeshDataWriter { //DBGVAR(IsIndexable<typename DefaultIOTraits<T>::traitsType::template type<Index>>::value); //DBGVAR(IsIndexable<typename DefaultIOTraits<T>::traitsType::template type<Index>>::value); writeColumn<T, Index, IndexType, Real>(ost, data, writer); writeColumn<T, Index, IndexType, Real>(ost, data, writer); ost << std::endl; ost << std::endl; writeCellData<Traits<T, Types...>, Index + 1>::write(ost, data, writer); writeCellData<DefaultIOTraits<T>, Index + 1>::write(ost, data, writer); } } }; }; template<typename T,unsigned int Index, typename ... Types> template<typename T,unsigned int Index> struct writeCellData <Traits<T, Types...>, Index, std::enable_if_t<Index == Traits<T, Types...>::size() - 1>>{ struct writeCellData <DefaultIOTraits<T>, Index, std::enable_if_t<Index == DefaultIOTraits<T>::size() - 1>>{ template< typename IndexType, typename Real> template< typename IndexType, typename Real> static void write(std::ostream& ost, const DataContainer<T, MeshDimension> &data, VTKMeshWriter<MeshDimension,IndexType, Real>& writer){ static void write(std::ostream& ost, const DataContainer<T, MeshDimension> &data, VTKMeshWriter<MeshDimension,IndexType, Real>& writer){ //DBGVAR(IsIndexable<typename DefaultIOTraits<T>::traitsType::template type<Index>>::value); //DBGVAR(IsIndexable<typename DefaultIOTraits<T>::traitsType::template type<Index>>::value); Loading Loading @@ -267,7 +267,7 @@ private: { { using type = typename MeshDataContainer<T, Dimensions...>::template DataContainerType<Index>::type; using type = typename MeshDataContainer<T, Dimensions...>::template DataContainerType<Index>::type; VTKMeshDataWriter<MeshDimension>::writeCellData<typename DefaultIOTraits<type>::traitsType>::write(ost, data.template getDataByPos<Index>(), writer); VTKMeshDataWriter<MeshDimension>::writeCellData<DefaultIOTraits<type>>::write(ost, data.template getDataByPos<Index>(), writer); MeshDataIterator<Index - 1, OK | HasDefaultIOTraits<type>::value>:: writeToStream(ost, data, writer); MeshDataIterator<Index - 1, OK | HasDefaultIOTraits<type>::value>:: writeToStream(ost, data, writer); } } Loading Loading @@ -301,7 +301,7 @@ private: { { using type = typename MeshDataContainer<T, Dimensions...>::template DataContainerType<0>::type; using type = typename MeshDataContainer<T, Dimensions...>::template DataContainerType<0>::type; VTKMeshDataWriter<MeshDimension>::writeCellData<typename DefaultIOTraits<type>::traitsType>::write(ost, data.template getDataByPos<0>(), writer); VTKMeshDataWriter<MeshDimension>::writeCellData<DefaultIOTraits<type>>::write(ost, data.template getDataByPos<0>(), writer); } } }; }; Loading