// AtlasClidMap.cxx #include "dataset_atlaspool/AtlasClidMap.h" #include #include #include "dataset_id/ContentId.h" using std::string; using std::istringstream; using dset::AtlasClidMap; typedef AtlasClidMap::Name Name; typedef AtlasClidMap::Id Id; typedef std::map NameMap; typedef std::map IdMap; //********************************************************************** // Local definitions. //********************************************************************** namespace { NameMap NAMES; IdMap IDS; int init() { static int stat = 1; if ( stat == 0 ) return stat; stat = 0; // Read file into string. string all; #include "dataset_atlaspool/clid.h" // Loop over entries in the string. istringstream sall(all); while ( sall ) { Id id = 0; Name name = ""; sall >> id; if ( ! sall ) break; sall >> name; assert( id > 0 ); assert( name.size() > 0 ); //std::cout << name << " " << id << std::endl; NAMES[id] = name; IDS[name] = id; ContentId cid = ContentId::private_register_id(id, name.c_str()); //std::cout << cid << std::endl; if ( ! cid.is_valid() ) { std::cerr << "AtlasClidMap::init(): Error registering class " << name << " with ID " << id << std::endl; } else { assert( cid.is_valid() ); assert( cid.index() == id ); assert( cid.name() == name ); assert( cid.key() == "" ); } } return stat; } // Initialize map. // So library load will make map available. int STAT = init(); } //********************************************************************** // Member functions. //********************************************************************** // Return name. AtlasClidMap::Name AtlasClidMap::name(Id id) { init(); NameMap::const_iterator iname = NAMES.find(id); if ( iname == NAMES.end() ) return ""; return iname->second; } //********************************************************************** // Return ID. AtlasClidMap::Id AtlasClidMap::id(Name name) { init(); IdMap::const_iterator iid = IDS.find(name); if ( iid == IDS.end() ) return 0; return iid->second; } //**********************************************************************