00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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