Object.h

Go to the documentation of this file.
00001 /*
00002 Copyright (C) 2003-2004 The Pentagram team
00003 
00004 This program is free software; you can redistribute it and/or
00005 modify it under the terms of the GNU General Public License
00006 as published by the Free Software Foundation; either version 2
00007 of the License, or (at your option) any later version.
00008 
00009 This program is distributed in the hope that it will be useful,
00010 but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012 GNU General Public License for more details.
00013 
00014 You should have received a copy of the GNU General Public License
00015 along with this program; if not, write to the Free Software
00016 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00017 */
00018 
00019 #ifndef OBJECT_H
00020 #define OBJECT_H
00021 
00022 class Usecode;
00023 class ODataSource;
00024 class IDataSource;
00025 
00026 class Object
00027 {
00028 public:
00029         Object() : objid(0xFFFF) {}
00030         virtual ~Object();
00031 
00032         // p_dynamic_cast stuff
00033         ENABLE_RUNTIME_CLASSTYPE();
00034 
00035         // memory pooling stuff
00036         ENABLE_CUSTOM_MEMORY_ALLOCATION();
00037 
00039         inline ObjId getObjId() const { return objid; }
00040 
00043         virtual ObjId assignObjId();
00044 
00046         virtual void clearObjId();
00047 
00049         virtual void dumpInfo();
00050 
00052         void save(ODataSource* ods);
00053 
00061         ProcId callUsecode(uint16 classid, uint16 offset,
00062                                            const uint8* args=0, int argsize=0);
00063 
00064         bool loadData(IDataSource* ids, uint32 version);
00065 
00066 protected:
00068         void writeObjectHeader(ODataSource* ods);
00069 
00071         virtual void saveData(ODataSource* ods);
00072 
00073         ObjId objid;
00074 };
00075 
00076 #endif

Generated on Fri Jul 27 22:27:27 2007 for pentagram by  doxygen 1.4.7