/data3/calcul/jacquem/working_dir/Micromegas/micromegasFrameWork/lcio/src/cpp/src/SIO/SIOObjectHandler.cc

Go to the documentation of this file.
00001 #include "SIO/SIOObjectHandler.h"
00002 #include "SIO/LCSIO.h"
00003 
00004 #include "EVENT/LCIO.h"
00005 #include "SIO_functions.h"
00006 #include "SIO/SIOLCParameters.h"
00007 
00008 
00009 using namespace EVENT ;
00010 // using namespace IMPL ;
00011 // using namespace IOIMPL ;
00012 
00013 namespace SIO{
00014 
00015 
00016   unsigned int SIOObjectHandler::init( SIO_stream* stream,  
00017                                        SIO_operation op, 
00018                                        EVENT::LCCollection* col , 
00019                                        unsigned int vers ) {
00020 
00021     unsigned int status ; 
00022     
00023     
00024     if( op == SIO_OP_READ ) {
00025 
00026 
00027       SIO_DATA( stream ,  &_flag , 1  ) ;
00028       
00029       if( vers > SIO_VERSION_ENCODE( 1, 1)   ) 
00030         SIOLCParameters::read( stream ,  col->parameters() , vers ) ;
00031       
00032       col->setFlag( _flag ) ;
00033       _vers = vers ;
00034 
00035     } 
00036 
00037     else if( op == SIO_OP_WRITE ) {
00038       
00039 
00040       _flag = col->getFlag() ;
00041 
00042       LCSIO_WRITE( stream, _flag  ) ;
00043       SIOLCParameters::write( stream , col->getParameters() ) ;
00044 
00045       _vers = vers ;  // not really needed !?
00046 
00047     }
00048     return ( SIO_BLOCK_SUCCESS ) ;
00049   }
00050   
00051   unsigned int SIOObjectHandler::readBase( SIO_stream* stream, EVENT::LCObject** objP ) {
00052 
00053     if( _flag & ( 1 << LCCollection::BITSubset ) ){
00054 
00055       int status ;
00056       // we only read the pointer 
00057       SIO_PNTR( stream , objP  ) ;
00058       
00059       return status ;
00060 
00061     } else {
00062 
00063       return  read( stream, objP ) ;
00064     }
00065 
00066   }
00067   
00068   unsigned int SIOObjectHandler::writeBase(SIO_stream* stream, const EVENT::LCObject* obj ) {
00069 
00070     if( _flag & ( 1 << LCCollection::BITSubset ) ){
00071   
00072       int status ;
00073 
00074       // we only write the pointer
00075       const EVENT::LCObject* objLocal = obj ; 
00076 
00077       SIO_PNTR( stream , &objLocal ) ;
00078       return status ;
00079  
00080     } else {
00081 
00082       return  write( stream, obj ) ;
00083     }
00084   }
00085   
00086 }

Generated on Mon Jan 7 13:15:21 2013 for MicromegasFramework by  doxygen 1.4.7