AttrNative.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_ATTR_NATIVE_H
00026 #define _EYEDB_ATTR_NATIVE_H
00027 
00028 namespace eyedb {
00029 
00030   class AttrNative : public Attribute {
00031 
00032     Status (*_getvalue)(const Object *, Data *, int, int, Bool *, Bool, Size *);
00033     Status (*_setvalue)(Object *, Data, int, int);
00034     Status (*_getoid)(const Object *, Oid *oid, int nb, int from);
00035     Status (*_setoid)(Object *, const Oid *, int, int, Bool);
00036     Status cannot(const char *) const;
00037 
00038     int iniCompute(const Database *, int, Data &, Data&) const {return 0;}
00039     Status copy(Object *, Bool) const {return Success;}
00040 
00041   public:
00042 
00043     AttrNative(Class *, Class *, const char *, Bool isRef,
00044                Status (*)(const Object *, Data *, int, int, Bool *, Bool, Size *),
00045                Status (*)(Object *, Data, int, int),
00046                Status (*)(const Object *, Oid *oid, int nb, int from),
00047                Status (*)(Object *, const Oid *, int, int, Bool));
00048 
00049     AttrNative(Class *, Class *, const char *, int dim,
00050                Status (*)(const Object *, Data *, int, int, Bool *, Bool, Size *),
00051                Status (*)(Object *, Data, int, int),
00052                Status (*)(const Object *, Oid *oid, int nb, int from),
00053                Status (*)(Object *, const Oid *, int, int, Bool));
00054     AttrNative(const AttrNative *, const Class *, const Class *, const Class *, int);
00055     Status setOid(Object *, const Oid *, int, int, Bool) const;
00056     Status getOid(const Object *, Oid *oid, int nb, int from) const;
00057     Status setValue(Object *, Data, int, int, Bool) const;
00058     Status getValue(const Object *, Data *, int, int, Bool *) const;
00059     Status getTValue(Database *db, const Oid &objoid,
00060                      Data *data, int nb = 1, int from = 0,
00061                      Bool *isnull = 0, Size *rnb = 0, Offset = 0) const;
00062     Status trace(const Object *, FILE *, int *, unsigned int, const RecMode *) const;
00063     Bool isNative() const {return True;}
00064 
00065     void reportAttrCompSetOid(Offset *offset, Data idr) const;
00066     Status generateCollSetClassMethod_C(Class *, GenContext *,
00067                                         const GenCodeHints &hints,
00068                                         const char *, Bool)
00069     {return Success;}
00070     Status generateCode_C(Class*, const GenCodeHints &,
00071                           GenContext *, GenContext *)
00072     {return Success;}
00073     Status generateClassDesc_C(GenContext *)
00074     {return Success;}
00075 
00076     Status generateBody_C(Class *, GenContext *,
00077                           const GenCodeHints &hints)
00078     {return Success;}
00079     Status generateGetMethod_C(Class *, GenContext *,
00080                                Bool,
00081                                const GenCodeHints &hints,
00082                                const char *)
00083     {return Success;}
00084     Status generateSetMethod_C(Class *, GenContext *,
00085                                const GenCodeHints &hints)
00086     {return Success;}
00087 
00088     Status generateSetMethod_C(Class *, GenContext *,
00089                                Bool,
00090                                const GenCodeHints &hints)
00091     {return Success;}
00092 
00093 
00094     Status generateCollSetClassMethod_Java(Class *, GenContext *,
00095                                            const GenCodeHints &,
00096                                            Bool)
00097     {return Success;}
00098     Status generateCode_Java(Class*, GenContext *,
00099                              const GenCodeHints &, const char *)
00100     {return Success;}
00101     Status generateClassDesc_Java(GenContext *)
00102     {return Success;}
00103 
00104     Status generateBody_Java(Class *, GenContext *,
00105                              const GenCodeHints &,
00106                              const char *prefix)
00107     {return Success;}
00108     Status generateGetMethod_Java(Class *, GenContext *,
00109                                   Bool,
00110                                   const GenCodeHints &,
00111                                   const char *, const char *)
00112     {return Success;}
00113     Status generateSetMethod_Java(Class *, GenContext *,
00114                                   Bool,
00115                                   const GenCodeHints &)
00116     {return Success;}
00117 
00118     Status generateSetMethod_Java(Class *, GenContext *,
00119                                   const GenCodeHints &)
00120     {return Success;}
00121 
00122     static void copy(int, Attribute ** &, unsigned int &, Class *);
00123     static void init();
00124     static void _release();
00125   };
00126 
00127   enum {
00128     ObjectITEMS = 0,
00129     ClassITEMS,
00130     CollectionITEMS,
00131     CollectionClassITEMS,
00132     idbITEMS_COUNT
00133   };
00134 
00135 }
00136 
00137 #endif

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