/* * $Id$ */ #ifndef HB_RDD_API #define HB_RDD_API typedef PBYTE BYTEP; typedef USHORT ERRCODE; // RDD method return codes #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 * ----------- * The field structure */ //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 num‚ricos //} 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 ( * DBENTRYP_SP )( AREAP area, USHORT * param ); //typedef USHORT (far * DBENTRYP_S)(AREAP area, USHORT param); //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 m‚dotos virtuales *-------------------*/ typedef struct _RDDFUNCS { /* M‚todos 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; // 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 */ /* M‚todos 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 */ /* M‚todos especiales y reservados */ // DBENTRYP_SVP whoCares; /* SVP */ } RDDFUNCS; typedef RDDFUNCS * PRDDFUNCS; #define RDDFUNCSCOUNT ( sizeof( RDDFUNCS ) / sizeof( DBENTRYP_V ) ) /*--------------------* SELF Methods *------------------------*/ /* Movement and positioning methods */ #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)) /* Data management */ #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)) /* WorkArea/Database management */ #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)) /* Relational Methods */ #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)) /* Order Management */ #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)) /* Filters and Scope Settings */ #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)) /* Miscellaneous */ #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)) /* Network operations */ #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)) /* Memofile functions */ #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)) /* Database file header handling */ #define SELF_READDBHEADER(w) ((*(w)->lprfsHost->readDBHeader)(w)) #define SELF_WRITEDBHEADER(w) ((*(w)->lprfsHost->writeDBHeader)(w)) /* Info operations */ #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)) /*--------------------* M‚todos SUPER *------------------------*/ /* M‚todos 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)) /* M‚todos 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)) /* * PROTOTYPES * ---------- */ ERRCODE hb_rddInherit( PRDDFUNCS pTable, PRDDFUNCS pSubTable, PRDDFUNCS pSuperTable, PBYTE szDrvName ); extern ERRCODE hb_rddDisinherit( BYTEP drvName ); extern USHORT hb_rddExtendType( USHORT fieldType ); extern USHORT hb_rddFieldType( USHORT extendType ); #endif