Fire Core  8.0.0.alpha
GIS framework per tutti gli usi
 Tutto Classi Namespace Funzioni Variabili Ridefinizioni di tipo (typedef) Tipi enumerati (enum) Valori del tipo enumerato Friend
Class.hpp
1 // Copyright 2015 GEOSYSTEMS SRL
2 // All Rights Reserved.
3 
4 #ifndef FIRE_CLASS_HPP_INCLUDED
5 #define FIRE_CLASS_HPP_INCLUDED
6 
7 #include <exception>
8 #include <typeinfo>
9 #ifndef _MSC_VER
10 # include <cxxabi.h>
11 #endif
12 #include <string>
13 
14 #include "fire/export.hpp"
15 
16 namespace fire {
17 class Object;
18 } // namespace fire
19 
24 namespace fire {
32 template < class T >
33 class FIRE_ENGINE_DLL Class {
34  public:
39  const std::type_info* information;
48  fire::Class< fire::Object >* value = NULL;
49  try {
50  value = new fire::Class< fire::Object >(&typeid(T));
51  } catch (const std::exception& exception) {
52  throw;
53  }
54  return value;
55  }
63  explicit Class(const std::type_info* information) : information(information) {
64  try {
65  } catch (const std::exception& exception) {
66  throw;
67  }
68  }
76  explicit Class(const T& object) : information(&typeid(object)) {
77  try {
78  } catch (const std::exception& exception) {
79  throw;
80  }
81  }
86  virtual ~Class() {
87  try {
88  } catch (const std::exception& exception) {
89  throw;
90  }
91  }
99  std::string getName() const {
100  std::string value;
101  try {
102  #ifndef _MSC_VER
103  int status;
104  char* name = abi::__cxa_demangle(this->information->name(), 0, 0, &status);
105  value = name;
106  free(name);
107  #else
108  value = this->information->name();
109  #endif
110  if (0 == value.find("class ")) {
111  value = value.substr(6);
112  }
113  } catch (const std::exception& exception) {
114  throw;
115  }
116  return value;
117  }
118 };
119 } // namespace fire
120 
121 #endif
static fire::Class< fire::Object > * instance()
Restituisce un'istanza di una classe contenente le informazioni di una classe.
Definition: Class.hpp:47
virtual ~Class()
Distruttore.
Definition: Class.hpp:86
Class(const T &object)
Costruttore.
Definition: Class.hpp:76
const std::type_info * information
Informazioni della classe.
Definition: Class.hpp:39
Classe per la gestione di una classe contenente le informazioni di una classe.
Definition: Class.hpp:33
std::string getName() const
Restituisce il nome della classe.
Definition: Class.hpp:99
Class(const std::type_info *information)
Costruttore.
Definition: Class.hpp:63