home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / psion / opp16f_zip / INCLUDE / SDK / ISAM.OPH < prev    next >
Encoding:
Text File  |  1995-12-21  |  4.9 KB  |  284 lines

  1. #define ISAM_OPH
  2.  
  3. #ifndef P_OBJECT_OPH
  4. #include <p\object>
  5. #endif
  6.  
  7. #ifndef P_DBF_OPH
  8. #include <p\dbf>
  9. #endif
  10.  
  11. #ifndef P_MATH_OPH
  12. #include <p\math>
  13. #endif
  14.  
  15. /* Category Numbers */
  16.  
  17. #ifdef EPOC
  18. #define CAT_ISAM_ISAM 0
  19. #endif
  20.  
  21. /* Property of isroot */
  22.  
  23. STRUCT PRS_ISROOT
  24.     pc#(SIZEOF(P_OBJECT))
  25. ENDS
  26.  
  27. STRUCT PR_ISROOT
  28.     isroot#(SIZEOF(PRS_ISROOT))
  29. ENDS
  30.  
  31. /* Property of darec */
  32.  
  33. STRUCT PR_DAREC
  34.     isroot#(SIZEOF(PRS_ISROOT))
  35. ENDS
  36.  
  37. /* Property of ixrec */
  38.  
  39. STRUCT PRS_IXREC
  40.     filterObj%
  41.     filterMeth%
  42.     dupObj%
  43.     dupMeth%
  44.     nMatch%
  45. ENDS
  46.  
  47. STRUCT PR_IXREC
  48.     isroot#(SIZEOF(PRS_ISROOT))
  49.     ixrec#(SIZEOF(PRS_IXREC))
  50. ENDS
  51.  
  52. /* Constants for isaman */
  53.  
  54. #define ISAM_MAX_INDEXES 8
  55. #define ISAM_MAX_KEY_LENGTH 64
  56. #define ISAM_MAX_DEFINED_FIELDS 32
  57. #define ISAM_MAX_KEYFIELDS 8
  58. #define ISAM_MAX_KEYDEF_LENGTH 66
  59. #define ISAM_MAX_FIELD_LENGTH 256
  60. #define ISAM_MAX_SEG_BLOCKS 1024
  61. #define ISAM_MIN_RECORD_BUFFER 512
  62. #define ISAM_MAX_RECORD_BUFFER 16384
  63. #define ISAM_MAX_RECORD_FIELDS 4094
  64. #define ISAM_RECORD_LENGTH_MASK 0xfff
  65. #define ISAM_BLOCK_SIZE 512
  66. #define ISAM_BLOCK_SHIFTS 9
  67. #define ISAM_FIELDTYPE_WORD 0
  68. #define ISAM_FIELDTYPE_UWORD 0x80
  69. #define ISAM_FIELDTYPE_LONG 1
  70. #define ISAM_FIELDTYPE_ULONG 0x81
  71. #define ISAM_FIELDTYPE_DOUBLE 2
  72. #define ISAM_FIELDTYPE_STRING 3
  73. #define ISAM_FIELDTYPE_BYTE 4
  74. #define ISAM_FIELDTYPE_UBYTE 0x84
  75. #define ISAM_FIELDTYPE_LIMIT 4
  76. #define ISAM_CONVERT_NOFOLD 0
  77. #define ISAM_CONVERT_FOLD 1
  78. #define ISAM_CONVERT_UPPER 2
  79. #define ISAM_CONVERT_LOWER 3
  80. #define ISAM_FIELDFLAG_ASCEND 0
  81. #define ISAM_FIELDFLAG_DESCEND 1
  82. #define ISAM_FLAG_ALLOWDUP 1
  83. #define ISAM_FLAG_MANUAL 2
  84. #define ISAM_FLAG_MINIMIZE 4
  85. #define ISAM_DEFAULT_FIELD_COUNT 32
  86. #define ISAM_DEFAULT_FIELD_TYPE ISAM_FIELDTYPE_STRING
  87. #define ISAM_DEFAULT_KEY_FIELD_COUNT 1
  88. #define ISAM_DEFAULT_KEY_STRING_LENGTH 8
  89. #define ISAM_DEFAULT_RADIX 10
  90. #define ISAM_DEFAULT_DTOB_WIDTH 20
  91. #define ISAM_DEFAULT_DTOB_POINT '.'
  92. #define ISAM_PANIC_CALL 160
  93. #define ISAM_PANIC_PARAM 161
  94.  
  95. /* Types for isaman */
  96.  
  97. STRUCT ISAM_FIELDDEF
  98.     nFields%
  99.     type#(ISAM_MAX_DEFINED_FIELDS)
  100. ENDS
  101.  
  102. STRUCT ISAM_KEY_FIELD
  103.     field%
  104.     type#
  105.     flags#
  106.     offset#
  107.     len#
  108.     convert%
  109. ENDS
  110.  
  111. STRUCT ISAM_KEYDEF
  112.     nKeyFields%
  113.     keyField#(OPPEVAL(SIZEOF(ISAM_KEY_FIELD)*ISAM_MAX_KEYFIELDS))
  114. ENDS
  115.  
  116. /* Property of isaman */
  117.  
  118. STRUCT PRS_ISAMAN
  119.     daRec%
  120.     ixRec%(ISAM_MAX_INDEXES)
  121.     ixCat%
  122.     ixClass%
  123.     iBufBlocks%
  124.     ref&
  125.     radix%
  126.     dFormat#(SIZEOF(P_DTOB))
  127.     rBufSize%
  128.     rBuf%
  129.     fieldInfo#(SIZEOF(ISAM_FIELDDEF))
  130.     keyDef#(SIZEOF(ISAM_KEYDEF))
  131.     zeroBuf#(8)
  132.     tempField#(ISAM_MAX_FIELD_LENGTH)
  133. ENDS
  134.  
  135. STRUCT PR_ISAMAN
  136.     isroot#(SIZEOF(PRS_ISROOT))
  137.     isaman#(SIZEOF(PRS_ISAMAN))
  138. ENDS
  139.  
  140. /* Property of btdbf */
  141.  
  142. STRUCT PR_BTDBF
  143.     isroot#(SIZEOF(PRS_ISROOT))
  144.     isaman#(SIZEOF(PRS_ISAMAN))
  145. ENDS
  146.  
  147. /* Property of dadbf */
  148.  
  149. STRUCT PRS_DADBF
  150.     pfcb%
  151.     buffer%
  152.     maxBufSize%
  153.     currentBufSize%
  154.     nextOffset%
  155.     recordType%
  156.     dataStart&
  157.     bufFilePos&
  158.     ref&
  159.     header#(SIZEOF(DbfHeader))
  160. ENDS
  161.  
  162. STRUCT PR_DADBF
  163.     isroot#(SIZEOF(PRS_ISROOT))
  164.     dadbf#(SIZEOF(PRS_DADBF))
  165. ENDS
  166.  
  167. /* Constants for ixbtree */
  168.  
  169. #define BT_SIG_LENGTH 16
  170. #define BT_INDEXFILE_VERSION 0x100F
  171. #define BT_INDEXFILE_TYPE1 1
  172. #define BT_MAX_LEVELS 10
  173.  
  174. /* Types for ixbtree */
  175.  
  176. STRUCT IXBTREE_FILE_HEADER
  177.     signature#(BT_SIG_LENGTH)
  178.     version%
  179.     type%
  180.     count&
  181.     rootBlock%
  182.     flags%
  183.     keyLen%
  184.     entryLen%
  185.     maxEntries%
  186.     keyDef#(ISAM_MAX_KEYDEF_LENGTH)
  187. ENDS
  188.  
  189. STRUCT IXBTREE_ENTRY
  190.     child%
  191.     ref&
  192.     key#(ISAM_MAX_KEY_LENGTH)
  193. ENDS
  194.  
  195. STRUCT IXBTREE_BLOCK
  196.     nEntries%
  197.     entry#(2)
  198. ENDS
  199.  
  200. STRUCT IXBTREE_STACK
  201.     blockNum%
  202.     entryNum%
  203. ENDS
  204.  
  205. /* Property of ixbtree */
  206.  
  207. STRUCT PRS_IXBTREE
  208.     fileId%
  209.     level%
  210.     blockNum%
  211.     entryNum%
  212.     ref&
  213.     pB%
  214.     stack#(OPPEVAL(SIZEOF(IXBTREE_STACK)*BT_MAX_LEVELS))
  215.     head#(SIZEOF(IXBTREE_FILE_HEADER))
  216. ENDS
  217.  
  218. STRUCT PR_IXBTREE
  219.     isroot#(SIZEOF(PRS_ISROOT))
  220.     ixrec#(SIZEOF(PRS_IXREC))
  221.     ixbtree#(SIZEOF(PRS_IXBTREE))
  222. ENDS
  223.  
  224. /* Constants for blocker */
  225.  
  226. #define BL_BLOCK_SIZE 512
  227. #define BL_BLOCK_SHIFTS 9
  228. #define BL_SEG_BLOCKS 20
  229. #define BL_DS_BLOCKS 4
  230. #define BL_BLOCK_GRANULARITY 4
  231. #define BL_MAX_FILES 32
  232. #define BL_SIG_LENGTH 16
  233. #define BL_FILE_VERSION 0x100F
  234. #define BL_LIST_SIZE 6
  235.  
  236. /* Types for blocker */
  237.  
  238. STRUCT BLOCKER_INFO
  239.     dirty%
  240.     totalBlocks%
  241.     ffBlock%
  242. ENDS
  243.  
  244. STRUCT BLOCKER_FILE_HEADER
  245.     signature#(BL_SIG_LENGTH)
  246.     version%
  247.     info#(SIZEOF(BLOCKER_INFO))
  248.     spare#(8)
  249. ENDS
  250.  
  251. STRUCT BLOCKER_FCB
  252.     chan%
  253.     actualBlocks%
  254.     info#(SIZEOF(BLOCKER_INFO))
  255. ENDS
  256.  
  257. STRUCT BLOCKER_DS_BUF
  258.     lru%
  259.     fileId%
  260.     block%
  261.     data#(BL_BLOCK_SIZE)
  262. ENDS
  263.  
  264. /* Property of blocker */
  265.  
  266. STRUCT PRS_BLOCKER
  267.     pBlock%
  268.     pFileId%
  269.     pDirty%
  270.     pLru%
  271.     segHandle%
  272.     maxBlocks%
  273.     nFiles%
  274.     currBuf%
  275.     fileCB#(OPPEVAL(SIZEOF(BLOCKER_FCB)*BL_MAX_FILES))
  276.     dsBuf#(OPPEVAL(SIZEOF(BLOCKER_DS_BUF)*BL_DS_BLOCKS))
  277.     temp#(BL_BLOCK_SIZE)
  278. ENDS
  279.  
  280. STRUCT PR_BLOCKER
  281.     isroot#(SIZEOF(PRS_ISROOT))
  282.     blocker#(SIZEOF(PRS_BLOCKER))
  283. ENDS
  284.