CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/CondCore/ORA/src/IArrayHandler.h

Go to the documentation of this file.
00001 #ifndef INCLUDE_ORA_IARRAYHANDLER_H
00002 #define INCLUDE_ORA_IARRAYHANDLER_H
00003 
00004 #include <cstddef>
00005 
00006 namespace Reflex {
00007   class Type;
00008 }
00009 
00010 namespace ora {
00011 
00012     class IArrayIteratorHandler {
00013     public:
00015       virtual ~IArrayIteratorHandler() {}
00016 
00018       virtual void increment() = 0;
00019 
00021       virtual void* object() = 0;
00022 
00024       virtual Reflex::Type& returnType() = 0;
00025     };
00026 
00027 
00028     class IArrayHandler {
00029 
00030     public:
00032       virtual ~IArrayHandler() {}
00033 
00035       virtual size_t size( const void* address ) = 0;
00036 
00038       virtual size_t startElementIndex( const void* ){ return 0; };
00039 
00041       virtual IArrayIteratorHandler* iterate( const void* address ) = 0;
00042 
00044       virtual void appendNewElement( void* address, void* data ) = 0;
00045 
00047       virtual void clear( const void* address ) = 0;
00048 
00050       virtual bool isAssociative() const { return false; }
00051 
00053       virtual size_t persistentSize( const void* address ){ return size(address);}
00054 
00056       virtual void finalize( void* ){ }
00057 
00059       virtual Reflex::Type& iteratorReturnType() = 0;
00060     };
00061 
00062 }
00063 
00064 
00065 #endif