12#ifndef SST_CORE_ELI_ATTRIBUTE_INFO_H
13#define SST_CORE_ELI_ATTRIBUTE_INFO_H
15#include "sst/core/eli/elibase.h"
16#include "sst/core/warnmacros.h"
24template <
class T,
class Enable =
void>
27 static const std::vector<SST::ElementInfoAttribute>& get()
29 static std::vector<SST::ElementInfoAttribute> var = {};
37 static const std::vector<SST::ElementInfoAttribute>& get() {
return T::ELI_getAttributes(); }
43 const std::vector<ElementInfoAttribute>& getAttributes()
const {
return attributes_; }
45 void toString(std::ostream& os)
const;
47 template <
class XMLNode>
48 void outputXML(XMLNode* node)
const
55 auto* XMLAttributeElement =
new XMLNode(
"Attribute");
56 XMLAttributeElement->SetAttribute(
"Index", idx);
57 XMLAttributeElement->SetAttribute(
"Name", attribute.name);
58 XMLAttributeElement->SetAttribute(
"Value", attribute.value ? attribute.value :
"none");
59 node->LinkEndChild(XMLAttributeElement);
70 std::vector<ElementInfoAttribute> attributes_;
77#define SST_ELI_DOCUMENT_ATTRIBUTES(...) \
78 static const std::vector<SST::ElementInfoAttribute>& ELI_getAttributes() \
80 static std::vector<SST::ElementInfoAttribute> var = { __VA_ARGS__ }; \
81 auto parent = SST::ELI::GetAttributes< \
82 std::conditional<(__EliDerivedLevel > __EliBaseLevel), __LocalEliBase, __ParentEliBase>::type>::get(); \
83 SST::ELI::combineEliInfo(var, parent); \
88#define SST_ELI_DELETE_ATTRIBUTE(attribute) \
Definition: attributeInfo.h:41
Definition: attributeInfo.h:26
Definition: elibase.h:130