00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef SST_LINKMAP_H
00014 #define SST_LINKMAP_H
00015
00016 #include <string>
00017 #include <map>
00018
00019 #include <sst/core/sst_types.h>
00020 #include <sst/core/link.h>
00021
00022 namespace SST {
00023
00024 #define _LM_DBG( fmt, args...) __DBG( DBG_LINKMAP, LinkMap, fmt, ## args )
00025
00026 class Link;
00027
00028 class LinkMap {
00029
00030 private:
00031 std::map<std::string,Link*> linkMap;
00032
00033 public:
00034 LinkMap() {}
00035 ~LinkMap() {}
00036
00037 void insertLink(std::string name, Link* link) {
00038 linkMap.insert(std::pair<std::string,Link*>(name,link));
00039 }
00040
00041 Link* getLink(std::string name) {
00042 std::map<std::string,Link*>::iterator it = linkMap.find(name);
00043 if ( it == linkMap.end() ) return NULL;
00044 else return it->second;
00045 }
00046
00047
00048 std::map<std::string,Link*>& getLinkMap() {
00049 return linkMap;
00050 }
00051
00052 friend class boost::serialization::access;
00053 template<class Archive>
00054 void serialize(Archive & ar, const unsigned int version )
00055 {
00056 ar & BOOST_SERIALIZATION_NVP(linkMap);
00057 }
00058 };
00059
00060 }
00061
00062 BOOST_CLASS_EXPORT_KEY(SST::LinkMap)
00063
00064 #endif // SST_LINKMAP_H