From 8219e470f1043bab219ad2ebaf24eec56b7faa46 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Fri, 13 May 2016 21:01:22 +0200 Subject: [PATCH] issue76fix_proposal --- alib2std/src/extensions/type_traits.hpp | 27 ------------- .../{type_traits.cpp => typeinfo.cpp} | 2 +- alib2std/src/extensions/typeinfo.hpp | 38 +++++++++++++++++++ alib2std/src/type_traits | 5 --- alib2std/src/typeinfo | 12 ++++++ 5 files changed, 51 insertions(+), 33 deletions(-) rename alib2std/src/extensions/{type_traits.cpp => typeinfo.cpp} (93%) create mode 100644 alib2std/src/extensions/typeinfo.hpp create mode 100644 alib2std/src/typeinfo diff --git a/alib2std/src/extensions/type_traits.hpp b/alib2std/src/extensions/type_traits.hpp index 73c3060610..09755ae36c 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 1d30d3ae2e..d14ebcc03d 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 0000000000..25371b7bb9 --- /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 1fcebfe869..c612cf162b 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 0000000000..7885373e35 --- /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_ */ -- GitLab