SST  9.0.0
StructuralSimulationToolkit
defaultInfo.h
1 #ifndef SST_CORE_DEFAULTINFO_H
2 #define SST_CORE_DEFAULTINFO_H
3 
4 #include <string>
5 #include <vector>
6 
7 namespace SST {
8 namespace ELI {
9 
11  friend class ModuleDocOldEli;
12  public:
13  const std::string& getLibrary() const {
14  return lib_;
15  }
16  const std::string& getDescription() const {
17  return desc_;
18  }
19  const std::string& getName() const {
20  return name_;
21  }
22  const std::vector<int>& getVersion() const {
23  return version_;
24  }
25  const std::string& getCompileFile() const {
26  return file_;
27  }
28  const std::string& getCompileDate() const {
29  return date_;
30  }
31  const std::vector<int>& getELICompiledVersion() const;
32 
33  std::string getELIVersionString() const;
34 
35  void toString(std::ostream& os) const;
36 
37  template <class XMLNode> void outputXML(XMLNode* node) const {
38  node->SetAttribute("Name", getName().c_str());
39  node->SetAttribute("Description", getDescription().c_str());
40  }
41 
42  template <class T> ProvidesDefaultInfo(const std::string& lib,
43  const std::string& name,
44  T* UNUSED(t)) :
45  lib_(lib), name_(name),
46  desc_(T::ELI_getDescription()),
47  version_(T::ELI_getVersion()),
48  file_(T::ELI_getCompileFile()),
49  date_(T::ELI_getCompileDate())
50  {
51  }
52 
53  protected:
54  template <class T> ProvidesDefaultInfo(T* t) :
55  ProvidesDefaultInfo(T::ELI_getLibrary(), T::ELI_getName(), t)
56  {
57  }
58 
59  private:
60  std::string lib_;
61  std::string name_;
62  std::string desc_;
63  std::vector<int> version_;
64  std::string file_;
65  std::string date_;
66  std::vector<int> compiled_;
67 };
68 
69 
70 }
71 }
72 
73 #define SST_ELI_INSERT_COMPILE_INFO() \
74  static const std::string& ELI_getCompileDate() { \
75  static std::string time = __TIME__; \
76  static std::string date = __DATE__; \
77  static std::string date_time = date + " " + time; \
78  return date_time; \
79  } \
80  static const std::string ELI_getCompileFile() { \
81  return __FILE__; \
82  }
83 
84 #define SST_ELI_DEFAULT_INFO(lib,name,version,desc) \
85  SST_ELI_INSERT_COMPILE_INFO() \
86  static constexpr unsigned majorVersion() { \
87  return SST::SST_ELI_getMajorNumberFromVersion(version); \
88  } \
89  static constexpr unsigned minorVersion() { \
90  return SST::SST_ELI_getMinorNumberFromVersion(version); \
91  } \
92  static constexpr unsigned tertiaryVersion() { \
93  return SST::SST_ELI_getTertiaryNumberFromVersion(version); \
94  } \
95  static const std::vector<int>& ELI_getVersion() { \
96  static std::vector<int> var = version; \
97  return var; \
98  } \
99  static const char* ELI_getLibrary() { \
100  return lib; \
101  } \
102  static const char* ELI_getName() { \
103  return name; \
104  } \
105  static const char* ELI_getDescription() { \
106  return desc; \
107  }
108 
109 #define SST_ELI_ELEMENT_VERSION(...) {__VA_ARGS__}
110 
111 #endif
112 
Definition: defaultInfo.h:10