Horus Doc || C++ Reference || Class Overview   Pixels   Images   Detector   Geometry   Registry || Doxygen's quick Index  

VxGrBxBase.h

00001 /*
00002  *
00003  *  Copyright (c) 2001, TNO TPD, The Netherlands.
00004  *  All rights reserved. No part of this software may be handed to or used by persons 
00005  *  or organisation outside Kenniscentrum Watergraafsmeer (UvA-ISIS, TNO TPD) without 
00006  *  the written permission of TNO TPD.
00007  *
00008  *  Author(s):
00009  *      Jan Baan (baan@tpd.tno.nl)
00010  *      Jeroen Vendrig
00011  *
00012  *
00013  */
00014 
00015 #ifndef VxGrBxBase_h
00016 #define VxGrBxBase_h
00017 
00018 #include "VxValue.h"
00019 #include "VxFrmProcRep.h"
00020 #include "VxSegmentList.h"
00021 
00022 class VxGrBxBase{
00023 public:
00024 
00026                             ~VxGrBxBase();
00027 
00029     int                     execute(int framenr);
00030 
00032     int                     toExecute();
00033     
00034     HxString                name() const;
00035 
00037     VxSegmentList           getdata() const;
00038 
00040     virtual VxValue         getOutput(int framenr) = 0;
00041 
00043     virtual HxString        outputClassName() = 0;
00044 
00046     virtual VxGrBxBase*     clone() = 0;
00047 
00048     virtual ostream&        put(ostream& os) = 0;
00049 
00050 protected:
00052             VxGrBxBase(HxString name, VxSegmentList procList, int sizeBuf);
00053 
00055             VxGrBxBase(const VxGrBxBase& rhs);
00056 
00057     struct VxGrBxBaseRep{
00059         VxSegmentList           procList;
00060         HxString                nameOut;
00061 
00062     
00063         VxSegmentList           output;
00064         VxFrmProcRep<VxValue>   frmProc;
00065         
00066         int                     refCount;
00067         VxGrBxBaseRep()         { refCount = 1;}        
00068     };
00069 
00070     VxGrBxBaseRep*          _dataBase;
00071     
00072 };
00073 
00074     
00075 
00076 inline 
00077 VxGrBxBase::VxGrBxBase(HxString name, VxSegmentList procList, int sizeBuf)  
00078 {
00079 
00080     _dataBase = new VxGrBxBaseRep();
00081     _dataBase->procList  = procList; 
00082     _dataBase->nameOut   = name; 
00083     _dataBase->frmProc.setSize(sizeBuf);
00084 }
00085 
00086 
00087 inline 
00088 VxGrBxBase::VxGrBxBase(const VxGrBxBase& rhs)
00089     : _dataBase(rhs._dataBase)
00090 {
00091     _dataBase->refCount++;
00092 }
00093 
00094 inline
00095 VxGrBxBase::~VxGrBxBase()
00096 {
00097     _dataBase->refCount--;
00098     if (_dataBase->refCount == 0) 
00099     {
00100         delete _dataBase;
00101     }
00102 }
00103 
00104 inline int
00105 VxGrBxBase::toExecute() {
00106     return (_dataBase->procList.size()!=0);
00107 }
00108 
00109 inline HxString
00110 VxGrBxBase::name() const {
00111     return _dataBase->nameOut;
00112 }
00113 
00114 
00115 #endif

Generated on Mon Jan 27 15:48:51 2003 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001