00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
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