summaryrefslogtreecommitdiff
path: root/zenXml/zenxml/cvrt_struc.h
diff options
context:
space:
mode:
Diffstat (limited to 'zenXml/zenxml/cvrt_struc.h')
-rwxr-xr-xzenXml/zenxml/cvrt_struc.h50
1 files changed, 24 insertions, 26 deletions
diff --git a/zenXml/zenxml/cvrt_struc.h b/zenXml/zenxml/cvrt_struc.h
index 3a18ea73..11795107 100755
--- a/zenXml/zenxml/cvrt_struc.h
+++ b/zenXml/zenxml/cvrt_struc.h
@@ -56,14 +56,13 @@ ZEN_INIT_DETECT_MEMBER(insert) //
}
template <typename T>
-struct IsStlContainer :
- StaticBool<
- impl_2384343::HasMemberType_value_type <T>::value&&
- impl_2384343::HasMemberType_iterator <T>::value&&
- impl_2384343::HasMemberType_const_iterator<T>::value&&
- impl_2384343::HasMember_begin <T>::value&&
- impl_2384343::HasMember_end <T>::value&&
- impl_2384343::HasMember_insert <T>::value> {};
+using IsStlContainer = std::bool_constant<
+ impl_2384343::HasMemberType_value_type <T>::value &&
+ impl_2384343::HasMemberType_iterator <T>::value &&
+ impl_2384343::HasMemberType_const_iterator<T>::value &&
+ impl_2384343::HasMember_begin <T>::value &&
+ impl_2384343::HasMember_end <T>::value &&
+ impl_2384343::HasMember_insert <T>::value>;
namespace impl_2384343
@@ -76,29 +75,28 @@ ZEN_INIT_DETECT_MEMBER(second) //
}
template <typename T>
-struct IsStlPair :
- StaticBool<
- impl_2384343::HasMemberType_first_type <T>::value&&
- impl_2384343::HasMemberType_second_type<T>::value&&
- impl_2384343::HasMember_first <T>::value&&
- impl_2384343::HasMember_second <T>::value> {};
+using IsStlPair = std::bool_constant<
+ impl_2384343::HasMemberType_first_type <T>::value &&
+ impl_2384343::HasMemberType_second_type<T>::value &&
+ impl_2384343::HasMember_first <T>::value &&
+ impl_2384343::HasMember_second <T>::value>;
//######################################################################################
//Conversion from arbitrary types to an XML element
-enum ValueType
+enum class ValueType
{
- VALUE_TYPE_STL_CONTAINER,
- VALUE_TYPE_STL_PAIR,
- VALUE_TYPE_OTHER,
+ STL_CONTAINER,
+ STL_PAIR,
+ OTHER,
};
template <class T>
-struct GetValueType : StaticEnum<ValueType,
- GetTextType<T>::value != TEXT_TYPE_OTHER ? VALUE_TYPE_OTHER : //some string classes are also STL containers, so check this first
- IsStlContainer<T>::value ? VALUE_TYPE_STL_CONTAINER :
- IsStlPair<T>::value ? VALUE_TYPE_STL_PAIR :
- VALUE_TYPE_OTHER> {};
+using GetValueType = std::integral_constant<ValueType,
+ GetTextType <T>::value != TEXT_TYPE_OTHER ? ValueType::OTHER : //some string classes are also STL containers, so check this first
+ IsStlContainer<T>::value ? ValueType::STL_CONTAINER :
+ IsStlPair <T>::value ? ValueType::STL_PAIR :
+ ValueType::OTHER>;
template <class T, ValueType type>
@@ -113,7 +111,7 @@ struct ConvertElement;
//partial specialization: handle conversion for all STL-container types!
template <class T>
-struct ConvertElement<T, VALUE_TYPE_STL_CONTAINER>
+struct ConvertElement<T, ValueType::STL_CONTAINER>
{
void writeStruc(const T& value, XmlElement& output) const
{
@@ -145,7 +143,7 @@ struct ConvertElement<T, VALUE_TYPE_STL_CONTAINER>
//partial specialization: handle conversion for std::pair
template <class T>
-struct ConvertElement<T, VALUE_TYPE_STL_PAIR>
+struct ConvertElement<T, ValueType::STL_PAIR>
{
void writeStruc(const T& value, XmlElement& output) const
{
@@ -173,7 +171,7 @@ struct ConvertElement<T, VALUE_TYPE_STL_PAIR>
//partial specialization: not a pure structured type, try text conversion (thereby respect user specializations of writeText()/readText())
template <class T>
-struct ConvertElement<T, VALUE_TYPE_OTHER>
+struct ConvertElement<T, ValueType::OTHER>
{
void writeStruc(const T& value, XmlElement& output) const
{
bgstack15