00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef SST_CORE_EXIT_H
00014 #define SST_CORE_EXIT_H
00015
00016 #include <set>
00017
00018 #include "sst/core/sst_types.h"
00019 #include "sst/core/action.h"
00020
00021 namespace SST{
00022
00023 #define _EXIT_DBG( fmt, args...) __DBG( DBG_EXIT, Exit, fmt, ## args )
00024
00025 class Simulation;
00026 class TimeConverter;
00027
00028 class Exit : public Action {
00029 public:
00030
00031
00032
00033
00034
00035
00036
00037 Exit( Simulation* sim, TimeConverter* period, bool single_rank );
00038
00039 bool refInc( ComponentId_t );
00040 bool refDec( ComponentId_t );
00041
00042 private:
00043 Exit() { }
00044 Exit(const Exit&);
00045 void operator=(Exit const&);
00046
00047
00048 void execute(void);
00049
00050
00051 unsigned int m_refCount;
00052 TimeConverter* m_period;
00053 std::set<ComponentId_t> m_idSet;
00054
00055 bool single_rank;
00056
00057 friend class boost::serialization::access;
00058 template<class Archive>
00059 void serialize(Archive & ar, const unsigned int version);
00060 };
00061
00062 }
00063
00064 BOOST_CLASS_EXPORT_KEY(SST::Exit)
00065
00066 #endif // SST_EXIT_H