BranchID

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
#ifndef DataFormats_Provenance_BranchID_h
#define DataFormats_Provenance_BranchID_h

/*----------------------------------------------------------------------
  
BranchID: A unique identifier for each branch.

----------------------------------------------------------------------*/

#include <iosfwd>
#include <string>

namespace edm {
  class BranchID {
  public:
    typedef unsigned int value_type;
    BranchID() : id_(0) {}
    explicit BranchID(std::string const& branchName) : id_(toID(branchName)) {}
    explicit BranchID(value_type theID) : id_(theID) {}
    void setID(std::string const& branchName) { id_ = toID(branchName); }
    unsigned int id() const { return id_; }
    bool isValid() const { return id_ != 0; }

    bool operator<(BranchID const& rh) const { return id_ < rh.id_; }
    bool operator>(BranchID const& rh) const { return id_ > rh.id_; }
    bool operator==(BranchID const& rh) const { return id_ == rh.id_; }
    bool operator!=(BranchID const& rh) const { return id_ != rh.id_; }

  private:
    static value_type toID(std::string const& branchName);
    value_type id_;
  };

  std::ostream& operator<<(std::ostream& os, BranchID const& id);
}  // namespace edm
#endif