CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DDName.h
Go to the documentation of this file.
1 #ifndef DETECTOR_DESCRIPTION_CORE_DDNAME_H
2 #define DETECTOR_DESCRIPTION_CORE_DDNAME_H
3 
4 #include <iosfwd>
5 #include <map>
6 #include <string>
7 #include <utility>
8 #include <vector>
9 
10 class DDCurrentNamespace;
11 
13 
15 class DDName {
16 public:
17  using id_type = int;
18  using Registry = std::map<std::pair<std::string, std::string>, id_type>;
19  using IdToName = std::vector<Registry::const_iterator>;
20 
22  DDName(const std::string& name, const std::string& ns);
23 
25  DDName(const std::string& name);
26  DDName(const char* name);
27  DDName(const char* name, const char* ns);
28 
29  explicit DDName();
30 
32  const std::string& name() const;
33 
35  const std::string& ns() const;
36 
40  const std::string fullname() const { return ns() + ":" + name(); }
41 
42  id_type id() const { return id_; }
43 
44  bool operator<(const DDName& rhs) const { return id_ < rhs.id_; }
45  bool operator==(const DDName& rhs) const { return id_ == rhs.id_; }
46 
47 private:
48  id_type id_;
49 
50  static Registry::iterator registerName(const std::pair<std::string, std::string>& s);
51 };
52 
53 std::ostream& operator<<(std::ostream& os, const DDName& n);
54 
55 #endif
id_type id() const
Definition: DDName.h:42
std::map< std::pair< std::string, std::string >, id_type > Registry
Definition: DDName.h:18
int id_type
Definition: DDName.h:17
const std::string & ns() const
Returns the namespace.
Definition: DDName.cc:51
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
DDName()
Definition: DDName.cc:38
std::ostream & operator<<(std::ostream &os, const DDName &n)
Definition: DDName.cc:10
const std::string fullname() const
Definition: DDName.h:40
bool operator<(const DDName &rhs) const
Definition: DDName.h:44
std::vector< Registry::const_iterator > IdToName
Definition: DDName.h:19
id_type id_
Definition: DDName.h:48
bool operator==(const DDName &rhs) const
Definition: DDName.h:45
static Registry::iterator registerName(const std::pair< std::string, std::string > &s)
Definition: DDName.cc:62
const std::string & name() const
Returns the name.
Definition: DDName.cc:40