File indexing completed on 2024-04-06 11:56:19
0001
0002
0003 #ifndef GENERS_ITEMDESCRIPTOR_HH_
0004 #define GENERS_ITEMDESCRIPTOR_HH_
0005
0006 #include <string>
0007 #include <typeinfo>
0008 #include <utility>
0009
0010 #include "Alignment/Geners/interface/ClassId.hh"
0011
0012 namespace gs {
0013 class ItemDescriptor {
0014 public:
0015 ItemDescriptor();
0016 ItemDescriptor(const ClassId &classId, const char *ioPrototype, const char *name, const char *category);
0017 inline virtual ~ItemDescriptor() {}
0018
0019 inline const ClassId &type() const { return classId_; }
0020 inline const std::string &ioPrototype() const { return ioProto_; }
0021 inline const std::string &name() const { return nameCat_.first; }
0022 inline const std::string &category() const { return nameCat_.second; }
0023 inline const std::pair<std::string, std::string> &nameAndCategory() const { return nameCat_; }
0024
0025 inline bool operator==(const ItemDescriptor &r) const { return (typeid(*this) == typeid(r)) && this->isEqual(r); }
0026 inline bool operator!=(const ItemDescriptor &r) const { return !(*this == r); }
0027
0028
0029
0030
0031 bool isSameClassIdandIO(const ItemDescriptor &r) const;
0032
0033
0034
0035 inline bool isSameIOPrototype(const ItemDescriptor &r) const { return ioProto_ == r.ioProto_; }
0036
0037 protected:
0038 virtual bool isEqual(const ItemDescriptor &) const;
0039
0040 private:
0041 ClassId classId_;
0042 std::string ioProto_;
0043 std::pair<std::string, std::string> nameCat_;
0044 };
0045 }
0046
0047 #endif