class.h File Reference

#include "stdtp.h"
#include "sync.h"
#include "rectangle.h"

Classes

class  dbFieldDescriptor
 Descriptor of table field. More...
class  dbTableDescriptor
 Table descriptor. More...
struct  dbVarying
 Header of database array or string. More...
struct  dbField
 Database record for storing field descriptor. More...
class  dbRecord
 Header of any database record. More...
class  dbTable
 Database recod for storing table descriptor. More...
class  dbAnyMethodTrampoline
 Trampolinefor invocation of methods from SubSQL. More...
class  dbMethodTrampoline
 Template for method trampoline implementation. More...
class  dbMethodFastTrampoline
 Optimized method trampoline which doesn't fetch record from the database and use direct pointer to the record inside database. More...

Defines

#define dbDatabaseOffsetBits   32
#define dbDatabaseOidBits   32
#define KEY(x, index)
 Macro for describing indexed fields.
#define FIELD(x)   KEY(x, 0)
 Macro for describing non-indexed fields.
#define UDT(x, index, comparator)
 Macro used to describe indexed raw binary fields with user-defined comparator.
#define RAWFIELD(x)   UDT(x, 0, &memcmp)
 Macro used to describe raw binary field.
#define RAWKEY(x, index)   UDT(x, index, &memcmp)
 Macro used to describe indexed raw binary field.
#define RELATION(x, inverse)
 Macro for describing relations between two tables.
#define INDEXED_RELATION(x, inverse)
 Macro for describing relations between two tables.
#define OWNER(x, member)
 Macro used to define relation owner (when owner is deleted, all referenced members are also deleted).
#define METHOD(x)   *dbDescribeMethod(new dbFieldDescriptor(#x), &self::x)
 Macro used to describe method of the class which can be invoked from SubSQL.
#define SUPERCLASS(x)   x::dbDescribeComponents(NULL)->adjustOffsets((char*)((x*)this)-(char*)this)
 Macro used to describe superclass for this class.
#define TYPE_DESCRIPTOR(fields)
 Macro used to describe fields of the record.
#define CLASS_DESCRIPTOR(name, fields)
 Macro used to describe class, the only difference from TYPE_DESCRIPTOR is that name of the class should be specified.
#define REGISTER_IN(table, database)
 Register table descriptor and assign it to specified database.
#define REGISTER(table)   REGISTER_IN(table, NULL)
 Register table descripttor.
#define DETACHED_TABLE   ((dbDatabase*)-1)
 Register database and mark it as unsigned.
#define REGISTER_UNASSIGNED(table)   REGISTER_IN(table, DETACHED_TABLE)

Typedefs

typedef nat4 oid_t
 Object indentifier type.
typedef nat4 offs_t
 Object offset in the file type.
typedef int(* dbUDTComparator )(void *, void *, size_t)
 Comparator for user defined raw binary fields.

Enumerations

enum  dbIndexType {
  HASHED = 1,
  INDEXED = 2,
  DB_FIELD_CASCADE_DELETE = 8,
  AUTOINCREMENT = 16,
  DB_TIMESTAMP = 256,
  DB_FIELD_INHERITED_MASK = ~(HASHED|INDEXED)
}
 Types of field index. More...

Functions

dbFieldDescriptordbDescribeRawField (dbFieldDescriptor *fd, dbUDTComparator comparator)
template<class T>
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, T &x)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, int1 &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, int2 &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, int4 &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, db_int8 &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, nat1 &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, nat2 &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, nat4 &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, nat8 &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, long &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, unsigned long &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, bool &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, real4 &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, real8 &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, rectangle &)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, char const *&)
dbFieldDescriptordbDescribeField (dbFieldDescriptor *fd, char *&)
template<class T, class R>
dbFieldDescriptordbDescribeMethod (dbFieldDescriptor *fd, R(T::*p)())


Define Documentation

#define dbDatabaseOffsetBits   32

#define dbDatabaseOidBits   32

#define KEY ( x,
index   ) 

Value:

*dbDescribeField(new dbFieldDescriptor(#x, (char*)&x-(char*)this, \
                                           sizeof(x), index), x)
Macro for describing indexed fields.

#define FIELD (  )     KEY(x, 0)

Macro for describing non-indexed fields.

#define UDT ( x,
index,
comparator   ) 

Value:

*dbDescribeRawField(new dbFieldDescriptor(#x, (char*)&x-(char*)this, \
                                              sizeof(x), index), (dbUDTComparator)comparator)
Macro used to describe indexed raw binary fields with user-defined comparator.

#define RAWFIELD (  )     UDT(x, 0, &memcmp)

