00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef SST_ELEMENT_H
00013 #define SST_ELEMENT_H
00014
00015 #include <sst/core/component.h>
00016
00017 namespace SST {
00018 class Introspector;
00019
00020 typedef Component* (*componentAllocate)(ComponentId_t, Component::Params_t&);
00021 typedef Introspector* (*introspectorAllocate)(Component::Params_t&);
00022 typedef void (*eventInitialize)(void);
00023
00024 struct ElementInfoComponent {
00025 const char *name;
00026 const char *description;
00027 void (*printHelp)(FILE *output);
00028 componentAllocate alloc;
00029 };
00030
00031 struct ElementInfoIntrospector {
00032 const char *name;
00033 const char *description;
00034 void (*printHelp)(FILE *output);
00035 introspectorAllocate alloc;
00036 };
00037
00038 struct ElementInfoEvent {
00039 const char *name;
00040 const char *description;
00041 void (*printHelp)(FILE *output);
00042 eventInitialize init;
00043 };
00044
00045 struct ElementLibraryInfo {
00046 const char *name;
00047 const char *description;
00048 const struct ElementInfoComponent* components;
00049 const struct ElementInfoEvent* events;
00050 const struct ElementInfoIntrospector* introspectors;
00051 };
00052 };
00053
00054 #endif // SST_ELEMENT_H