OSGAlgorithmBase.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002  *                                OpenSG                                     *
00003  *                                                                           *
00004  *                                                                           *
00005  *               Copyright (C) 2000-2006 by the OpenSG Forum                 *
00006  *                                                                           *
00007  *                            www.opensg.org                                 *
00008  *                                                                           *
00009  *   contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de          *
00010  *                                                                           *
00011 \*---------------------------------------------------------------------------*/
00012 /*---------------------------------------------------------------------------*\
00013  *                                License                                    *
00014  *                                                                           *
00015  * This library is free software; you can redistribute it and/or modify it   *
00016  * under the terms of the GNU Library General Public License as published    *
00017  * by the Free Software Foundation, version 2.                               *
00018  *                                                                           *
00019  * This library is distributed in the hope that it will be useful, but       *
00020  * WITHOUT ANY WARRANTY; without even the implied warranty of                *
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
00022  * Library General Public License for more details.                          *
00023  *                                                                           *
00024  * You should have received a copy of the GNU Library General Public         *
00025  * License along with this library; if not, write to the Free Software       *
00026  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 *
00027  *                                                                           *
00028 \*---------------------------------------------------------------------------*/
00029 /*---------------------------------------------------------------------------*\
00030  *                                Changes                                    *
00031  *                                                                           *
00032  *                                                                           *
00033  *                                                                           *
00034  *                                                                           *
00035  *                                                                           *
00036  *                                                                           *
00037 \*---------------------------------------------------------------------------*/
00038
00039 /*****************************************************************************\
00040  *****************************************************************************
00041  **                                                                         **
00042  **                  This file is automatically generated.                  **
00043  **                                                                         **
00044  **          Any changes made to this file WILL be lost when it is          **
00045  **           regenerated, which can become necessary at any time.          **
00046  **                                                                         **
00047  **     Do not change this file, changes should be done in the derived      **
00048  **     class Algorithm
00049  **                                                                         **
00050  *****************************************************************************
00051 \*****************************************************************************/
00052
00053
00054 #ifndef _OSGALGORITHMBASE_H_
00055 #define _OSGALGORITHMBASE_H_
00056 #ifdef __sgi
00057 #pragma once
00058 #endif
00059 
00060
00061 #include "OSGConfig.h"
00062 #include "OSGGroupDef.h"
00063
00064 //#include "OSGBaseTypes.h"
00065
00066 #include "OSGAttachmentContainer.h" // Parent
00067
00068
00069 #include "OSGAlgorithmFields.h"
00070
00071 OSG_BEGIN_NAMESPACE
00072
00073 class Algorithm;
00074
00076
00077 class OSG_GROUP_DLLMAPPING AlgorithmBase : public AttachmentContainer
00078 {
00079   public:
00080
00081     typedef AttachmentContainer Inherited;
00082     typedef AttachmentContainer ParentContainer;
00083
00084     typedef Inherited::TypeObject TypeObject;
00085     typedef TypeObject::InitPhase InitPhase;
00086
00087     OSG_GEN_INTERNALPTR(Algorithm);
00088
00089     /*==========================  PUBLIC  =================================*/
00090
00091   public:
00092
00093
00094     /*---------------------------------------------------------------------*/
00098     static FieldContainerType &getClassType   (void);
00099     static UInt32              getClassTypeId (void);
00100     static UInt16              getClassGroupId(void);
00101
00103     /*---------------------------------------------------------------------*/
00107     virtual       FieldContainerType &getType         (void);
00108     virtual const FieldContainerType &getType         (void) const;
00109
00110     virtual       UInt32              getContainerSize(void) const;
00111
00113     /*---------------------------------------------------------------------*/
00117     virtual UInt32 getBinSize (ConstFieldMaskArg  whichField);
00118     virtual void   copyToBin  (BinaryDataHandler &pMem,
00119                                ConstFieldMaskArg  whichField);
00120     virtual void   copyFromBin(BinaryDataHandler &pMem,
00121                                ConstFieldMaskArg  whichField);
00122
00123
00125     /*=========================  PROTECTED  ===============================*/
00126
00127   protected:
00128
00129     static TypeObject _type;
00130
00131     static       void   classDescInserter(TypeObject &oType);
00132     static const Char8 *getClassname     (void             );
00133
00134     /*---------------------------------------------------------------------*/
00138     AlgorithmBase(void);
00139     AlgorithmBase(const AlgorithmBase &source);
00140
00142     /*---------------------------------------------------------------------*/
00146     virtual ~AlgorithmBase(void);
00147
00149     /*---------------------------------------------------------------------*/
00155     /*---------------------------------------------------------------------*/
00161     /*---------------------------------------------------------------------*/
00165 #ifdef OSG_MT_CPTR_ASPECT
00166     virtual void execSyncV(      FieldContainer    &oFrom,
00167                                  ConstFieldMaskArg  whichField,
00168                                  AspectOffsetStore &oOffsets,
00169                                  ConstFieldMaskArg  syncMode  ,
00170                            const UInt32             uiSyncInfo);
00171
00172             void execSync (      AlgorithmBase *pFrom,
00173                                  ConstFieldMaskArg  whichField,
00174                                  AspectOffsetStore &oOffsets,
00175                                  ConstFieldMaskArg  syncMode  ,
00176                            const UInt32             uiSyncInfo);
00177 #endif
00178 
00180     /*---------------------------------------------------------------------*/
00185     /*---------------------------------------------------------------------*/
00190     /*---------------------------------------------------------------------*/
00194     /*---------------------------------------------------------------------*/
00198     virtual void resolveLinks(void);
00199
00201     /*==========================  PRIVATE  ================================*/
00202
00203   private:
00204     /*---------------------------------------------------------------------*/
00205
00206     // prohibit default functions (move to 'public' if you need one)
00207     void operator =(const AlgorithmBase &source);
00208 };
00209
00210 typedef AlgorithmBase *AlgorithmBaseP;
00211
00212 OSG_END_NAMESPACE
00213
00214 #endif /* _OSGALGORITHMBASE_H_ */