12 #ifndef SST_CORE_STATAPI_STATFIELDINFO_H 13 #define SST_CORE_STATAPI_STATFIELDINFO_H 15 #include "sst/core/sst_types.h" 23 using fieldType_t = uint32_t;
34 virtual const char* fieldName()
const = 0;
35 virtual const char* shortName()
const = 0;
42 static fieldType_t getField(
const char* field_short_name);
44 static void checkRegisterConflict(
const char* old_name,
const char* new_name);
46 static fieldType_t allocateFieldEnum();
52 static std::map<fieldType_t, StatisticFieldTypeBase*>* fields_;
53 static fieldType_t enum_counter_;
63 checkRegisterConflict(field_name_, name);
64 checkRegisterConflict(short_name_, short_name);
66 short_name_ = short_name;
67 if ( field_enum_ == 0 ) {
68 field_enum_ = allocateFieldEnum();
72 short_name_ = short_name;
73 addField(field_enum_,
this);
76 static const char* getFieldName() {
return field_name_; }
78 static const char* getShortName() {
return short_name_; }
80 static fieldType_t id() {
return field_enum_; }
82 const char* fieldName()
const override {
return getFieldName(); }
84 const char* shortName()
const override {
return getShortName(); }
87 static Statistics::fieldType_t field_enum_;
88 static const char* field_name_;
89 static const char* short_name_;
101 using fieldType_t = ::SST::Statistics::fieldType_t;
102 using fieldHandle_t = int32_t;
110 StatisticFieldInfo(
const char* stat_name,
const char* field_name, fieldType_t field_type);
114 inline const std::string&
getStatName()
const {
return stat_name_; }
138 static const char* getFieldTypeShortName(fieldType_t type)
140 return StatisticFieldTypeBase::getField(type)->shortName();
143 static const char* getFieldTypeFullName(fieldType_t type)
145 return StatisticFieldTypeBase::getField(type)->fieldName();
148 template <
typename T>
149 static fieldType_t getFieldTypeFromTemplate()
151 return StatisticFieldType<T>::id();
158 std::string stat_name_;
159 std::string field_name_;
160 fieldType_t field_type_;
161 fieldHandle_t field_handle_;
166 #endif // SST_CORE_STATAPI_STATFIELDINFO_H bool operator==(StatisticFieldInfo &field_info_1)
Compare two field info structures.
Definition: statfieldinfo.cc:36
The class for representing Statistic Output Fields.
Definition: statfieldinfo.h:98
const std::string & getStatName() const
Return the statistic name related to this field info.
Definition: statfieldinfo.h:114
fieldHandle_t getFieldHandle()
Get the field handle.
Definition: statfieldinfo.h:136
std::string getFieldUniqueName() const
Return the field type related to this field info.
Definition: statfieldinfo.cc:42
void setFieldHandle(fieldHandle_t handle)
Set the field handle.
Definition: statfieldinfo.h:131
fieldType_t getFieldType() const
Return the field type related to this field info.
Definition: statfieldinfo.h:118
const std::string & getFieldName() const
Return the field name related to this field info.
Definition: statfieldinfo.h:116
Definition: statfieldinfo.h:31
Definition: statfieldinfo.h:57
Definition: elementinfo.h:44
StatisticFieldInfo(const char *stat_name, const char *field_name, fieldType_t field_type)
Construct a StatisticFieldInfo.
Definition: statfieldinfo.cc:27