diff --git a/alib2std/src/extensions/type_traits.hpp b/alib2std/src/extensions/type_traits.hpp index 73c3060610ebd718b2917273e1c6cbc376c12d9c..09755ae36ce82db1cc5f5bafef62d2ee3ec0b2f1 100644 --- a/alib2std/src/extensions/type_traits.hpp +++ b/alib2std/src/extensions/type_traits.hpp @@ -45,33 +45,6 @@ namespace std { typedef typename get_type_pack_element < N - 1, Ts ... >::type type; }; - template<typename T> - bool is_same_type(const char* name) { - int status; - - char namespaceId[100]; - char classId[100]; - char* ret = abi::__cxa_demangle(typeid(T).name(), 0, 0, &status); - sscanf(ret, "%[a-zA-Z]::%[a-zA-Z]", namespaceId, classId); - free( ret ); - - if(strcmp(classId, name) == 0) { - return true; - } else { - return false; - } - } - - template <class T> - char* type_name() { - int status; - - return abi::__cxa_demangle(typeid(T).name(), 0, 0, &status); - } - - char* type_name(const std::type_info& type); - char* type_name(const std::type_index& type); - } /* namespace std */ #endif // TYPE_TRAITS_HPP_ diff --git a/alib2std/src/extensions/type_traits.cpp b/alib2std/src/extensions/typeinfo.cpp similarity index 93% rename from alib2std/src/extensions/type_traits.cpp rename to alib2std/src/extensions/typeinfo.cpp index 1d30d3ae2ea3829d581082662043bb184de47c64..d14ebcc03de72ef4b1a97ddf7caf0a73481fe528 100644 --- a/alib2std/src/extensions/type_traits.cpp +++ b/alib2std/src/extensions/typeinfo.cpp @@ -5,7 +5,7 @@ * Author: Jan Travnicek */ -#include "../type_traits" +#include "../typeinfo" namespace std { diff --git a/alib2std/src/extensions/typeinfo.hpp b/alib2std/src/extensions/typeinfo.hpp new file mode 100644 index 0000000000000000000000000000000000000000..25371b7bb9b5d1ee04bd138aca5a55e9bfb40035 --- /dev/null +++ b/alib2std/src/extensions/typeinfo.hpp @@ -0,0 +1,38 @@ +/* + * typeindex.hpp + * + * Created on: Apr 1, 2013 + * Author: Jan Travnicek + */ + +#ifndef TYPEINFO_H_ +#define TYPEINFO_H_ + +namespace std { + + char* type_name(const std::type_info& type); + char* type_name(const std::type_index& type); + + template <class T> + char* type_name() { + return type_name(typeid(T)); + } + + template<typename T> + bool is_same_type(const char* name) { + char namespaceId[100]; + char classId[100]; + char* ret = type_name<T>(); + sscanf(ret, "%[a-zA-Z]::%[a-zA-Z]", namespaceId, classId); + free( ret ); + + if(strcmp(classId, name) == 0) { + return true; + } else { + return false; + } + } + +} + +#endif // ifndef TYPEINFO_H_ diff --git a/alib2std/src/type_traits b/alib2std/src/type_traits index 1fcebfe8698edd502d5f8e75bb594ae4c88caeb5..c612cf162b8a0bbe1677058910d5f05597147a9c 100644 --- a/alib2std/src/type_traits +++ b/alib2std/src/type_traits @@ -2,11 +2,6 @@ #define __TYPE_TRAITS_HEADER_WRAPPER_ #include <bits/../type_traits> -#include <cxxabi.h> -#include <cstdio> -#include <cstdlib> -#include <cstring> -#include <typeindex> #include "extensions/type_traits.hpp" #endif /* __TYPE_TRAITS_HEADER_WRAPPER_ */ diff --git a/alib2std/src/typeinfo b/alib2std/src/typeinfo new file mode 100644 index 0000000000000000000000000000000000000000..7885373e3598844d0f6acc13005ed3e26f96d818 --- /dev/null +++ b/alib2std/src/typeinfo @@ -0,0 +1,12 @@ +#ifndef __TYPEINFO_HEADER_WRAPPER_ +#define __TYPEINFO_HEADER_WRAPPER_ + +#include <bits/../typeinfo> +#include <cstdio> +#include <cstdlib> +#include <cstring> +#include <cxxabi.h> +#include "typeindex" +#include "extensions/typeinfo.hpp" + +#endif /* __TYPEINFO_HEADER_WRAPPER_ */