CEL

Public API Reference

physicallayer/facttmpl.h

00001 /*
00002     Crystal Space Entity Layer
00003     Copyright (C) 2001 by Jorrit Tyberghein
00004     This file was written by Matze Braun <[email protected]>
00005   
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010   
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015   
00016     You should have received a copy of the GNU Library General Public
00017     License along with this library; if not, write to the Free
00018     Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00019 */
00020 
00021 #ifndef __FACTTMPL_H__
00022 #define __FACTTMPL_H__
00023 
00029 #define CEL_DECLARE_FACTORY(name)                                           \
00030 class celPf##name : public iCelPropertyClassFactory, public iComponent      \
00031 {                                                                           \
00032 private:                                                                    \
00033   iObjectRegistry* object_reg;                                              \
00034                                                                             \
00035 public:                                                                     \
00036   celPf##name (iBase* parent);                                              \
00037   virtual ~celPf##name ();                                                  \
00038   bool Initialize (iObjectRegistry* object_reg);                            \
00039   SCF_DECLARE_IBASE;                                                        \
00040   virtual const char* GetName() const;                                      \
00041   virtual csPtr<iCelPropertyClass> CreatePropertyClass ();                  \
00042 };
00043 
00052 #define CEL_IMPLEMENT_FACTORY(name, strname)                                \
00053 SCF_IMPLEMENT_FACTORY (celPf##name)                                         \
00054 SCF_IMPLEMENT_IBASE (celPf##name)                                           \
00055   SCF_IMPLEMENTS_INTERFACE (iCelPropertyClassFactory)                       \
00056   SCF_IMPLEMENTS_INTERFACE (iComponent)                                     \
00057 SCF_IMPLEMENT_IBASE_END                                                     \
00058 celPf##name::celPf##name (iBase *parent)                                    \
00059 {                                                                           \
00060   SCF_CONSTRUCT_IBASE (parent);                                             \
00061 }                                                                           \
00062 celPf##name::~celPf##name()                                                 \
00063 {                                                                           \
00064   SCF_DESTRUCT_IBASE ();                                                    \
00065 }                                                                           \
00066 bool celPf##name::Initialize (iObjectRegistry* object_reg)                  \
00067 {                                                                           \
00068   celPf##name::object_reg = object_reg;                                     \
00069   csRef<iCelPlLayer> pl = csQueryRegistry<iCelPlLayer> (object_reg);        \
00070   if (!pl) return false;                                                    \
00071   pl->RegisterPropertyClassFactory(this);                                   \
00072   return true;                                                              \
00073 }                                                                           \
00074 const char* celPf##name::GetName() const                                    \
00075 {                                                                           \
00076   return strname;                                                           \
00077 }                                                                           \
00078 csPtr<iCelPropertyClass> celPf##name::CreatePropertyClass()                 \
00079 {                                                                           \
00080   return csPtr<iCelPropertyClass> (new celPc##name (object_reg));           \
00081 }                                                                           \
00082 
00083 #endif
00084 

Generated for CEL: Crystal Entity Layer by doxygen 1.4.7