Macro used to describe raw binary field.

#define RAWKEY ( x,
index   )     UDT(x, index, &memcmp)

Macro used to describe indexed raw binary field.

#define RELATION ( x,
inverse   ) 

Value:

*dbDescribeField(new dbFieldDescriptor(#x, (char*)&x-(char*)this, \
                                           sizeof(x), 0, #inverse), x)
Macro for describing relations between two tables.

x should specify name of reference or array of reference field in this table, and inverse - field in the referenced table contining inverse reference.

#define INDEXED_RELATION ( x,
inverse   ) 

Value:

*dbDescribeField(new dbFieldDescriptor(#x, (char*)&x-(char*)this, \
                                           sizeof(x), INDEXED, #inverse), x)
Macro for describing relations between two tables.

x should specify name of reference field in this table for which index will be created, and inverse - field in the referenced table contining inverse reference.

#define OWNER ( x,
member   ) 

Value:

*dbDescribeField(new dbFieldDescriptor(#x, (char*)&x-(char*)this, \
                                           sizeof(x), DB_FIELD_CASCADE_DELETE, \
                                           #member), x)
Macro used to define relation owner (when owner is deleted, all referenced members are also deleted).

Members of of this relation should use RELATION macro to describe relation with owner.

#define METHOD (  )     *dbDescribeMethod(new dbFieldDescriptor(#x), &self::x)

Macro used to describe method of the class which can be invoked from SubSQL.

#define SUPERCLASS (  )     x::dbDescribeComponents(NULL)->adjustOffsets((char*)((x*)this)-(char*)this)

Macro used to describe superclass for this class.

#define TYPE_DESCRIPTOR ( fields   ) 

Value:

dbFieldDescriptor* dbDescribeComponents(dbFieldDescriptor*) { \
        return &fields; \
    } \
    static dbTableDescriptor dbDescriptor
Macro used to describe fields of the record.

Use FIELD, KEY... macros separated by comma inside this macro to describe all fields of the record

#define CLASS_DESCRIPTOR ( name,
fields   ) 

Value:

typedef name self; \
    dbFieldDescriptor* dbDescribeComponents(dbFieldDescriptor*) { \
        return &fields; \
    } \
    static dbTableDescriptor dbDescriptor
Macro used to describe class, the only difference from TYPE_DESCRIPTOR is that name of the class should be specified.

This name is needed if you want to describe methods.

#define REGISTER_IN ( table,
database   ) 

Value:

dbTableDescriptor* dbGetTableDescriptor(table*) \
      { return &table::dbDescriptor; }            \
    static dbFieldDescriptor* dbDescribeComponentsOf##table() \
      { return ((table*)0)->dbDescribeComponents(NULL); }     \
    dbTableDescriptor table::dbDescriptor(#table, database, sizeof(table), \
                                          &dbDescribeComponentsOf##table)
Register table descriptor and assign it to specified database.

#define REGISTER ( table   )     REGISTER_IN(table, NULL)

Register table descripttor.

It will be assigned to the database when database will be opened

#define DETACHED_TABLE   ((dbDatabase*)-1)

Register database and mark it as unsigned.

Programmer should explicitly specify database in all operations.

#define REGISTER_UNASSIGNED ( table   )     REGISTER_IN(table, DETACHED_TABLE)


Typedef Documentation

typedef nat4 oid_t

Object indentifier type.

typedef nat4 offs_t

Object offset in the file type.

typedef int(* dbUDTComparator)(void *, void *, size_t)

Comparator for user defined raw binary fields.


Enumeration Type Documentation

Types of field index.

Enumerator:
HASHED 
INDEXED 
DB_FIELD_CASCADE_DELETE 
AUTOINCREMENT 
DB_TIMESTAMP 
DB_FIELD_INHERITED_MASK 


Function Documentation

dbFieldDescriptor* dbDescribeRawField ( dbFieldDescriptor fd,
dbUDTComparator  comparator 
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
T &  x 
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
int1  
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
int2  
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
int4  
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
db_int8  
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
nat1  
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
nat2  
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
nat4  
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
nat8  
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
long &   
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
unsigned long &   
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
bool &   
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
real4  
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
real8  
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
rectangle  
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
char const *&   
) [inline]

dbFieldDescriptor* dbDescribeField ( dbFieldDescriptor fd,
char *&   
) [inline]

dbFieldDescriptor* dbDescribeMethod ( dbFieldDescriptor fd,
R(T::*)()  p 
) [inline]


Online Library Docs

sipXecs home page

Version 4.2.1-018930 2010-07-31T01:13:23 build16 abuild