12 #ifndef SST_CORE_ELI_PARAMS_INFO_H
13 #define SST_CORE_ELI_PARAMS_INFO_H
15 #include "sst/core/eli/elibase.h"
16 #include "sst/core/params.h"
24 template <
class T,
class Enable =
void>
27 static const std::vector<SST::ElementInfoParam>&
get()
29 static std::vector<SST::ElementInfoParam> var = {};
37 static const std::vector<SST::ElementInfoParam>&
get() {
return T::ELI_getParams(); }
43 const std::vector<ElementInfoParam>& getValidParams()
const {
return params_; }
45 void toString(std::ostream& os)
const;
47 template <
class XMLNode>
48 void outputXML(XMLNode* node)
const
55 auto* XMLParameterElement =
new XMLNode(
"Parameter");
56 XMLParameterElement->SetAttribute(
"Index", idx);
57 XMLParameterElement->SetAttribute(
"Name", param.name);
58 XMLParameterElement->SetAttribute(
"Description", param.description ? param.description :
"none");
59 XMLParameterElement->SetAttribute(
"Default", param.defaultValue ? param.defaultValue :
"none");
60 node->LinkEndChild(XMLParameterElement);
78 std::vector<ElementInfoParam> params_;
85 #define SST_ELI_DOCUMENT_PARAMS(...) \
86 static const std::vector<SST::ElementInfoParam>& ELI_getParams() \
88 static std::vector<SST::ElementInfoParam> var = { __VA_ARGS__ }; \
89 auto parent = SST::ELI::GetParams< \
90 std::conditional<(__EliDerivedLevel > __EliBaseLevel), __LocalEliBase, __ParentEliBase>::type>::get(); \
91 SST::ELI::combineEliInfo(var, parent); \
96 #define SST_ELI_DELETE_PARAM(param) \
98 param, nullptr, nullptr \
101 #endif // SST_CORE_ELI_PARAMS_INFO_H
Definition: paramsInfo.h:25
Definition: elibase.h:114
Definition: paramsInfo.h:40
Describes Parameters to a Component.
Definition: elibase.h:47
std::set< key_type, KeyCompare > KeySet_t
Definition: params.h:233