diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 7fecbafa80..a74ce7b831 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,7 +1,32 @@ +19990731-06:50 CET Victor Szel + * include/extend.h + include/hbdefs.h + include/errorapi.h + More small cleanups, additions. + + include/clipdefs.h + Added Clipper compatible header file. (not tested) + + include/*.api - Added a file description line. + Added a line which warns users not to use these + files for new Harbour code. + + include/caundoc.api - Contains undocumented API declarations + (only wrappers as of now). + Original idea by Bruno Cantero . + * include/rdd.api most of the content moved to include/rddapi.h + source\rdd\dbfntx\dbfntx1.c + source\rdd\dbcmd.c + source\rdd\dbf1.c + source\rdd\delim1.c + source\rdd\sdf1.c + *.api files are for compatibility only, not for + new harbour code. + + doc/hdr_tpl.txt - Small modification RCS ID and licenc part + of the header separated. + * include/*.* - Standardized (again) RCS ID and licenc headers. + 19990731-06:40 GMT+2 Ryszard Glaaab *source/compiler/harbour.y * PUBLIC and PRIVATE variables referenced inside a codeblock - can be used to initiialize a staatic variables + can be used to initialize a static variables 19990731-06:00 CET Victor Szel + include/achoice.ch diff --git a/harbour/doc/hdr_tpl.txt b/harbour/doc/hdr_tpl.txt index 5e56feed7e..32496c3a4f 100644 --- a/harbour/doc/hdr_tpl.txt +++ b/harbour/doc/hdr_tpl.txt @@ -4,8 +4,11 @@ FILE HEADER TEMPLATE ==================== -/* $Id$ +/* + * $Id$ + */ +/* Harbour Project source code (one/two-liner description about the purpose of this source file) @@ -35,6 +38,8 @@ FILE HEADER TEMPLATE Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit their web site at http://www.gnu.org/). + V 1.6 Victor Szel RCS Id section separated from + Licenc text. V 1.5 Victor Szel Small name correction. V 1.4 David G. Holm Removed "(C)" from Copyright notice Put author's name rather than date diff --git a/harbour/include/caundoc.api b/harbour/include/caundoc.api new file mode 100644 index 0000000000..57a25bccfd --- /dev/null +++ b/harbour/include/caundoc.api @@ -0,0 +1,28 @@ +/* + * $Id$ + */ + +/* CA-Cl*pper API Compatibility Header File */ +/* DON'T USE THIS FILE FOR NEW HARBOUR C CODE */ + +/* This file contains widely used but undocumented APIs */ + +#ifndef HB_CAUNDOC_API_ +#define HB_CAUNDOC_API_ + +/* Undocumented TSUPPORT API */ + +#include "filesys.h" + +#define _tcreat hb_fsCreate +#define _tunlink hb_fsDelete +#define _topen hb_fsOpen +#define _tclose hb_fsClose +#define _tread hb_fsRead +#define _twrite hb_fsWrite +#define _tlseek hb_fsSeek +#define _trename hb_fsRename +#define _tlock hb_fsLock +#define _tcommit hb_fsCommit + +#endif /* HB_CAUNDOC_API_ */ diff --git a/harbour/include/classes.ch b/harbour/include/classes.ch index aaa475b29d..bedaa86d1d 100644 --- a/harbour/include/classes.ch +++ b/harbour/include/classes.ch @@ -1,5 +1,8 @@ -/* $Id$ +/* + * $Id$ + */ +/* Harbour classes commands Copyright(C) 1999 by Antonio Linares. diff --git a/harbour/include/clipdefs.h b/harbour/include/clipdefs.h new file mode 100644 index 0000000000..c1f50f6530 --- /dev/null +++ b/harbour/include/clipdefs.h @@ -0,0 +1,75 @@ +/* + * $Id$ + */ + +/* CA-Cl*pper Compatibility Header File */ +/* DON'T USE THIS FILE FOR NEW HARBOUR C CODE */ + +/* This file is provided to support some level of */ +/* Harbour compatibility for old Clipper C extension code */ + +#ifndef HB_CLIPDEFS_H_ +#define HB_CLIPDEFS_H_ + +#include "hbdefs.h" + +/* old types */ +typedef BYTE byte; +typedef USHORT quant; +typedef BOOL Boolean; + +/* new types */ +typedef BYTE* BYTEP; +typedef BYTEP PBYTE; +typedef BYTEP BYTEPP; + +typedef SHORT* SHORTP; +typedef SHORTP PSHORT; + +typedef USHORT* USHORTP; +typedef USHORTP PUSHORT; + +typedef WORD* WORDP; +typedef WORDP PWORD; + +typedef LONG* LONGP; +typedef LONGP PLONG; + +typedef ULONG* ULONGP; +typedef ULONGP PULONG; + +typedef DWORD* DWORDP; +typedef DWORDP PDWORD; + +typedef BOOL* BOOLP; +typedef BOOLP PBOOL; + +typedef void* NEARP; +typedef NEARP* NEARPP; + +typedef void* FARP; +typedef FARP* FARPP; + +typedef FARP VOIDP; +typedef FARP PVOID; + +typedef void* HANDLE; +typedef USHORT ERRCODE; +typedef ERRCODE IHELP; +typedef ERRCODE ICODE; + +/* default func ptr -- USHORT return, USHORT param */ +typedef USHORT (far * FUNCP)(USHORT param, ...); +typedef FUNCP* FUNCPP; + +#define HIDE static +#define CLIPPER HARBOUR + +#ifndef NIL + #define NIL '\0' +#endif +#ifndef NULL + #define NULL 0 +#endif + +#endif /* HB_CLIPDEFS_H_ */ diff --git a/harbour/include/compiler.h b/harbour/include/compiler.h index 52c87feb40..9a9bebb91b 100644 --- a/harbour/include/compiler.h +++ b/harbour/include/compiler.h @@ -1,6 +1,8 @@ /* * $Id$ + */ +/* Copyright(C) 1999 by Antonio Linares. This program is free software; you can redistribute it and/or modify diff --git a/harbour/include/ctoharb.h b/harbour/include/ctoharb.h index 346fb1eec0..a08254d4fe 100644 --- a/harbour/include/ctoharb.h +++ b/harbour/include/ctoharb.h @@ -1,6 +1,8 @@ /* * $Id$ + */ +/* Copyright(C) 1999 by Antonio Linares. This program is free software; you can redistribute it and/or modify diff --git a/harbour/include/error.api b/harbour/include/error.api index abdb2024a3..1fe17f94b6 100644 --- a/harbour/include/error.api +++ b/harbour/include/error.api @@ -2,6 +2,9 @@ * $Id$ */ +/* CA-Cl*pper API Compatibility Header File */ +/* DON'T USE THIS FILE FOR NEW HARBOUR C CODE */ + #ifndef HB_ERROR_API_ #define HB_ERROR_API_ diff --git a/harbour/include/extend.api b/harbour/include/extend.api index 7ac257da04..ee5de2fb27 100644 --- a/harbour/include/extend.api +++ b/harbour/include/extend.api @@ -2,6 +2,9 @@ * $Id$ */ +/* CA-Cl*pper API Compatibility Header File */ +/* DON'T USE THIS FILE FOR NEW HARBOUR C CODE */ + #ifndef HB_EXTEND_API_ #define HB_EXTEND_API_ diff --git a/harbour/include/extend.h b/harbour/include/extend.h index 7ac0b90b40..2cf549ce67 100644 --- a/harbour/include/extend.h +++ b/harbour/include/extend.h @@ -1,6 +1,8 @@ -/* +/* * $Id$ + */ +/* Copyright(C) 1999 by Antonio Linares. This program is free software; you can redistribute it and/or modify @@ -20,7 +22,7 @@ 675 Mass Ave, Cambridge, MA 02139, USA. You can contact me at: alinares@fivetech.com - */ +*/ #ifndef HB_EXTEND_H_ #define HB_EXTEND_H_ @@ -32,6 +34,12 @@ #include "hbdefs.h" #include "hbsetup.h" +#ifdef HARBOUR_STRICT_CLIPPER_COMPATIBILITY + /* Clipper includes these from its extend.h */ + #include "extend.api" + #include "fm.api" +#endif + struct _DYNSYM; /* forward declaration */ typedef struct /* symbol support structure */ @@ -84,101 +92,101 @@ struct _HB_VALUE; /* Internal structures that holds data */ struct hb_struArray { - struct _HB_BASEARRAY * value; + struct _HB_BASEARRAY * value; }; struct hb_struBlock { - LONG statics; - WORD lineno; - WORD paramcnt; - struct _HB_CODEBLOCK * value; + LONG statics; + WORD lineno; + WORD paramcnt; + struct _HB_CODEBLOCK * value; }; struct hb_struDate { - WORD length; - LONG value; + WORD length; + LONG value; }; struct hb_struDouble { - WORD length; - WORD decimal; - double value; + WORD length; + WORD decimal; + double value; }; struct hb_struInteger { - WORD length; - WORD decimal; - int value; + WORD length; + WORD decimal; + int value; }; struct hb_struLogical { - WORD length; - WORD value; + WORD length; + WORD value; }; struct hb_struLong { - WORD length; - WORD decimal; - long value; + WORD length; + WORD decimal; + long value; }; struct hb_struMemvar { - struct _HB_VALUE * *itemsbase; - LONG offset; - LONG value; + struct _HB_VALUE * *itemsbase; + LONG offset; + LONG value; }; struct hb_struPointer { - PVOID value; + PVOID value; }; struct hb_struRefer { - struct _HB_ITEM * *itemsbase; - LONG offset; - LONG value; + struct _HB_ITEM * *itemsbase; + LONG offset; + LONG value; }; struct hb_struString { - ULONG length; - char *value; + ULONG length; + char *value; }; struct hb_struSymbol { - LONG stackbase; - WORD lineno; - WORD paramcnt; - PSYMBOL value; + LONG stackbase; + WORD lineno; + WORD paramcnt; + PSYMBOL value; }; typedef struct _HB_ITEM /* items hold at the virtual machine stack */ { - WORD type; - union - { - struct hb_struArray asArray; - struct hb_struBlock asBlock; - struct hb_struDate asDate; - struct hb_struDouble asDouble; - struct hb_struInteger asInteger; - struct hb_struLogical asLogical; - struct hb_struLong asLong; - struct hb_struMemvar asMemvar; - struct hb_struPointer asPointer; - struct hb_struRefer asRefer; - struct hb_struString asString; - struct hb_struSymbol asSymbol; - } item; + WORD type; + union + { + struct hb_struArray asArray; + struct hb_struBlock asBlock; + struct hb_struDate asDate; + struct hb_struDouble asDouble; + struct hb_struInteger asInteger; + struct hb_struLogical asLogical; + struct hb_struLong asLong; + struct hb_struMemvar asMemvar; + struct hb_struPointer asPointer; + struct hb_struRefer asRefer; + struct hb_struString asString; + struct hb_struSymbol asSymbol; + } item; } HB_ITEM, *PHB_ITEM; typedef PHB_ITEM HB_ITEM_PTR; diff --git a/harbour/include/fileio.ch b/harbour/include/fileio.ch index 9e467a75ce..a242b736f4 100644 --- a/harbour/include/fileio.ch +++ b/harbour/include/fileio.ch @@ -1,5 +1,8 @@ -/* $Id$ +/* + * $Id$ + */ +/* Harbour Project source code This module contains the defines needed for Harbour programs to use diff --git a/harbour/include/filesys.api b/harbour/include/filesys.api index ceaa860c8e..0cb6b3f9ee 100644 --- a/harbour/include/filesys.api +++ b/harbour/include/filesys.api @@ -1,5 +1,8 @@ -/* $Id$ +/* + * $Id$ + */ +/* Harbour Project source code This module contains Clipper to Harbour conversions for FILE management. @@ -39,6 +42,9 @@ V 1.0 David G. Holm Initial version. */ +/* CA-Cl*pper API Compatibility Header File */ +/* DON'T USE THIS FILE FOR NEW HARBOUR C CODE */ + #ifndef HB_FILESYS_API_ #define HB_FILESYS_API_ diff --git a/harbour/include/filesys.h b/harbour/include/filesys.h index 736cc3d8b4..c54b34c302 100644 --- a/harbour/include/filesys.h +++ b/harbour/include/filesys.h @@ -1,5 +1,8 @@ -/* $Id$ +/* + * $Id$ + */ +/* Harbour Project source code This module contains the Harbour declarations for FILE management. diff --git a/harbour/include/fm.api b/harbour/include/fm.api index c4b537b729..d64371cc0e 100644 --- a/harbour/include/fm.api +++ b/harbour/include/fm.api @@ -2,6 +2,9 @@ * $Id$ */ +/* CA-Cl*pper API Compatibility Header File */ +/* DON'T USE THIS FILE FOR NEW HARBOUR C CODE */ + #ifndef HB_FM_API_ #define HB_FM_API_ diff --git a/harbour/include/gt.api b/harbour/include/gt.api index 9ce97980fa..a476933f14 100644 --- a/harbour/include/gt.api +++ b/harbour/include/gt.api @@ -2,6 +2,9 @@ * $Id$ */ +/* CA-Cl*pper API Compatibility Header File */ +/* DON'T USE THIS FILE FOR NEW HARBOUR C CODE */ + #ifndef HB_GT_API_ #define HB_GT_API_ diff --git a/harbour/include/hbdefs.h b/harbour/include/hbdefs.h index 374d66c2aa..a27abe418c 100644 --- a/harbour/include/hbdefs.h +++ b/harbour/include/hbdefs.h @@ -32,6 +32,9 @@ #if ! defined(HB_DONT_DEFINE_BASIC_TYPES) +#undef PVOID +typedef void * PVOID; + #undef BYTE typedef unsigned char BYTE, * PBYTE; /* 1 byte unsigned */ @@ -46,19 +49,20 @@ typedef unsigned short int USHORT; #undef LONG /* 4 bytes signed */ typedef long LONG; + +#undef ULONG /* 4 bytes signed */ typedef unsigned long ULONG; #undef DWORD /* 4 bytes unsigned */ typedef unsigned long DWORD; +#undef BOOL /* boolean */ +typedef int BOOL; + #undef FALSE #undef TRUE #define FALSE 0 #define TRUE 1 -typedef int BOOL; - -#undef PVOID -typedef void * PVOID; #ifndef MAX #define MAX(a,b) (((a) > (b)) ? (a) : (b)) diff --git a/harbour/include/hberrors.h b/harbour/include/hberrors.h index 364f6853eb..36ae8b6e94 100644 --- a/harbour/include/hberrors.h +++ b/harbour/include/hberrors.h @@ -1,6 +1,7 @@ /* * $Id$ */ + /* Harbour Project source code diff --git a/harbour/include/hbsetup.h b/harbour/include/hbsetup.h index b0bdabca9d..f969155ba1 100644 --- a/harbour/include/hbsetup.h +++ b/harbour/include/hbsetup.h @@ -1,10 +1,11 @@ /* * $Id$ -*/ -/* - Harbour Project source code + */ - Harbour compiler and runtime configuration file +/* + Harbour Project source code + + Harbour compiler and runtime configuration file Copyright 1999 Ryszard Glab www - http://www.harbour-project.org diff --git a/harbour/include/hbver.h b/harbour/include/hbver.h index 4009eac0b3..aae4e20c4a 100644 --- a/harbour/include/hbver.h +++ b/harbour/include/hbver.h @@ -1,5 +1,8 @@ -/* $Id$ +/* + * $Id$ + */ +/* Harbour Project source code Defines the version information that can be queried via HB_VERSION() diff --git a/harbour/include/inkey.h b/harbour/include/inkey.h index 67094d9d1e..95269ee364 100644 --- a/harbour/include/inkey.h +++ b/harbour/include/inkey.h @@ -1,5 +1,8 @@ -/* $Id$ +/* + * $Id$ + */ +/* Harbour Project source code This module contains the Harbour declarations for INKEY management. diff --git a/harbour/include/item.api b/harbour/include/item.api index 7a3a58bba1..09f0437de6 100644 --- a/harbour/include/item.api +++ b/harbour/include/item.api @@ -2,6 +2,9 @@ * $Id$ */ +/* CA-Cl*pper API Compatibility Header File */ +/* DON'T USE THIS FILE FOR NEW HARBOUR C CODE */ + #ifndef HB_ITEM_API_ #define HB_ITEM_API_ diff --git a/harbour/include/itemapi.h b/harbour/include/itemapi.h index 5f7fd37bff..a75e2e91cc 100644 --- a/harbour/include/itemapi.h +++ b/harbour/include/itemapi.h @@ -1,6 +1,8 @@ /* * $Id$ + */ +/* Copyright(C) 1999 by Antonio Linares. This program is free software; you can redistribute it and/or modify diff --git a/harbour/include/pcode.h b/harbour/include/pcode.h index fcfc306f22..0501193771 100644 --- a/harbour/include/pcode.h +++ b/harbour/include/pcode.h @@ -1,6 +1,8 @@ /* * $Id$ + */ +/* Copyright(C) 1999 by Antonio Linares. This program is free software; you can redistribute it and/or modify diff --git a/harbour/include/rdd.api b/harbour/include/rdd.api index c7f2363025..7d2e64af43 100644 --- a/harbour/include/rdd.api +++ b/harbour/include/rdd.api @@ -2,987 +2,12 @@ * $Id$ */ +/* CA-Cl*pper API Compatibility Header File */ +/* DON'T USE THIS FILE FOR NEW HARBOUR C CODE */ + #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 ); - +#include "rddapi.h" #endif /* HB_RDD_API_ */ diff --git a/harbour/include/rddapi.h b/harbour/include/rddapi.h new file mode 100644 index 0000000000..8ba0d49aac --- /dev/null +++ b/harbour/include/rddapi.h @@ -0,0 +1,985 @@ +/* + * $Id$ + */ + +#ifndef HB_RDDAPI_H_ +#define HB_RDDAPI_H_ + +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 /* HB_RDDAPI_H_ */ diff --git a/harbour/include/set.ch b/harbour/include/set.ch index bb0c876292..e48b2b9241 100644 --- a/harbour/include/set.ch +++ b/harbour/include/set.ch @@ -1,5 +1,8 @@ -/* $Id$ +/* + * $Id$ + */ +/* Harbour Project source code This module contains the defines needed for Harbour programs to use diff --git a/harbour/include/set.h b/harbour/include/set.h index 794827e438..6842fe1571 100644 --- a/harbour/include/set.h +++ b/harbour/include/set.h @@ -1,5 +1,8 @@ -/* $Id$ +/* + * $Id$ + */ +/* Harbour Project source code This module contains the Harbour declarations for SET management. diff --git a/harbour/include/vm.api b/harbour/include/vm.api index c53559ad77..f311ef95be 100644 --- a/harbour/include/vm.api +++ b/harbour/include/vm.api @@ -2,10 +2,13 @@ * $Id$ */ +/* CA-Cl*pper API Compatibility Header File */ +/* DON'T USE THIS FILE FOR NEW HARBOUR C CODE */ + #ifndef HB_VM_API_ #define HB_VM_API_ -#define HANDLE void* +typedef void* HANDLE; /* Standard */ #define _xvalloc(size, flags) hb_xalloc(size) diff --git a/harbour/source/rdd/dbcmd.c b/harbour/source/rdd/dbcmd.c index 64b1a1ec4f..14cee99e09 100644 --- a/harbour/source/rdd/dbcmd.c +++ b/harbour/source/rdd/dbcmd.c @@ -26,8 +26,8 @@ #include "init.h" #include "itemapi.h" #include "errorapi.h" +#include "rddapi.h" #include "set.h" -#include "rdd.api" #include "rddsys.ch" #include "ctoharb.h" #include "set.ch" diff --git a/harbour/source/rdd/dbf1.c b/harbour/source/rdd/dbf1.c index ec7a5f49b6..e28c4d48ab 100644 --- a/harbour/source/rdd/dbf1.c +++ b/harbour/source/rdd/dbf1.c @@ -24,8 +24,8 @@ #include "extend.h" #include "init.h" +#include "rddapi.h" #include "rddsys.ch" -#include "rdd.api" HARBOUR HB__DBF( void ); HARBOUR HB_DBF_GETFUNCTABLE( void ); diff --git a/harbour/source/rdd/dbfntx/dbfntx1.c b/harbour/source/rdd/dbfntx/dbfntx1.c index 3f891cb6f8..af57669d91 100644 --- a/harbour/source/rdd/dbfntx/dbfntx1.c +++ b/harbour/source/rdd/dbfntx/dbfntx1.c @@ -24,8 +24,8 @@ #include "extend.h" #include "init.h" +#include "rddapi.h" #include "rddsys.ch" -#include "rdd.api" HARBOUR HB__DBFNTX( void ); HARBOUR HB_DBFNTX_GETFUNCTABLE( void ); diff --git a/harbour/source/rdd/delim1.c b/harbour/source/rdd/delim1.c index 2c43f251d7..e35be70c73 100644 --- a/harbour/source/rdd/delim1.c +++ b/harbour/source/rdd/delim1.c @@ -24,8 +24,8 @@ #include "extend.h" #include "init.h" +#include "rddapi.h" #include "rddsys.ch" -#include "rdd.api" HARBOUR HB__DELIM( void ); HARBOUR HB_DELIM_GETFUNCTABLE( void ); diff --git a/harbour/source/rdd/sdf1.c b/harbour/source/rdd/sdf1.c index a3c79ddc28..0c3b3c54af 100644 --- a/harbour/source/rdd/sdf1.c +++ b/harbour/source/rdd/sdf1.c @@ -24,8 +24,8 @@ #include "extend.h" #include "init.h" +#include "rddapi.h" #include "rddsys.ch" -#include "rdd.api" HARBOUR HB__SDF( void ); HARBOUR HB_SDF_GETFUNCTABLE( void );