CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/CondCore/ORA/interface/OId.h

Go to the documentation of this file.
00001 #ifndef INCLUDE_ORA_OID_H
00002 #define INCLUDE_ORA_OID_H
00003 
00004 #include <string>
00005 
00006 namespace ora {
00007 
00008   class OId {
00009 
00010     public:
00011     static bool isOId( const std::string& input );
00012   
00013     public:
00014 
00015     OId();
00016 
00017     explicit OId( const std::pair<int,int>& oidPair );
00018 
00019     OId( int contId, int itemId );
00020 
00021     OId( const OId& rhs );
00022 
00023     OId& operator=( const OId& rhs );
00024 
00025     bool operator==( const OId& rhs ) const;
00026 
00027     bool operator!=( const OId& rhs ) const;
00028 
00029     int containerId() const;
00030 
00031     int itemId() const;
00032 
00033     bool fromString( const std::string& s );
00034 
00035     std::string toString() const;
00036 
00037     void toOutputStream( std::ostream& os ) const;     
00038 
00039     void reset();
00040 
00041     bool isInvalid() const;
00042 
00043     std::pair<int,int> toPair() const;
00044 
00045     private:
00046     int m_containerId;
00047     int m_itemId;
00048   };
00049 
00050   class ITokenParser {
00051     public:
00052     virtual ~ITokenParser(){
00053     }
00054 
00055     virtual OId parse( const std::string& poolToken ) = 0;
00056     virtual std::string className( const std::string& poolToken ) = 0;
00057   };
00058 
00059   class ITokenWriter {
00060     public:
00061     virtual ~ITokenWriter(){
00062     }
00063 
00064     virtual std::string write( const OId& oid ) = 0;
00065   };
00066 
00067 }
00068  
00069 inline std::ostream& operator << (std::ostream& os, const ora::OId& oid ){
00070   oid.toOutputStream(os);
00071   return os;
00072 }
00073 
00074 #endif
00075 
00076