# BasicDynamicClassNodeBase.h

Go to the documentation of this file.

    00001 /*******************************************************************\
    00002
    00003               Copyright (C) 2003 Joseph Coffland
    00004
    00005     This program is free software; you can redistribute it and/or
    00006      modify it under the terms of the GNU General Public License
    00007     as published by the Free Software Foundation; either version 2
    00008         of the License, or (at your option) any later version.
    00009
    00010    This program is distributed in the hope that it will be useful,
    00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
    00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00013              GNU General Public License for more details.
    00014
    00015   You should have received a copy of the GNU General Public License
    00016      along with this program; if not, write to the Free Software
    00017       Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
    00018                            02111-1307, USA.
    00019
    00020             For information regarding this software email
    00021                    jcofflan@users.sourceforge.net
    00022
    00023 \*******************************************************************/
    00024
    00025 #ifndef BASICDYNAMICCLASSNODEBASE_H
    00026 #define BASICDYNAMICCLASSNODEBASE_H
    00027
    00028 class BasicDynamicClassFactory;
    00029
    00030
    00037 class BasicDynamicClassNodeBase {
    00038 protected:
    00039   BasicDynamicClassFactory *factory;
    00040   unsigned int offset;
    00041
    00042 public:
    00043   BasicDynamicClassNodeBase() : factory(0), offset(0) {}
    00044
    00048   virtual unsigned int getSize() const = 0;
    00049
    00053   virtual void _init(void *x) = 0;
    00054
    00062   void *getNode(const void *x) const;
    00063
    00071   void registerNode(BasicDynamicClassFactory *factory);
    00072
    00073 protected:
    00080   void setOffset(const unsigned int offset) {this->offset = offset;}
    00081
    00082   virtual ~BasicDynamicClassNodeBase() {}
    00083
    00084   friend class BasicDynamicClassFactory;
    00085 };
    00086
    00087 #endif