00001 #ifndef CASTOR_SPICA_INDENTITY_H 00002 #define CASTOR_SPICA_INDENTITY_H 1 00003 00004 #include <string> 00005 00006 namespace castor { namespace spica { 00007 00008 typedef std::string Identifier; 00009 typedef unsigned int SpicaId; 00010 00011 struct Identity { 00012 00013 protected: 00014 00015 SpicaId id; 00016 00017 std::string concept; 00018 std::string rep; 00019 00020 std::string name; 00021 00022 // typedef enum { mode_and, mode_or } Mode; 00023 00024 // Mode mode; 00025 00026 public: 00027 00028 Identity(); 00029 Identity(const Identifier identifier); 00030 Identity(SpicaId id, const std::string concept, const std::string rep, const std::string name); 00031 Identity(const Identity &other); 00032 00033 bool isMatch(const Identifier other) const; 00034 bool isMatch(const Identity &other) const; 00035 00036 bool hasId() const; 00037 SpicaId getId() const; 00038 00039 bool hasConcept() const; 00040 const std::string getConcept() const; 00041 00042 bool hasRep() const; 00043 const std::string getRep() const; 00044 00045 bool hasName() const; 00046 const std::string getName() const; 00047 00048 // Mode getMode() const; 00049 // void setMode(Mode mode); 00050 00051 std::string str() const; 00052 00053 Identity &operator=(const Identity &other); 00054 Identity &operator=(const Identifier other); 00055 00056 friend bool operator==(const Identifier &lhs, 00057 const Identifier &rhs); 00058 00059 friend bool operator<(const Identity &one, 00060 const Identity &other); 00061 }; 00062 00063 } } 00064 00065 #endif /* CASTOR_SPICA_INDENTITY_H */ 00066