#ifndef __EXTCTYPE_H #define __EXTCTYPE_H #if !defined(__STDIO_H) && !defined(_INC_STDIO) #include #endif #ifndef __STDTTYPES_H #include #endif /* @M */ #ifdef __GNUC__ #define __PACKED__ __attribute__ ((packed)) #define __ALIGNED__ __attribute__ ((aligned(2))) #define __PACK_1__ #else #define __PACKED__ #define __ALIGNED__ #pragma pack(2) #endif /* @DES Tipi e macro da programmi C */ /* @M */ #define MaxFields 100 #define MKFields 10 #define MaxKeys 8 #define NORDIR 0 #define COMDIR 1 #define MaxArray 80 #define BPageLen 512 #define PHLen 20 #define AreaLen (BPageLen - PHLen) #define PDLen 28 #define FHRLen 32 #define MaxPD ((BPageLen - FHRLen) / PDLen) #define NOFLDS 10 #define MOSTMEM 51200 #define LEASTMEM 10240 /* @END */ /* @T */ typedef long TrDate; typedef char PathSt[42]; typedef char Str80[82]; typedef long RecNoType; typedef char *RecType; typedef char FieldName[12] ; typedef char TKey[MaxArray + 2]; typedef char AreaKey[AreaLen]; typedef char DataArea[BPageLen]; typedef struct { int F; FILE* Fd; int IOR; int LenRec; int BaseFil; unsigned LockMode; RecNoType lpos; PathSt name; } SecDef ; typedef struct { char SysName[42] __PACKED__ ; RecNoType EOD __PACKED__ ; RecNoType EOX __PACKED__ ; UINT16 LenR __PACKED__ ; RecNoType Flags __PACKED__ ; char Des[42] __PACKED__ ; char FCalc[32] __PACKED__ ; char GenPrompt[32] __PACKED__ ; } FileDes; typedef struct { FieldName Name __PACKED__ ; byte TypeF __PACKED__; byte Len __PACKED__ ; byte Dec __PACKED__ ; #ifdef __PACK_1__ byte junk __PACKED__ ; #endif UINT16 RecOff __PACKED__ ; } RecFieldDes ; typedef struct { word DupKeys __ALIGNED__ ; byte NkFields __ALIGNED__ ; byte FieldSeq[MKFields] __PACKED__ ; byte FromCh[MKFields] __PACKED__ ; byte ToCh[MKFields] __PACKED__ ; } KeyDes ; typedef struct { INT16 NFields __PACKED__ ; RecFieldDes Fd[MaxFields] __PACKED__ ; byte SortFd[MaxFields] __PACKED__ ; INT16 NKeys __PACKED__ ; KeyDes Ky[MaxKeys] __PACKED__ ; } RecDes ; typedef struct { RecNoType RootBlock __PACKED__ ; INT16 KeyLen __PACKED__ ; bool DupKeys __PACKED__ ; #ifdef __PACK_1__ byte junk; #endif INT16 NKNode __PACKED__ ; INT16 MaxKNode __PACKED__ ; INT16 MinKNode __PACKED__ ; RecNoType PEOD __PACKED__ ; RecNoType PEOX __PACKED__ ; INT16 Flags[3] __PACKED__ ; } PD ; typedef PD PathsArray[MaxPD]; typedef struct { byte TPage __PACKED__ ; #ifdef __PACK_1__ byte junk; #endif INT16 PathNumber __PACKED__ ; INT16 Flags __PACKED__ ; RecNoType Father __PACKED__ ; RecNoType Prev __PACKED__ ; RecNoType Next __PACKED__ ; INT16 NKey __PACKED__ ; } PHR ; typedef struct { RecNoType FFBlock __PACKED__ ; RecNoType CABlock __PACKED__ ; RecNoType NBEOX __PACKED__ ; RecNoType NBEOD __PACKED__ ; INT16 Filler[3] __PACKED__ ; INT16 Flags[4] __PACKED__ ; INT16 DPN __PACKED__ ; } FHR ; typedef struct { FHR Header __PACKED__ ; PathsArray Paths __PACKED__ ; } CA ; typedef union { struct { PHR PageHeader __PACKED__ ; AreaKey AreaForKey __PACKED__ ; } PA __PACKED__ ; CA CtrlArea __PACKED__ ; DataArea BuffIO __PACKED__ ; } Page; #pragma pack() typedef struct { SecDef Fil; FHR FHead; INT16 PN; PathsArray Base; TKey Key; RecNoType Ind; INT16 Pos; RecNoType CurPag; } FilCtrl ; typedef struct { int fhnd; FileDes *d; RecDes *r; RecNoType RecNo; INT16 ln; INT16 ft; int knum; } isdef ; typedef isdef* isfdptr; struct s_prm { int rc_len; struct { int f_pos; int f_len; char ad; } s_fld [NOFLDS]; }; /* @END */ #endif /* __EXTCTYPE_H */