Enum.h

00001 /* 
00002    EyeDB Object Database Management System
00003    Copyright (C) 1994-2008 SYSRA
00004    
00005    EyeDB is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Lesser General Public
00007    License as published by the Free Software Foundation; either
00008    version 2.1 of the License, or (at your option) any later version.
00009    
00010    EyeDB 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 GNU
00013    Lesser General Public License for more details.
00014    
00015    You should have received a copy of the GNU Lesser General Public
00016    License along with this library; if not, write to the Free Software
00017    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA 
00018 */
00019 
00020 /*
00021    Author: Eric Viara <viara@sysra.com>
00022 */
00023 
00024 
00025 #ifndef _EYEDB_ENUM_H
00026 #define _EYEDB_ENUM_H
00027 
00028 namespace eyedb {
00029 
00038   class Enum : public Instance {
00039 
00040     // ----------------------------------------------------------------------
00041     // Enum Interface
00042     // ----------------------------------------------------------------------
00043   public:
00049     Enum(Database *db = 0, const Dataspace *dataspace = 0);
00050 
00055     Enum(const Enum &o);
00056 
00062     Enum& operator=(const Enum &o);
00063 
00068     virtual Object *clone() const {return new Enum(*this);}
00069 
00075     Status setValue(Data data);
00076 
00082     Status getValue(Data *data) const;
00083 
00089     Status setValue(unsigned int v);
00090 
00096     Status getValue(unsigned int *v) const;
00097 
00103     Status setValue(const char *name);
00104 
00110     Status getValue(const char **s) const;
00111 
00117     Status setValue(const EnumItem *it);
00118 
00124     Status getValue(const EnumItem **pit) const;
00125 
00126     Status create();
00127     Status update();
00128     Status remove(const RecMode* = RecMode::NoRecurs);
00129 
00137     Status trace(FILE *fd = stdout, unsigned int flags = 0, const RecMode *recmode = RecMode::FullRecurs) const;
00138 
00143     virtual Enum *asEnum() {return this;}
00144 
00149     virtual const Enum *asEnum() const {return this;}
00150 
00151     virtual ~Enum();
00152 
00153     // ----------------------------------------------------------------------
00154     // Enum Private Part
00155     // ----------------------------------------------------------------------
00156   private:
00157     const EnumItem *val;
00158     Status trace_realize(FILE*, int, unsigned int, const RecMode *) const;
00159     virtual void garbage();
00160   };
00161 
00162   class EnumPtr : public InstancePtr {
00163 
00164   public:
00165     EnumPtr(Enum *o = 0) : InstancePtr(o) { }
00166 
00167     Enum *getEnum() {return dynamic_cast<Enum *>(o);}
00168     const Enum *getEnum() const {return dynamic_cast<Enum *>(o);}
00169 
00170     Enum *operator->() {return dynamic_cast<Enum *>(o);}
00171     const Enum *operator->() const {return dynamic_cast<Enum *>(o);}
00172   };
00173 
00174   typedef std::vector<EnumPtr> EnumPtrVector;
00175 
00180 }
00181 
00182 #endif

Generated on Mon Dec 22 18:15:54 2008 for eyedb by  doxygen 1.5.3