12 #ifndef SST_CORE_ELI_SIMPLE_INFO_H
13 #define SST_CORE_ELI_SIMPLE_INFO_H
15 #include "sst/core/eli/elibase.h"
27 template <
int num,
typename InfoType>
36 template <
class T,
int index,
class InfoType>
39 template <
typename F, F>
43 typedef long NotMatch;
48 static Match HasFunction(check<functionsig, &F::ELI_getSimpleInfo>*);
51 static NotMatch HasFunction(...);
54 static bool const value = (
sizeof(HasFunction<T>(0)) ==
sizeof(Match));
59 template <
class T,
int index,
class InfoType>
60 typename std::enable_if<checkForELI_getSimpleInfoFunction<T, index, InfoType>::value,
const InfoType&>::type
61 ELI_templatedGetSimpleInfo()
66 template <
class T,
int index,
class InfoType>
67 typename std::enable_if<not checkForELI_getSimpleInfoFunction<T, index, InfoType>::value,
const InfoType&>::type
68 ELI_templatedGetSimpleInfo()
81 template <
int num,
typename InfoType>
85 const InfoType& getSimpleInfo()
const {
return info_; }
89 ProvidesSimpleInfo(T* UNUSED(t)) : info_(ELI_templatedGetSimpleInfo<T, num, InfoType>())
101 #define SST_ELI_DOCUMENT_SIMPLE_INFO(type, index, ...) \
102 static const type& ELI_getSimpleInfo(SST::ELI::SimpleInfoPlaceHolder<index, type> UNUSED(a)) \
104 static type my_info = { __VA_ARGS__ }; \
Definition: simpleInfo.h:83
Definition: simpleInfo.h:38
Definition: simpleInfo.h:29