Files
harbour-core/harbour/include/rdd.api

987 lines
35 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* $Id$
*/
#ifndef HB_RDD_API
#define HB_RDD_API
typedef USHORT ERRCODE;
// Return codes for RDD methods
#define SUCCESS 0
#define FAILURE 1
// Flags for DBTRANSINFO
#define DBTF_MATCH 0x0001
#define DBTF_PUTREC 0x0002
// Codes for Locking methods
#define DBLM_EXCLUSIVE 1
#define DBLM_MULTIPLE 2
#define DBLM_FILE 3
// Codes for SELF_ORDINFO()
#define DBOI_CONDITION 1 // Get the order condition
#define DBOI_EXPRESSION 2 // Get the order expression
#define DBOI_POSITION 3 // Get the order position
#define DBOI_RECNO 4 // Get the order record number
#define DBOI_NAME 5 // Get the order list name
#define DBOI_NUMBER 6 // Get the order list position
#define DBOI_BAGNAME 7 // Get the order Bag name
#define DBOI_BAGEXT 8 // Get the order Bag Extension
#define DBOI_INDEXEXT DBOI_BAGEXT
#define DBOI_INDEXNAME DBOI_BAGNAME
#define DBOI_ORDERCOUNT 9 // Get the number of orders in the index file
#define DBOI_FILEHANDLE 10 // Get the handle of the index file
#define DBOI_ISCOND 11 // Get the flag if the order has a for condition
#define DBOI_ISDESC 12 // Get the flag if the order is descending
#define DBOI_UNIQUE 13 // Get the flag if the order has the unique attribute set
// Codes for SELF_INFO()
#define DBI_ISDBF 1 // Logical: RDD support DBF file format?
#define DBI_CANPUTREC 2 // Logical: RDD support Putting Records?
#define DBI_GETHEADERSIZE 3 // Numeric: Get header size of the file
#define DBI_LASTUPDATE 4 // Date: Last date RDD file updated
#define DBI_GETDELIMITER 5 // String: Get default delimiter
#define DBI_SETDELIMITER 6 // String: Set default delimiter
#define DBI_GETRECSIZE 7 // Numeric: Get record size of the file
#define DBI_GETLOCKARRAY 8 // Array: Get an array of locked records
#define DBI_TABLEEXT 9 // String: Get table file extension
#define DBI_ISFLOCK 20 // Get file lock status
#define DBI_CHILDCOUNT 22 // Number of opened relations
#define DBI_FILEHANDLE 23 // Handle of opened file
#define DBI_BOF 26 // BOF flag - alternate to bof()
#define DBI_EOF 27 // EOF flag - alternate to eof()
#define DBI_DBFILTER 28 // Filter expression
#define DBI_FOUND 29 // FOUND flag - alternate to found
#define DBI_FCOUNT 30 // Number of fields
#define DBI_LOCKCOUNT 31 // Get record size of the file
#define DBI_VALIDBUFFER 32 // Is the current buffer valid
#define DBI_ALIAS 33 // Alias name of workarea
#define DBI_GETSCOPE 34 // Locate codeblock
#define DBI_LOCKOFFSET 35 // New locking offset
#define DBI_SHARED 36 // Gets/Sets the shared flag
#define DBI_MEMOEXT 37 // Gets/Sets the shared flag
#define DBI_MEMOHANDLE 38 // Dos handle for memo file
#define DBI_MEMOBLOCKSIZE 39 // Blocksize in memo files
#define DBI_DB_VERSION 101 // HOST driver Version
#define DBI_RDD_VERSION 102 // RDD version (current RDD)
#define DBI_USER 1000 // Start of user definable DBI_ values
// codes for SELF_RECINFO()
#define DBRI_DELETED 1
#define DBRI_LOCKED 2
#define DBRI_RECSIZE 3
#define DBRI_RECNO 4
#define DBRI_UPDATED 5
// codes for SELF_FIELDINFO()
#define DBS_NAME 1
#define DBS_TYPE 2
#define DBS_LEN 3
#define DBS_DEC 4
// codes for RawLock types
#define FILE_LOCK 1
#define FILE_UNLOCK 2
#define REC_LOCK 3
#define REC_UNLOCK 4
#define HEADER_LOCK 5
#define HEADER_UNLOCK 6
#define APPEND_LOCK 7
#define APPEND_UNLOCK 8
/*
* DBFIELDINFO
* -----------
* La estructura de los campos
*/
//typedef struct
//{
// BYTEP atomName; // Nombre de campo (s¡mbolo)
// USHORT uiType; // Tipo de campo
// USHORT typeExtended; // Tipo extendido de campo
// USHORT uiLen; // Logitud total del campo
// USHORT uiDec; // Lugares decimales para campos numricos
//} DBFIELDINFO;
//typedef DBFIELDINFO far * LPDBFIELDINFO;
/*
* DBOPENINFO
* ----------
* La estructura de los campos abiertos
*/
typedef struct
{
USHORT uiArea; // N£mero de  rea de trabajo del almacenamiento de datos
PBYTE abName; // El nombre cualificado del almacenamiento de campos
PBYTE atomAlias; // El nombre l¢gico del almacenamiento de campos
BOOL fShared; // Modo compartido del almacenamiento de campos
BOOL fReadonly; // Modo de s¢lo lectura del almacenamiento de campos
// FARP lpdbHeader; // Puntero a la cabecera del almacenamiento de campos
} DBOPENINFO, * DBOPENINFOP;
/*
* DBORDERCONDINFO
* ---------------
* La estructura de creaci¢n condicional de orden
*/
//typedef struct _DBORDERCONDINFO
//{
// BOOL fActive;
// BYTEP abFor;
// ITEM itmCobFor;
// ITEM itmCobWhile;
// ITEM itmCobEval;
// LONG lStep;
// LONG lStartRecno;
// LONG lNextCount;
// LONG lRecno;
// BOOL fRest;
// BOOL fDescending;
// BOOL fScoped;
// BOOL fAll;
// BOOL fAdditive;
// BOOL fUseCurrent;
// BOOL fCustom;
// BOOL fNoOptimize;
// FARP lpvCargo;
//} DBORDERCONDINFO;
//typedef DBORDERCONDINFO far * LPDBORDERCONDINFO;
/*
* DBORDERCREATE
* -------------
* La estructura de creaci¢n de orden
*/
//typedef struct
//{
// LPDBORDERCONDINFO lpdbOrdCondInfo; // Informaci¢n condicional
// BYTEP abBagName; // Nombre del contenedor de ¢rdenes
// BYTEP atomBagName; //
// ITEM itmOrder; //
// BOOL fUnique; // Indicador que determina si todas
// las claves con £nicas
// ITEM itmCobExpr; // Bloque de c¢digo conteniendo la
// expresi¢n clave
// ITEM abExpr; // Cadena conteniendo la expresi¢n clave
//} DBORDERCREATEINFO;
//typedef DBORDERCREATEINFO far * LPDBORDERCREATEINFO;
/*
* DBORDERINFO
* -----------
* La estructura de Set Index
*/
//typedef struct
//{
// ITEM atomBagName; // Nombre del contenedor de ¢rdenes
// ITEM itmOrder; // Nombre o n£mero de la orden
// ITEM itmCobExpr; // Bloque de c¢digo conteniendo la expresi¢n clave
// ITEM itmResult; // Resultado de la operaci¢n
// BOOL fAllTags; // Indicador de todos los tags a abrir
//} DBORDERINFO;
//typedef DBORDERINFO far * LPDBORDERINFO;
/*
* DBSCOPEINFO
* -----------
* La estructura de  mbito
*/
//typedef struct
//{
// ITEM itmCobFor; // Bloque de c¢digo representaci¢n de una cl usula FOR
// ITEM lpstrFor; // Cadena representaci¢n de una cl usula FOR
// ITEM itmCobWhile; // Bloque de c¢digo representaci¢n de una cl usula WHILE
// ITEM lpstrWhile; // Cadena representaci¢n de una cl usula WHILE
// ITEM lNext;
// ITEM itmRecID;
// ITEM fRest; // TRUE si se empieza desde el registro actual
// BOOL fIgnoreFilter;
// BOOL fIncludeDeleted;
// BOOL fLast;
// BOOL fIgnoreDuplicates;
//} DBSCOPEINFO;
//typedef DBSCOPEINFO far * LPDBSCOPEINFO;
/*
* DBFILTERINFO
* ------------
* La estructura de filtro
*/
//typedef struct
//{
// ITEM itmCobExpr; // Bloque representaci¢n de la expresi¢n FILTER
// ITEM abFilterText; // Cadena representaci¢n de la expresi¢n FILTER
// BOOL fFilter;
//} DBFILTERINFO;
//typedef DBFILTERINFO far * LPDBFILTERINFO;
/*
* DBRELINFO
* ------------
* La estrurcura de relaciones
*/
//typedef struct _DBRELINFO
//{
// ITEM itmCobExpr; // Bloque representaci¢n de la clave relacional SEEK
// ITEM abKey; // Cadena representaci¢n de la clave relacional SEEK
// struct _AREA far *lpaParent; // El padre de esta relaci¢n
// struct _AREA far *lpaChild; // Los hijos del padre
// struct _DBRELINFO far *lpdbriNext; // Siguiente hijo o padre
//} DBRELINFO;
//typedef DBRELINFO far * LPDBRELINFO;
/*
* DBEVALINFO
* ------------
* La estructura de evaluaci¢n
*
* Contiene la informaci¢n necesaria para la evaluaci¢n de un bloque
* en cada registro del  rea de trabajo
*/
//typedef struct
//{
// ITEM itmBlock; // El bloque a evaluar
// DBSCOPEINFO dbsci; // Ambito que limita la evaluaci¢n
//} DBEVALINFO;
//typedef DBEVALINFO far * LPDBEVALINFO;
/*
* DBTRANSITEM
* ------------
* La estructura de transferencia
*
* Define un elemento de transferencia simple (normalmente un campo)
* de una base de datos a otra; utilizada por DBTRANSINFO
*/
//typedef struct
//{
// USHORT uiSource; // N£mero de ¡ndice de campo del fuente
// USHORT uiDest; // N£mero de ¡ndice de campo del destino
//} DBTRANSITEM;
//typedef DBTRANSITEM far * LPDBTRANSITEM;
/*
* DBTRANSINFO
* ------------
* La estructura de transferenciaz
*
* Define una transferencia de elementos de datos global de un
*  rea de trabajo a otra
*/
//typedef struct
//{
// struct _AREA far *lpaSource; // Puntero al  rea de trabajo fuente
// struct _AREA far *lpaDest; // Puntero al  rea de trabajo destino
// DBSCOPEINFO dbsci; // Ambito de limitaci¢n de transferencia
// USHORT uiFlags; // Atributos de transferencia
// USHORT uiItemCount; // Contador de elementos
// LPDBTRANSITEM lpTransItems; // Matriz de elementos
//} DBTRANSINFO;
//typedef DBTRANSINFO far * LPDBTRANSINFO;
/*
* DBSORTITEM
* ----------
* La estructura de ordenaci¢n
*
* Una matriz de elementos que, juntos, indican el valor clave a
* utilizar al ordenar datos. El orden de la matriz determina el
* orden de la ordenaci¢n.
*/
//typedef struct
//{
// USHORT uiField; // Indice dentro de la estructura
// //  rea-de-trabajo->campos
// USHORT uiFlags; // Indicadores de ordenaci¢n
//} DBSORTITEM;
//typedef DBSORTITEM far * LPDBSORTITEM;
// Indicadores para DBSORTITEM
//#define SF_ASCEND 1
//#define SF_CASE 2
//#define SF_DESCEND 4
//#define SF_NUM 32
//#define SF_DOUBLE 64
//#define SF_LONG 128
/*
* DBSORTINFO
* ----------
* La estructura de ordenaci¢n
*
* Informaci¢n para la ordenaci¢n f¡sica en un  rea de trabajo
*/
//typedef struct
//{
// DBTRANSINFO dbtri; // Informaci¢n de transferencia del  rea de
// trabajo destino
// LPDBSORTITEM lpdbsItem; // Campos que componen los valores claves en
// la ordenaci¢n
// USHORT uiItemCount; // Contador de elementos
//} DBSORTINFO;
//typedef DBSORTINFO far * LPDBSORTINFO;
/*
* DBLOCKINFO
* ----------
* La estructura de bloqueozz
*
* Contiene informaci¢n de bloqueos de registro o fichero
*/
//typedef struct
//{
// ULONG itmRecID;
// USHORT uiMethod;
// BOOL fResult;
//} DBLOCKINFO;
//typedef DBLOCKINFO far * LPDBLOCKINFO;
/*
* FIELD
* -----
* La estructura de campos
*
* Esta es la unidad b sica de acceso a un  rea de trabajo
*/
//typedef struct _FIELD
//{
// USHORT uiType; // Tipo de campo
// USHORT uiTypeExtended; // Tipo de campo - extendido
// USHORT uiLen; // Longitud de campo
// USHORT uiDec; // Longitud de caracteres decimales
// USHORT uiArea; // Area en la que reside este campo
// FARP sym; // S¡mbolo que representa el campo
// struct _FIELD *lpfNext; // Siguiente campo de la lista
//} FIELD;
//typedef FIELD far * LPFIELD;
/*-----------------* Estructuras de  reas de trabajo *-------------------*/
/*
* WORKAREA
* --------
* La estructura del  rea de trabajo
*
* Informaci¢n para administrar el  rea de trabajo
*/
typedef struct _AREA
{
struct _RDDFUNCS * lprfsHost;
USHORT uiArea; // El n£mero asignado al  rea de trabajo
// FARP atomAlias; // Puntero al s¡mbolo alias de este  rea
// de trabajo
// USHORT uiFieldExtent; // N£mero total de campos asignados
// USHORT uiFieldCount; // N£mero total de campos utilizados
// LPFIELD lpFields; // Puntero a una matriz de campos
// FARP lpFieldExtents; // Puntero nulo para propiedades adicionales
// ITEM valResult; // Contenedor de resultados de m£ltiples usos
// BOOL fTop; // TRUE si "top"
// BOOL fBottom; // TRUE si "bottom"
// BOOL fBof; // TRUE si "bof"
// BOOL fEof; // TRUE si "eof"
// BOOL fFound; // TRUE si "found"
// DBSCOPEINFO dbsi; // Informaci¢n concerniente al £ltimo LOCATE
// DBFILTERINFO dbfi; // Filtro activo
// LPDBORDERCONDINFO lpdbOrdCondInfo;
// LPDBRELINFO lpdbRelations; // Relaciones padre/hijo utilizadas
// USHORT uiParents; // N£mero de padres en este  rea
// HANDLE heap;
// USHORT heapSize;
USHORT rddID;
} AREA;
typedef AREA * LPAREA;
#ifndef AREAP
#define AREAP LPAREA
#endif
/*-----------------* Prototipos punto de entrada *---------------------*/
typedef USHORT ( * DBENTRYP_V )( AREAP area );
typedef USHORT ( * DBENTRYP_BP )( AREAP area, BOOL * param );
typedef USHORT ( * DBENTRYP_L )( AREAP area, LONG param );
typedef USHORT ( * DBENTRYP_I )( AREAP area, PHB_ITEM param );
typedef USHORT ( * DBENTRYP_SI )( AREAP area, USHORT index, PHB_ITEM param );
typedef USHORT ( * DBENTRYP_VP )( AREAP area, DBOPENINFOP param );
//typedef USHORT (far * DBENTRYP_S)(AREAP area, USHORT param);
//typedef USHORT ( * DBENTRYP_SP )( AREAP area, USHORT * param ); BP
//typedef USHORT (far * DBENTRYP_LP)(AREAP area, LONGP param);
//typedef USHORT (far * DBENTRYP_PP)(AREAP area, FARPP param);
//typedef USHORT (far * DBENTRYP_SVP)(AREAP area, USHORT index, FARP param);
//typedef USHORT (far * DBENTRYP_SVPB)(AREAP area, USHORT index, FARP param, USHORT mode);
//typedef USHORT (far * DBENTRYP_VPL)(AREAP area, FARP p1, LONG p2);
//typedef USHORT (far * DBENTRYP_VPLP)(AREAP area, FARP p1, LONGP p2);
//typedef USHORT (far * DBENTRYP_LSP)(AREAP area, LONG p1, USHORTP p2);
//typedef USHORT (far * DBENTRYP_SSI) (AREAP area, USHORT p1, USHORT p2, ITEM p3);
//typedef USHORT (far * DBENTRYP_ISI) (AREAP area, ITEM p1, USHORT p2, ITEM p3);
//typedef USHORT (far * DBENTRYP_VSP) (AREAP area, USHORT action, LONG lRecord);
/*-----------------* Tabla de mdotos virtuales *-------------------*/
typedef struct _RDDFUNCS
{
/* Mtodos de posicionamiento y desplazamiento */
DBENTRYP_BP bof;
DBENTRYP_BP eof;
DBENTRYP_BP found;
DBENTRYP_V goBottom;
DBENTRYP_L go;
// DBENTRYP_I goToId;
DBENTRYP_V goTop;
// DBENTRYP_SI seek;
DBENTRYP_L skip;
// DBENTRYP_L skipFilter; /* L */
// DBENTRYP_L skipRaw; /* L */
/* Manejo de datos */
// DBENTRYP_VP addField; /* VP */
// DBENTRYP_S append; /* S */
// DBENTRYP_I createFields; /* I */
// DBENTRYP_V deleterec; /* V */
// DBENTRYP_SP deleted; /* SP */
// DBENTRYP_SP fieldCount; /* SP */
// DBENTRYP_VP fieldDisplay; /* VP */
// DBENTRYP_SSI fieldInfo; /* SSI */
// DBENTRYP_SVP fieldName; /* SVP */
// DBENTRYP_V flush; /* V */
// DBENTRYP_PP getRec; /* PP */
// DBENTRYP_SI getValue; /* SI */
// DBENTRYP_SVP getVarLen; /* SVP */
// DBENTRYP_V goCold; /* V */
// DBENTRYP_V goHot; /* V */
// DBENTRYP_VP putRec; /* VP */
// DBENTRYP_SI putValue; /* SI */
// DBENTRYP_V recall; /* V */
// DBENTRYP_LP reccount; /* LP */
// DBENTRYP_ISI recInfo; /* ISI */
// DBENTRYP_I recno; /* I */
// DBENTRYP_S setFieldExtent; /* S */
/* Manejo de  reas de trabajo/bases de datos */
// DBENTRYP_VP alias; /* VP */
DBENTRYP_V close;
DBENTRYP_VP create;
// DBENTRYP_SI info; /* SI */
// DBENTRYP_V newarea; /* V */
DBENTRYP_VP open;
// DBENTRYP_V release; /* V */
// DBENTRYP_SP structSize; /* SP */
// DBENTRYP_VP sysName; /* VP */
// DBENTRYP_VP dbEval; /* VP */
// DBENTRYP_V pack; /* V */
// DBENTRYP_LSP packRec; /* LSP */
// DBENTRYP_VP sort; /* VP */
// DBENTRYP_VP trans; /* VP */
// DBENTRYP_VP transRec; /* VP */
// DBENTRYP_V zap; /* V */
/* Mtodos relacionales */
// DBENTRYP_VP childEnd; /* VP */
// DBENTRYP_VP childStart; /* VP */
// DBENTRYP_VP childSync; /* VP */
// DBENTRYP_V syncChildren; /* V */
// DBENTRYP_V clearRel; /* V */
// DBENTRYP_V forceRel; /* V */
// DBENTRYP_SVP relArea; /* SVP */
// DBENTRYP_VP relEval; /* VP */
// DBENTRYP_SVP relText; /* SVP */
// DBENTRYP_VP setRel; /* VP */
/* Manejo de ¢rdenes */
// DBENTRYP_VP orderListAdd; /* VP */
// DBENTRYP_V orderListClear; /* V */
// DBENTRYP_VP orderListDelete; /* VP */
// DBENTRYP_VP orderListFocus; /* VP */
// DBENTRYP_V orderListRebuild; /* V */
// DBENTRYP_VP orderCondition; /* VP */
// DBENTRYP_VP orderCreate; /* VP */
// DBENTRYP_VP orderDestroy; /* VP */
// DBENTRYP_SVP orderInfo; /* SVP */
/* Establecimiento de filtros y  mbitos */
// DBENTRYP_V clearFilter; /* V */
// DBENTRYP_V clearLocate; /* V */
// DBENTRYP_V clearScope; /* V */
// DBENTRYP_VPLP countScope; /* VPLP*/
// DBENTRYP_VP filterText; /* VP */
// DBENTRYP_SI scopeInfo; /* SI */
// DBENTRYP_VP setFilter; /* VP */
// DBENTRYP_VP setLocate; /* VP */
// DBENTRYP_VP setScope; /* VP */
// DBENTRYP_VPL skipScope; /* VPL */
/* Diversos */
// DBENTRYP_VP compile; /* VP */
// DBENTRYP_VP error; /* VP */
// DBENTRYP_I evalBlock; /* I */
/* Operaciones de red */
// DBENTRYP_VSP rawlock; /* VSP */
// DBENTRYP_VP lock; /* VP */
// DBENTRYP_L unlock; /* L */
/* Funciones de ficheros memo */
// DBENTRYP_V closeMemFile; /* V */
// DBENTRYP_VP createMemFile; /* VP */
// DBENTRYP_SVPB getValueFile; /* SVPB */
// DBENTRYP_VP openMemFile; /* VP */
// DBENTRYP_SVP putValueFile; /* SVP */
/* Manejo de cabeceras de ficheros de base de datos */
// DBENTRYP_V readDBHeader; /* V */
// DBENTRYP_V writeDBHeader; /* V */
/* Mtodos especiales y reservados */
// DBENTRYP_SVP whoCares; /* SVP */
} RDDFUNCS;
typedef RDDFUNCS * PRDDFUNCS;
#define RDDFUNCSCOUNT ( sizeof( RDDFUNCS ) / sizeof( DBENTRYP_V ) )
/*--------------------* Mtodos SELF *------------------------*/
/* Mtodos de posicionamiento y desplazamiento */
//#define SELF_BOF(w, sp) ((*(w)->lprfsHost->bof)(w, sp))
//#define SELF_EOF(w, sp) ((*(w)->lprfsHost->eof)(w, sp))
//#define SELF_FOUND(w, sp) ((*(w)->lprfsHost->found)(w, sp))
//#define SELF_GOTO(w, l) ((*(w)->lprfsHost->go)(w, l))
//#define SELF_GOTOID(w, sp) ((*(w)->lprfsHost->goToId)(w, sp))
//#define SELF_GOBOTTOM(w) ((*(w)->lprfsHost->goBottom)(w))
//#define SELF_GOTOP(w) ((*(w)->lprfsHost->goTop)(w))
//#define SELF_SEEK(w, i, v) ((*(w)->lprfsHost->seek)(w, i, v))
//#define SELF_SKIP(w, l) ((*(w)->lprfsHost->skip)(w, l))
//#define SELF_SKIPFILTER(w, l) ((*(w)->lprfsHost->skipFilter)(w, l))
//#define SELF_SKIPRAW(w, l) ((*(w)->lprfsHost->skipRaw)(w, l))
/* Manejo de datos */
//#define SELF_ADDFIELD(w, ip) ((*(w)->lprfsHost->addField)(w, ip))
//#define SELF_APPEND(w,l) ((*(w)->lprfsHost->append)(w,l))
//#define SELF_CREATEFIELDS(w, v) ((*(w)->lprfsHost->createFields)(w, v))
//#define SELF_DELETE(w) ((*(w)->lprfsHost->deleterec)(w))
//#define SELF_DELETED(w, sp) ((*(w)->lprfsHost->deleted)(w, sp))
//#define SELF_FIELDCOUNT(w, sp) ((*(w)->lprfsHost->fieldCount)(w, sp))
//#define SELF_FIELDDISPLAY(w, sp) ((*(w)->lprfsHost->fieldDisplay)(w, sp))
//#define SELF_FIELDINFO(w,s1,s2,v) ((*(w)->lprfsHost->fieldInfo)(w,s1,s2,v))
//#define SELF_FIELDNAME(w, i, bp) ((*(w)->lprfsHost->fieldName)(w, i, bp))
//#define SELF_FLUSH(w) ((*(w)->lprfsHost->flush)(w))
//#define SELF_GETREC(w, bpp) ((*(w)->lprfsHost->getRec)(w, bpp))
//#define SELF_GETVALUE(w, i, v) ((*(w)->lprfsHost->getValue)(w, i, v))
//#define SELF_GETVARLEN(w, i, lp) ((*(w)->lprfsHost->getVarLen)(w, i, lp))
//#define SELF_GOCOLD(w) ((*(w)->lprfsHost->goCold)(w))
//#define SELF_GOHOT(w) ((*(w)->lprfsHost->goHot)(w))
//#define SELF_PUTVALUE(w, i, v) ((*(w)->lprfsHost->putValue)(w, i, v))
//#define SELF_PUTREC(w, bp) ((*(w)->lprfsHost->putRec)(w, bp))
//#define SELF_RECALL(w) ((*(w)->lprfsHost->recall)(w))
//#define SELF_RECCOUNT(w, sp) ((*(w)->lprfsHost->reccount)(w, sp))
//#define SELF_RECINFO(w,v1,i,v2) ((*(w)->lprfsHost->recInfo)(w,v1,i,v2))
//#define SELF_RECNO(w, i) ((*(w)->lprfsHost->recno)(w, i))
//#define SELF_SETFIELDEXTENT(w, s) ((*(w)->lprfsHost->setFieldExtent)(w, s))
/* Manejo de  reas de trabajo/bases de datos */
//#define SELF_ALIAS(w, bp) ((*(w)->lprfsHost->alias)(w, bp))
//#define SELF_CLOSE(w) ((*(w)->lprfsHost->close)(w))
//#define SELF_CREATE(w, ip) ((*(w)->lprfsHost->create)(w, ip))
//#define SELF_INFO(w, i, g) ((*(w)->lprfsHost->info)(w, i, g))
//#define SELF_NEW(w) ((*(w)->lprfsHost->newarea)(w))
//#define SELF_OPEN(w, ip) ((*(w)->lprfsHost->open)(w, ip))
//#define SELF_RELEASE(w) ((*(w)->lprfsHost->release)(w))
//#define SELF_STRUCTSIZE(w, sp) ((*(w)->lprfsHost->structSize)(w,sp))
//#define SELF_SYSNAME(w, bp) ((*(w)->lprfsHost->sysName)(w, bp))
//#define SELF_DBEVAL(w, ip) ((*(w)->lprfsHost->dbEval)(w, ip))
//#define SELF_PACK(w) ((*(w)->lprfsHost->pack)(w))
//#define SELF_PACKREC(w, l, sp) ((*(w)->lprfsHost->packRec)(w, l, sp))
//#define SELF_SORT(w, ip) ((*(w)->lprfsHost->sort)(w, ip))
//#define SELF_TRANS(w, ip) ((*(w)->lprfsHost->trans)(w, ip))
//#define SELF_TRANSREC(w, ip) ((*(w)->lprfsHost->transRec)(w, ip))
//#define SELF_ZAP(w) ((*(w)->lprfsHost->zap)(w))
/* Mtodos relacionales */
//#define SELF_CHILDEND(w, ip) ((*(w)->lprfsHost->childEnd)(w, ip))
//#define SELF_CHILDSTART(w, ip) ((*(w)->lprfsHost->childStart)(w, ip))
//#define SELF_CHILDSYNC(w, ip) ((*(w)->lprfsHost->childSync)(w, ip))
//#define SELF_SYNCCHILDREN(w) ((*(w)->lprfsHost->syncChildren)(w))
//#define SELF_CLEARREL(w) ((*(w)->lprfsHost->clearRel)(w))
//#define SELF_FORCEREL(w) ((*(w)->lprfsHost->forceRel)(w))
//#define SELF_RELAREA(w, s, sp) ((*(w)->lprfsHost->relArea)(w, s, sp))
//#define SELF_RELEVAL(w, ip) ((*(w)->lprfsHost->relEval)(w, ip))
//#define SELF_RELTEXT(w, s, bp) ((*(w)->lprfsHost->relText)(w, s, bp))
//#define SELF_SETREL(w, ip) ((*(w)->lprfsHost->setRel)(w, ip))
/* Manejo de ¢rdenes */
//#define SELF_ORDLSTADD(w, lp) ((*(w)->lprfsHost->orderListAdd)(w, lp))
//#define SELF_ORDLSTDELETE(w, lp) ((*(w)->lprfsHost->orderListDelete)(w, lp))
//#define SELF_ORDLSTFOCUS(w, lp) ((*(w)->lprfsHost->orderListFocus)(w,lp))
//#define SELF_ORDLSTREBUILD(w) ((*(w)->lprfsHost->orderListRebuild)(w))
//#define SELF_ORDLSTCLEAR(w) ((*(w)->lprfsHost->orderListClear)(w))
//#define SELF_ORDSETCOND(w, ip) ((*(w)->lprfsHost->orderCondition)(w, ip))
//#define SELF_ORDCREATE(w, ip) ((*(w)->lprfsHost->orderCreate)(w, ip))
//#define SELF_ORDDESTROY(w, p) ((*(w)->lprfsHost->orderDestroy)(w, p))
//#define SELF_ORDINFO(w, i, p) ((*(w)->lprfsHost->orderInfo)(w, i, p))
//#define SELF_ORDEXPR(w, p) ((*(w)->lprfsHost->orderInfo)(w, DBOI_EXPRESSION, p))
//#define SELF_ORDCOND(w, p) ((*(w)->lprfsHost->orderInfo)(w, DBOI_CONDITION, p))
//#define SELF_ORDRECNO(w, p) ((*(w)->lprfsHost->orderInfo)(w, DBOI_RECNO, p))
//#define SELF_ORDPOS(w, p) ((*(w)->lprfsHost->orderInfo)(w, DBOI_POSITION, p))
//#define SELF_ORDNUMBER(w, p) ((*(w)->lprfsHost->orderInfo)(w, DBOI_NUMBER, p))
//#define SELF_ORDNAME(w, p) ((*(w)->lprfsHost->orderInfo)(w, DBOI_NAME, p))
//#define SELF_ORDBAGNAME(w, p) ((*(w)->lprfsHost->orderInfo)(w, DBOI_BAGNAME, p))
//#define SELF_ORDBAGEXT(w, p) ((*(w)->lprfsHost->orderInfo)(w, DBOI_BAGEXT, p))
/* Establecimiento de filtros y  mbitos */
//#define SELF_CLEARFILTER(w) ((*(w)->lprfsHost->clearFilter)(w))
//#define SELF_CLEARLOCATE(w) ((*(w)->lprfsHost->clearLocate)(w))
//#define SELF_CLEARSCOPE(w) ((*(w)->lprfsHost->clearScope)(w))
//#define SELF_COUNTSCOPE(w,ip,lp) ((*(w)->lprfsHost->countScope)(w,ip,lp))
//#define SELF_FILTERTEXT(w, bp) ((*(w)->lprfsHost->filterText)(w, bp))
//#define SELF_SCOPEINFO(w,i,v) ((*(w)->lprfsHost->scopeInfo)(w,i,v))
//#define SELF_SETFILTER(w, ip) ((*(w)->lprfsHost->setFilter)(w, ip))
//#define SELF_SETLOCATE(w, ip) ((*(w)->lprfsHost->setLocate)(w, ip))
//#define SELF_SETSCOPE(w, ip) ((*(w)->lprfsHost->setScope)(w, ip))
//#define SELF_SKIPSCOPE(w, bp, l) ((*(w)->lprfsHost->skipScope)(w, bp, l))
/* Diversos */
//#define SELF_COMPILE(w, bp) ((*(w)->lprfsHost->compile)(w, bp))
//#define SELF_ERROR(w, ip) ((*(w)->lprfsHost->error)(w, ip))
//#define SELF_EVALBLOCK(w, v) ((*(w)->lprfsHost->evalBlock)(w, v))
/* Operaciones de red */
//#define SELF_GETLOCKS(w, g) ((*(w)->lprfsHost->info)(w, DBI_GETLOCKARRAY, g))
//#define SELF_RAWLOCK(w, i, l) ((*(w)->lprfsHost->rawlock)(w, i, l))
//#define SELF_LOCK(w, sp) ((*(w)->lprfsHost->lock)(w, sp))
//#define SELF_UNLOCK(w, l) ((*(w)->lprfsHost->unlock)(w, l))
/* Funciones de ficheros memo */
//#define SELF_CLOSEMEMFILE(w) ((*(w)->lprfsHost->closeMemFile)(w))
//#define SELF_CREATEMEMFILE(w,bp) ((*(w)->lprfsHost->createMemFile)(w,bp))
//#define SELF_GETVALUEFILE(w,i,bp,b) ((*(w)->lprfsHost->getValueFile)(w,i,bp,b))
//#define SELF_OPENMEMFILE(w,bp) ((*(w)->lprfsHost->openMemFile)(w,bp))
//#define SELF_PUTVALUEFILE(w,i,bp) ((*(w)->lprfsHost->putValueFile)(w,i,bp))
/* Manejo de cabeceras de ficheros de base de datos */
//#define SELF_READDBHEADER(w) ((*(w)->lprfsHost->readDBHeader)(w))
//#define SELF_WRITEDBHEADER(w) ((*(w)->lprfsHost->writeDBHeader)(w))
/* Operaciones Info */
//#define SELF_RECSIZE(w, lp) ((*(w)->lprfsHost->info)(w, DBI_GETRECSIZE, lp))
//#define SELF_HEADERSIZE(w, fp) ((*(w)->lprfsHost->info)(w, DBI_GETHEADERSIZE, fp))
//#define SELF_LUPDATE(w, fp) ((*(w)->lprfsHost->info)(w, DBI_LASTUPDATE, fp ))
//#define SELF_SETDELIM(w, fp) ((*(w)->lprfsHost->info)(w, DBI_SETDELIMITER, fp))
//#define SELF_GETDELIM(w, fp) ((*(w)->lprfsHost->info)(w, DBI_GETDELIMITER, fp))
//#define SELF_TABLEEXT(w, fp) ((*(w)->lprfsHost->info)(w, DBI_TABLEEXT, fp))
/*--------------------* Mtodos SUPER *------------------------*/
/* Mtodos de movimiento y posicionamiento */
//#define SUPER_BOF(w, sp) ((*(SUPERTABLE)->bof)(w, sp))
//#define SUPER_EOF(w, sp) ((*(SUPERTABLE)->eof)(w, sp))
//#define SUPER_FOUND(w, sp) ((*(SUPERTABLE)->found)(w, sp))
//#define SUPER_GOTO(w, l) ((*(SUPERTABLE)->go)(w, l))
//#define SUPER_GOTOID(w, sp) ((*(SUPERTABLE)->goToId)(w, sp))
//#define SUPER_GOBOTTOM(w) ((*(SUPERTABLE)->goBottom)(w))
//#define SUPER_GOTOP(w) ((*(SUPERTABLE)->goTop)(w))
//#define SUPER_SEEK(w, i, v) ((*(SUPERTABLE)->seek)(w, i, v))
//#define SUPER_SKIP(w, l) ((*(SUPERTABLE)->skip)(w, l))
//#define SUPER_SKIPFILTER(w, l) ((*(SUPERTABLE)->skipFilter)(w, l))
//#define SUPER_SKIPRAW(w, l) ((*(SUPERTABLE)->skipRaw)(w, l))
/* Manejo de datos */
//#define SUPER_ADDFIELD(w, ip) ((*(SUPERTABLE)->addField)(w, ip))
//#define SUPER_APPEND(w,l) ((*(SUPERTABLE)->append)(w,l))
//#define SUPER_CREATEFIELDS(w, v) ((*(SUPERTABLE)->createFields)(w, v))
//#define SUPER_DELETE(w) ((*(SUPERTABLE)->deleterec)(w))
//#define SUPER_DELETED(w, sp) ((*(SUPERTABLE)->deleted)(w, sp))
//#define SUPER_FIELDCOUNT(w, sp) ((*(SUPERTABLE)->fieldCount)(w, sp))
//#define SUPER_FIELDDISPLAY(w, sp) ((*(SUPERTABLE)->fieldDisplay)(w, sp))
//#define SUPER_FIELDINFO(w,s1,s2,v) ((*(SUPERTABLE)->fieldInfo)(w,s1,s2,v))
//#define SUPER_FIELDNAME(w, i, bp) ((*(SUPERTABLE)->fieldName)(w, i, bp))
//#define SUPER_FLUSH(w) ((*(SUPERTABLE)->flush)(w))
//#define SUPER_GETREC(w, bpp) ((*(SUPERTABLE)->getRec)(w, bpp))
//#define SUPER_GETVALUE(w, i, v) ((*(SUPERTABLE)->getValue)(w, i, v))
//#define SUPER_GETVARLEN(w, i, lp) ((*(SUPERTABLE)->getVarLen)(w, i, lp))
//#define SUPER_GOCOLD(w) ((*(SUPERTABLE)->goCold)(w))
//#define SUPER_GOHOT(w) ((*(SUPERTABLE)->goHot)(w))
//#define SUPER_PUTVALUE(w, i, v) ((*(SUPERTABLE)->putValue)(w, i, v))
//#define SUPER_PUTREC(w, bp) ((*(SUPERTABLE)->putRec)(w, bp))
//#define SUPER_RECALL(w) ((*(SUPERTABLE)->recall)(w))
//#define SUPER_RECCOUNT(w, sp) ((*(SUPERTABLE)->reccount)(w, sp))
//#define SUPER_RECINFO(w,v1,i,v2) ((*(SUPERTABLE)->recInfo)(w,v1,i,v2))
//#define SUPER_RECNO(w, sp) ((*(SUPERTABLE)->recno)(w, sp))
//#define SUPER_SETFIELDEXTENT(w, s) ((*(SUPERTABLE)->setFieldExtent)(w, s))
/* Manejo de  reas de trabajo/bases de datos */
//#define SUPER_ALIAS(w, bp) ((*(SUPERTABLE)->alias)(w, bp))
//#define SUPER_CLOSE(w) ((*(SUPERTABLE)->close)(w))
//#define SUPER_CREATE(w, ip) ((*(SUPERTABLE)->create)(w, ip))
//#define SUPER_INFO(w, i, g) ((*(SUPERTABLE)->info)(w, i, g))
//#define SUPER_NEW(w) ((*(SUPERTABLE)->newarea)(w))
//#define SUPER_OPEN(w, ip) ((*(SUPERTABLE)->open)(w, ip))
//#define SUPER_RELEASE(w) ((*(SUPERTABLE)->release)(w))
//#define SUPER_STRUCTSIZE(w, sp) ((*(SUPERTABLE)->structSize)(w, sp))
//#define SUPER_SYSNAME(w, bp) ((*(SUPERTABLE)->sysName)(w, bp))
//#define SUPER_DBEVAL(w, ip) ((*(SUPERTABLE)->dbEval)(w, ip))
//#define SUPER_PACK(w) ((*(SUPERTABLE)->pack)(w))
//#define SUPER_PACKREC(w, l, sp) ((*(SUPERTABLE)->packRec)(w, l, sp))
//#define SUPER_SORT(w, ip) ((*(SUPERTABLE)->sort)(w, ip))
//#define SUPER_TRANS(w, ip) ((*(SUPERTABLE)->trans)(w, ip))
//#define SUPER_TRANSREC(w, ip) ((*(SUPERTABLE)->transRec)(w, ip))
//#define SUPER_ZAP(w) ((*(SUPERTABLE)->zap)(w))
/* Mtodos relacionales */
//#define SUPER_CHILDEND(w, ip) ((*(SUPERTABLE)->childEnd)(w, ip))
//#define SUPER_CHILDSTART(w, ip) ((*(SUPERTABLE)->childStart)(w, ip))
//#define SUPER_CHILDSYNC(w, ip) ((*(SUPERTABLE)->childSync)(w, ip))
//#define SUPER_SYNCCHILDREN(w) ((*(SUPERTABLE)->syncChildren)(w))
//#define SUPER_CLEARREL(w) ((*(SUPERTABLE)->clearRel)(w))
//#define SUPER_FORCEREL(w) ((*(SUPERTABLE)->forceRel)(w))
//#define SUPER_RELAREA(w, s, sp) ((*(SUPERTABLE)->relArea)(w, s, sp))
//#define SUPER_RELEVAL(w, ip) ((*(SUPERTABLE)->relEval)(w, ip))
//#define SUPER_RELTEXT(w, s, bp) ((*(SUPERTABLE)->relText)(w, s, bp))
//#define SUPER_SETREL(w, ip) ((*(SUPERTABLE)->setRel)(w, ip))
/* Manejo de ¢rdenes */
//#define SUPER_ORDLSTADD(w, lp) ((*(SUPERTABLE)->orderListAdd)(w, lp))
//#define SUPER_ORDLSTDELETE(w, lp) ((*(SUPERTABLE)->orderListDelete)(w, lp))
//#define SUPER_ORDLSTFOCUS(w, lp) ((*(SUPERTABLE)->orderListFocus)(w, lp))
//#define SUPER_ORDLSTREBUILD(w) ((*(SUPERTABLE)->orderListRebuild)(w))
//#define SUPER_ORDLSTCLEAR(w) ((*(SUPERTABLE)->orderListClear)(w))
//#define SUPER_ORDSETCOND(w,ip) ((*(SUPERTABLE)->orderCondition)(w, ip))
//#define SUPER_ORDCREATE(w, ip) ((*(SUPERTABLE)->orderCreate)(w, ip))
//#define SUPER_ORDDELETE(w, ip) ((*(SUPERTABLE)->orderDelete)(w, ip))
//#define SUPER_ORDINFO(w, i, p) ((*(SUPERTABLE)->orderInfo)(w, i, p))
//#define SUPER_ORDEXPR(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_EXPRESSION, p))
//#define SUPER_ORDCOND(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_CONDITION, p))
//#define SUPER_ORDRECNO(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_RECNO, p))
//#define SUPER_ORDPOS(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_POSITION, p))
//#define SUPER_ORDNUMBER(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_NUMBER, p))
//#define SUPER_ORDNAME(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_NAME, p))
//#define SUPER_ORDBAGNAME(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_BAGNAME, p))
//#define SUPER_ORDBAGEXT(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_BAGEXT, p))
/* Establecimiento de filtros y  mbitos */
//#define SUPER_CLEARFILTER(w) ((*(SUPERTABLE)->clearFilter)(w))
//#define SUPER_CLEARLOCATE(w) ((*(SUPERTABLE)->clearLocate)(w))
//#define SUPER_CLEARSCOPE(w) ((*(SUPERTABLE)->clearScope)(w))
//#define SUPER_COUNTSCOPE(w,ip,lp) ((*(SUPERTABLE)->countScope)(w,ip,lp))
//#define SUPER_FILTERTEXT(w, bp) ((*(SUPERTABLE)->filterText)(w, bp))
//#define SUPER_SCOPEINFO(w,i,v) ((*(SUPERTABLE)->scopeInfo)(w,i,v))
//#define SUPER_SETFILTER(w, ip) ((*(SUPERTABLE)->setFilter)(w, ip))
//#define SUPER_SETLOCATE(w, ip) ((*(SUPERTABLE)->setLocate)(w, ip))
//#define SUPER_SETSCOPE(w, ip) ((*(SUPERTABLE)->setScope)(w, ip))
//#define SUPER_SKIPSCOPE(w, bp, l) ((*(SUPERTABLE)->skipScope)(w, bp, l))
/* Diversos */
//#define SUPER_COMPILE(w, bp) ((*(SUPERTABLE)->compile)(w, bp))
//#define SUPER_ERROR(w, ip) ((*(SUPERTABLE)->error)(w, ip))
//#define SUPER_EVALBLOCK(w, v) ((*(SUPERTABLE)->evalBlock)(w, v))
/* Operaciones de red */
//#define SUPER_GETLOCKS(w, g) ((*(SUPERTABLE)->info)(w, DBI_GETLOCKARRAY, g))
//#define SUPER_RAWLOCK(w, i, l) ((*(SUPERTABLE)->rawlock)(w, i, l))
//#define SUPER_LOCK(w, sp) ((*(SUPERTABLE)->lock)(w, sp))
//#define SUPER_UNLOCK(w) ((*(SUPERTABLE)->unlock)(w))
/* Funciones de ficheros memo */
//#define SUPER_CLOSEMEMFILE(w) ((*(SUPERTABLE)->closeMemFile)(w))
//#define SUPER_CREATEMEMFILE(w,bp) ((*(SUPERTABLE)->createMemFile)(w,bp))
//#define SUPER_GETVALUEFILE(w,i,bp,b) ((*(SUPERTABLE)->getValueFile)(w,i,bp,b))
//#define SUPER_OPENMEMFILE(w,bp) ((*(SUPERTABLE)->openMemFile)(w,bp))
//#define SUPER_PUTVALUEFILE(w,i,bp) ((*(SUPERTABLE)->putValueFile)(w,i,bp))
/* Manejo de cabeceras de ficheros de base de datos */
//#define SUPER_READDBHEADER(w) ((*(SUPERTABLE)->readDBHeader)(w))
//#define SUPER_WRITEDBHEADER(w) ((*(SUPERTABLE)->writeDBHeader)(w))
/* Operaciones Info */
//#define SUPER_RECSIZE(w, lp) ((*(SUPERTABLE)->info)(w, DBI_GETRECSIZE, lp))
//#define SUPER_HEADERSIZE(w, fp) ((*(SUPERTABLE)->info)(w, DBI_GETHEADERSIZE, fp))
//#define SUPER_LUPDATE(w, fp) ((*(SUPERTABLE)->info)(w, DBI_LASTUPDATE, fp ))
//#define SUPER_SETDELIM(w, fp) ((*(SUPERTABLE)->info)(w, DBI_SETDELIMITER, fp))
//#define SUPER_GETDELIM(w, fp) ((*(SUPERTABLE)->info)(w, DBI_GETDELIMITER, fp))
//#define SUPER_TABLEEXT(w, fp) ((*(SUPERTABLE)->info)(w, DBI_TABLEEXT, fp))
/*
* PROTOTIPOS
* ----------
*/
ERRCODE hb_rddInherit( PRDDFUNCS pTable, PRDDFUNCS pSubTable, PRDDFUNCS pSuperTable, PBYTE szDrvName );
//extern ERRCODE _rddDisinherit( BYTEP drvName );
//extern USHORT _rddExtendType( USHORT fieldType );
//extern USHORT _rddFieldType( USHORT extendType );
#endif