PageRenderTime 92ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 1ms

/tags/build46/harbour/contrib/rdd_ads/ace.h

#
C++ Header | 1477 lines | 1076 code | 217 blank | 184 comment | 13 complexity | 77f4484a94e12a2028617e55076dec27 MD5 | raw file
Possible License(s): AGPL-1.0, BSD-3-Clause, CC-BY-SA-3.0, LGPL-3.0, GPL-2.0, LGPL-2.0, LGPL-2.1

Large files files are truncated, but you can click here to view the full file

  1. // Copyright (c) 2002-2003 Extended Systems, Inc. ALL RIGHTS RESERVED.
  2. //
  3. // This source code can be used, modified, or copied by the licensee as long as
  4. // the modifications (or the new binary resulting from a copy or modification of
  5. // this source code) are used with Extended Systems' products. The source code
  6. // is not redistributable as source code, but is redistributable as compiled
  7. // and linked binary code. If the source code is used, modified, or copied by
  8. // the licensee, Extended Systems Inc. reserves the right to receive from the
  9. // licensee, upon request, at no cost to Extended Systems Inc., the modifications.
  10. //
  11. // Extended Systems Inc. does not warrant that the operation of this software
  12. // will meet your requirements or that the operation of the software will be
  13. // uninterrupted, be error free, or that defects in software will be corrected.
  14. // This software is provided "AS IS" without warranty of any kind. The entire
  15. // risk as to the quality and performance of this software is with the purchaser.
  16. // If this software proves defective or inadequate, purchaser assumes the entire
  17. // cost of servicing or repair. No oral or written information or advice given
  18. // by an Extended Systems Inc. representative shall create a warranty or in any
  19. // way increase the scope of this warranty.
  20. /*******************************************************************************
  21. * Source File : ace.h
  22. * Description : This is the main header file for the Advantage Client
  23. * Engine. It contains the type definitions, constants,
  24. * and prototypes for the APIs
  25. *******************************************************************************/
  26. #ifndef __ACE_INCLUDED__
  27. #define __ACE_INCLUDED__
  28. #if defined( unix ) || defined(__LINUX__)
  29. #ifndef ADS_LINUX
  30. #define ADS_LINUX
  31. #endif
  32. #endif
  33. #if defined( ADS_LINUX )
  34. /* #include "unixutils.h" */
  35. #define ADS_PATH_DELIMITER '/'
  36. #ifdef ASANLM
  37. #define delay(x) AdsSleep(x)
  38. #endif
  39. #endif
  40. #if defined( ADS_LINUX ) && defined( ACE )
  41. /* This makes the callback functions compile in linux */
  42. #define WINAPI /* nothing */
  43. #define FARPROC void*
  44. #define HWND void*
  45. #endif // ADS_LINUX && ACE
  46. #ifdef ADS_LINUX
  47. #pragma pack( 1 )
  48. #else
  49. #pragma pack( push, 1 )
  50. #endif
  51. #if defined( WIN32 ) && !defined( SNAPDUMP )
  52. #define ADS_WIN32
  53. #endif
  54. /* This forces a warning for single equals in if statements */
  55. #ifdef WIN32
  56. /* 16-bit compiler doesn't seem to like this */
  57. #ifndef __GNUC__
  58. #pragma warning( error : 4706 )
  59. #endif
  60. #define ADS_PATH_DELIMITER '\\'
  61. #endif
  62. /* added to get access() prototype */
  63. #if defined( ADS_LINUX ) && !defined( NATIVE_SQL )
  64. #include <unistd.h>
  65. #endif
  66. /* data type definitions */
  67. #ifndef RDDUNVRS_H
  68. typedef unsigned long UNSIGNED32;
  69. typedef long SIGNED32;
  70. typedef unsigned short UNSIGNED16;
  71. typedef short SIGNED16;
  72. typedef unsigned char UNSIGNED8;
  73. typedef char SIGNED8;
  74. #endif
  75. typedef unsigned long ADSHANDLE;
  76. typedef double DOUBLE;
  77. #ifdef WIN32
  78. typedef ULONGLONG UNSIGNED64;
  79. typedef LONGLONG SIGNED64;
  80. #elif defined( NLM ) && !defined( ADS_LINUX )
  81. #ifndef ADS_64INTS
  82. #define ADS_64INTS
  83. typedef __int64 SIGNED64;
  84. typedef unsigned __int64 UNSIGNED64;
  85. #endif
  86. #elif defined( ADS_LINUX ) || defined( __linux__ )
  87. /* <sys/types.h> is required for loff_t (64bit ints) */
  88. #include <sys/types.h>
  89. /* use a define here to solve 64bit int typedef problems, see wincompat.h & rddunvrs.h */
  90. #ifndef ADS_64INTS
  91. #define ADS_64INTS
  92. typedef loff_t UNSIGNED64;
  93. typedef loff_t SIGNED64;
  94. #endif
  95. #endif
  96. #define VOID void
  97. #define EXTERN extern
  98. #define STATIC static
  99. #if defined( ASANT ) || defined( ADS_NT ) || defined( ADS_WIN9X )
  100. #define ENTRYPOINT WINAPI
  101. #elif defined( ASANLM ) || defined( ADS_LINUX ) || defined( NLM )
  102. #define ENTRYPOINT
  103. #elif defined( WIN32 ) && !defined( __BORLANDC__ )
  104. #if defined( __WATCOMC__ ) || defined( __LCC__ )
  105. #define ENTRYPOINT __declspec( dllexport ) WINAPI
  106. #else
  107. #define ENTRYPOINT _declspec( dllexport ) WINAPI
  108. #endif
  109. #else
  110. #if defined( __BORLANDC__ )
  111. #define ENTRYPOINT _declspec( dllexport ) WINAPI
  112. #else
  113. #define ENTRYPOINT _export WINAPI
  114. #endif
  115. #endif
  116. /* Logical constants */
  117. #define ADS_FALSE 0
  118. #define ADS_TRUE 1
  119. /* This is for parameters to routines that accept a default setting */
  120. #define ADS_DEFAULT 0
  121. /* character set types */
  122. #define ADS_ANSI 1
  123. #define ADS_OEM 2
  124. /* rights checking options */
  125. #define ADS_CHECKRIGHTS 1
  126. #define ADS_IGNORERIGHTS 2
  127. /* options for connecting to Advantage servers - can be ORed together */
  128. #define ADS_INC_USERCOUNT 0x00000001
  129. #define ADS_STORED_PROC_CONN 0x00000002
  130. #define ADS_COMPRESS_ALWAYS 0x00000004
  131. #define ADS_COMPRESS_NEVER 0x00000008
  132. #define ADS_COMPRESS_INTERNET 0x0000000C
  133. /* options for opening tables - can be ORed together */
  134. #define ADS_EXCLUSIVE 0x00000001
  135. #define ADS_READONLY 0x00000002
  136. #define ADS_SHARED 0x00000004
  137. #define ADS_CLIPPER_MEMOS 0x00000008
  138. #define ADS_TABLE_PERM_READ 0x00000010
  139. #define ADS_TABLE_PERM_UPDATE 0x00000020
  140. #define ADS_TABLE_PERM_INSERT 0x00000040
  141. #define ADS_TABLE_PERM_DELETE 0x00000080
  142. #define ADS_REINDEX_ON_COLLATION_MISMATCH 0x00000100
  143. #define ADS_IGNORE_COLLATION_MISMATCH 0x00000200
  144. //#define unpublished 0x00000400
  145. //#define unpublished 0x00000800
  146. #define ADS_DICTIONARY_BOUND_TABLE 0x00001000
  147. /* Options for creating indexes - can be ORed together */
  148. #define ADS_ASCENDING 0x00000000
  149. #define ADS_UNIQUE 0x00000001
  150. #define ADS_COMPOUND 0x00000002
  151. #define ADS_CUSTOM 0x00000004
  152. #define ADS_DESCENDING 0x00000008
  153. #define ADS_USER_DEFINED 0x00000010
  154. /* Options specifically for FTS indexes */
  155. #define ADS_FTS_INDEX 0x00000020 // This is implied for AdsCreateFTSIndex
  156. #define ADS_FTS_FIXED 0x00000040 // Do not maintain the index with record updates
  157. #define ADS_FTS_CASE_SENSITIVE 0x00000080 // Make the index case sensitive
  158. #define ADS_FTS_KEEP_SCORE 0x00000100 // Track word counts in the index for faster SCORE()
  159. #define ADS_FTS_PROTECT_NUMBERS 0x00000200 // Don't break numbers on commas and periods
  160. /* Options for returning string values */
  161. #define ADS_NONE 0x0000
  162. #define ADS_LTRIM 0x0001
  163. #define ADS_RTRIM 0x0002
  164. #define ADS_TRIM 0x0003
  165. /* this is for passing null terminated strings */
  166. #define ADS_NTS ( ( UNSIGNED16 ) -1 )
  167. /* locking compatibility */
  168. #define ADS_COMPATIBLE_LOCKING 0
  169. #define ADS_PROPRIETARY_LOCKING 1
  170. /* settings for seeks */
  171. #define ADS_SOFTSEEK 0x0001
  172. #define ADS_HARDSEEK 0x0002
  173. #define ADS_SEEKGT 0x0004
  174. /* data types for seeks (and scopes) */
  175. #define ADS_RAWKEY 1 /* no conversion performed on given data */
  176. #define ADS_STRINGKEY 2 /* data given as a string */
  177. #define ADS_DOUBLEKEY 4 /* data is a pointer to 8 byte double */
  178. /* For retrieving scope settings */
  179. #define ADS_TOP 1
  180. #define ADS_BOTTOM 2
  181. /* for calls that can optionally use filters */
  182. #define ADS_RESPECTFILTERS 0x0001
  183. #define ADS_IGNOREFILTERS 0x0002
  184. #define ADS_RESPECTSCOPES 0x0003
  185. /*
  186. * This value is only used with GetRecordCount: It can be ORed in with the
  187. * ignore filter value to force a read from the table header to get the most
  188. * current record count.
  189. */
  190. #define ADS_REFRESHCOUNT 0x0004
  191. /* Server type constants */
  192. #define ADS_LOCAL_SERVER 0x0001
  193. #define ADS_REMOTE_SERVER 0x0002
  194. #define ADS_AIS_SERVER 0x0004
  195. /* ACE Handle types */
  196. #define ADS_CONNECTION 1
  197. #define ADS_TABLE 2
  198. #define ADS_INDEX_ORDER 3
  199. #define ADS_STATEMENT 4
  200. #define ADS_CURSOR 5
  201. #define ADS_DATABASE_CONNECTION 6
  202. #define ADS_SYS_ADMIN_CONNECTION 7
  203. #define ADS_FTS_INDEX_ORDER 8
  204. /* ACE Cursor ReadOnly settings */
  205. #define ADS_CURSOR_READONLY 1
  206. #define ADS_CURSOR_READWRITE 2
  207. /* ACE Cursor Constrain settings */
  208. #define ADS_CONSTRAIN 1
  209. #define ADS_NO_CONSTRAIN 2
  210. /* Select Field Read settings */
  211. #define ADS_READ_ALL_COLUMNS 1
  212. #define ADS_READ_SELECT_COLUMNS 2
  213. /* Disable server query optimization */
  214. #define ADS_NO_OPTIMIZATION 1
  215. /* Data dictionary new contraint property validation options */
  216. #define ADS_NO_VALIDATE 0 /* Do not validate records against the new constraint */
  217. #define ADS_VALIDATE_NO_SAVE 1 /* Delete record not meeting the constraint from the table, no save */
  218. #define ADS_VALIDATE_WRITE_FAIL 2 /* Validate the records against the new constraint and overwrite
  219. * the fail table with records not meeting the constraint. */
  220. #define ADS_VALIDATE_APPEND_FAIL 3 /* Validate the records against the new constraint and append
  221. * the failed records into the fail table */
  222. #define ADS_VALIDATE_RETURN_ERROR 4 /* Validate the records against the new constraint and return
  223. * error if there is any record not meeting the constraint */
  224. /* Possible result values from AdsCompareBookmarks. */
  225. #define ADS_CMP_LESS -1
  226. #define ADS_CMP_EQUAL 0
  227. #define ADS_CMP_GREATER 1
  228. /* Property values for the AdsGetConnectionProperty API */
  229. #define ADS_CONNECTIONPROP_USERNAME 0
  230. #define ADS_CONNECTIONPROP_PASSWORD 1
  231. /* Success return code */
  232. #define AE_SUCCESS 0
  233. /* Error codes */
  234. #define AE_ALLOCATION_FAILED 5001
  235. #define AE_COMM_MISMATCH 5002
  236. #define AE_DATA_TOO_LONG 5003
  237. #define AE_FILE_NOT_FOUND 5004
  238. #define AE_INSUFFICIENT_BUFFER 5005
  239. #define AE_INVALID_BOOKMARK 5006
  240. #define AE_INVALID_CALLBACK 5007
  241. #define AE_INVALID_CENTURY 5008
  242. #define AE_INVALID_DATEFORMAT 5009
  243. #define AE_INVALID_DECIMALS 5010
  244. #define AE_INVALID_EXPRESSION 5011
  245. #define AE_INVALID_FIELDDEF 5012
  246. #define AE_INVALID_FILTER_OPTION 5013
  247. #define AE_INVALID_INDEX_HANDLE 5014
  248. #define AE_INVALID_INDEX_NAME 5015
  249. #define AE_INVALID_INDEX_ORDER_NAME 5016
  250. #define AE_INVALID_INDEX_TYPE 5017
  251. #define AE_INVALID_HANDLE 5018
  252. #define AE_INVALID_OPTION 5019
  253. #define AE_INVALID_PATH 5020
  254. #define AE_INVALID_POINTER 5021
  255. #define AE_INVALID_RECORD_NUMBER 5022
  256. #define AE_INVALID_TABLE_HANDLE 5023
  257. #define AE_INVALID_CONNECTION_HANDLE 5024
  258. #define AE_INVALID_TABLETYPE 5025
  259. #define AE_INVALID_WORKAREA 5026
  260. #define AE_INVALID_CHARSETTYPE 5027
  261. #define AE_INVALID_LOCKTYPE 5028
  262. #define AE_INVALID_RIGHTSOPTION 5029
  263. #define AE_INVALID_FIELDNUMBER 5030
  264. #define AE_INVALID_KEY_LENGTH 5031
  265. #define AE_INVALID_FIELDNAME 5032
  266. #define AE_NO_DRIVE_CONNECTION 5033
  267. #define AE_FILE_NOT_ON_SERVER 5034
  268. #define AE_LOCK_FAILED 5035
  269. #define AE_NO_CONNECTION 5036
  270. #define AE_NO_FILTER 5037
  271. #define AE_NO_SCOPE 5038
  272. #define AE_NO_TABLE 5039
  273. #define AE_NO_WORKAREA 5040
  274. #define AE_NOT_FOUND 5041
  275. #define AE_NOT_IMPLEMENTED 5042
  276. #define AE_MAX_THREADS_EXCEEDED 5043
  277. #define AE_START_THREAD_FAIL 5044
  278. #define AE_TOO_MANY_INDEXES 5045
  279. #define AE_TOO_MANY_TAGS 5046
  280. #define AE_TRANS_OUT_OF_SEQUENCE 5047
  281. #define AE_UNKNOWN_ERRCODE 5048
  282. #define AE_UNSUPPORTED_LANGUAGE 5049
  283. #define AE_NAME_TOO_LONG 5050
  284. #define AE_DUPLICATE_ALIAS 5051
  285. #define AE_TABLE_CLOSED_IN_TRANSACTION 5053
  286. #define AE_PERMISSION_DENIED 5054
  287. #define AE_STRING_NOT_FOUND 5055
  288. #define AE_UNKNOWN_CHAR_SET 5056
  289. #define AE_INVALID_OEM_CHAR_FILE 5057
  290. #define AE_INVALID_MEMO_BLOCK_SIZE 5058
  291. #define AE_NO_FILE_FOUND 5059
  292. #define AE_NO_INF_LOCK 5060
  293. #define AE_INF_FILE_ERROR 5061
  294. #define AE_RECORD_NOT_LOCKED 5062
  295. #define AE_ILLEGAL_COMMAND_DURING_TRANS 5063
  296. #define AE_TABLE_NOT_SHARED 5064
  297. #define AE_INDEX_ALREADY_OPEN 5065
  298. #define AE_INVALID_FIELD_TYPE 5066
  299. #define AE_TABLE_NOT_EXCLUSIVE 5067
  300. #define AE_NO_CURRENT_RECORD 5068
  301. #define AE_PRECISION_LOST 5069
  302. #define AE_INVALID_DATA_TYPE 5070
  303. #define AE_DATA_TRUNCATED 5071
  304. #define AE_TABLE_READONLY 5072
  305. #define AE_INVALID_RECORD_LENGTH 5073
  306. #define AE_NO_ERROR_MESSAGE 5074
  307. #define AE_INDEX_SHARED 5075
  308. #define AE_INDEX_EXISTS 5076
  309. #define AE_CYCLIC_RELATION 5077
  310. #define AE_INVALID_RELATION 5078
  311. #define AE_INVALID_DAY 5079
  312. #define AE_INVALID_MONTH 5080
  313. #define AE_CORRUPT_TABLE 5081
  314. #define AE_INVALID_BINARY_OFFSET 5082
  315. #define AE_BINARY_FILE_ERROR 5083
  316. #define AE_INVALID_DELETED_BYTE_VALUE 5084
  317. #define AE_NO_PENDING_UPDATE 5085
  318. #define AE_PENDING_UPDATE 5086
  319. #define AE_TABLE_NOT_LOCKED 5087
  320. #define AE_CORRUPT_INDEX 5088
  321. #define AE_AUTOOPEN_INDEX 5089
  322. #define AE_SAME_TABLE 5090
  323. #define AE_INVALID_IMAGE 5091
  324. #define AE_COLLATION_SEQUENCE_MISMATCH 5092
  325. #define AE_INVALID_INDEX_ORDER 5093
  326. #define AE_TABLE_CACHED 5094
  327. #define AE_INVALID_DATE 5095
  328. #define AE_ENCRYPTION_NOT_ENABLED 5096
  329. #define AE_INVALID_PASSWORD 5097
  330. #define AE_TABLE_ENCRYPTED 5098
  331. #define AE_SERVER_MISMATCH 5099
  332. #define AE_INVALID_USERNAME 5100
  333. #define AE_INVALID_VALUE 5101
  334. #define AE_INVALID_CONTINUE 5102
  335. #define AE_UNRECOGNIZED_VERSION 5103
  336. #define AE_RECORD_ENCRYPTED 5104
  337. #define AE_UNRECOGNIZED_ENCRYPTION 5105
  338. #define AE_INVALID_SQLSTATEMENT_HANDLE 5106
  339. #define AE_INVALID_SQLCURSOR_HANDLE 5107
  340. #define AE_NOT_PREPARED 5108
  341. #define AE_CURSOR_NOT_CLOSED 5109
  342. #define AE_INVALID_SQL_PARAM_NUMBER 5110
  343. #define AE_INVALID_SQL_PARAM_NAME 5111
  344. #define AE_INVALID_COLUMN_NUMBER 5112
  345. #define AE_INVALID_COLUMN_NAME 5113
  346. #define AE_INVALID_READONLY_OPTION 5114
  347. #define AE_IS_CURSOR_HANDLE 5115
  348. #define AE_INDEX_EXPR_NOT_FOUND 5116
  349. #define AE_NOT_DML 5117
  350. #define AE_INVALID_CONSTRAIN_TYPE 5118
  351. #define AE_INVALID_CURSORHANDLE 5119
  352. #define AE_OBSOLETE_FUNCTION 5120
  353. #define AE_TADSDATASET_GENERAL 5121
  354. #define AE_UDF_OVERWROTE_BUFFER 5122
  355. #define AE_INDEX_UDF_NOT_SET 5123
  356. #define AE_CONCURRENT_PROBLEM 5124
  357. #define AE_INVALID_DICTIONARY_HANDLE 5125
  358. #define AE_INVALID_PROPERTY_ID 5126
  359. #define AE_INVALID_PROPERTY 5127
  360. #define AE_DICTIONARY_ALREADY_EXISTS 5128
  361. #define AE_INVALID_FIND_HANDLE 5129
  362. #define AE_DD_REQUEST_NOT_COMPLETED 5130
  363. #define AE_INVALID_OBJECT_ID 5131
  364. #define AE_INVALID_OBJECT_NAME 5132
  365. #define AE_INVALID_PROPERTY_LENGTH 5133
  366. #define AE_INVALID_KEY_OPTIONS 5134
  367. #define AE_CONSTRAINT_VALIDATION_ERROR 5135
  368. #define AE_INVALID_OBJECT_TYPE 5136
  369. #define AE_NO_OBJECT_FOUND 5137
  370. #define AE_PROPERTY_NOT_SET 5138
  371. #define AE_NO_PRIMARY_KEY_EXISTS 5139
  372. #define AE_LOCAL_CONN_DISABLED 5140
  373. #define AE_RI_RESTRICT 5141
  374. #define AE_RI_CASCADE 5142
  375. #define AE_RI_FAILED 5143
  376. #define AE_RI_CORRUPTED 5144
  377. #define AE_RI_UNDO_FAILED 5145
  378. #define AE_RI_RULE_EXISTS 5146
  379. #define AE_COLUMN_CANNOT_BE_NULL 5147
  380. #define AE_MIN_CONSTRAINT_VIOLATION 5148
  381. #define AE_MAX_CONSTRAINT_VIOLATION 5149
  382. #define AE_RECORD_CONSTRAINT_VIOLATION 5150
  383. #define AE_CANNOT_DELETE_TEMP_INDEX 5151
  384. #define AE_RESTRUCTURE_FAILED 5152
  385. #define AE_INVALID_STATEMENT 5153
  386. #define AE_STORED_PROCEDURE_FAILED 5154
  387. #define AE_INVALID_DICTIONARY_FILE 5155
  388. #define AE_NOT_MEMBER_OF_GROUP 5156
  389. #define AE_ALREADY_MEMBER_OF_GROUP 5157
  390. #define AE_INVALID_OBJECT_RIGHT 5158
  391. #define AE_INVALID_OBJECT_PERMISSION 5158 /* Note that this is same as above. The word
  392. * permission is more commonly used.
  393. */
  394. #define AE_CANNOT_OPEN_DATABASE_TABLE 5159
  395. #define AE_INVALID_CONSTRAINT 5160
  396. #define AE_NOT_ADMINISTRATOR 5161
  397. #define AE_NO_TABLE_ENCRYPTION_PASSWORD 5162
  398. #define AE_TABLE_NOT_ENCRYPTED 5163
  399. #define AE_INVALID_ENCRYPTION_VERSION 5164
  400. #define AE_NO_STORED_PROC_EXEC_RIGHTS 5165
  401. #define AE_DD_UNSUPPORTED_DEPLOYMENT 5166
  402. #define AE_INFO_AUTO_CREATION_OCCURRED 5168
  403. #define AE_INFO_COPY_MADE_BY_CLIENT 5169
  404. #define AE_DATABASE_REQUIRES_NEW_SERVER 5170
  405. #define AE_COLUMN_PERMISSION_DENIED 5171
  406. #define AE_DATABASE_REQUIRES_NEW_CLIENT 5172
  407. #define AE_INVALID_LINK_NUMBER 5173
  408. #define AE_LINK_ACTIVATION_FAILED 5174
  409. #define AE_INDEX_COLLATION_MISMATCH 5175
  410. #define AE_ILLEGAL_USER_OPERATION 5176
  411. #define AE_TRIGGER_FAILED 5177
  412. #define AE_NO_ASA_FUNCTION_FOUND 5178
  413. #define AE_VALUE_OVERFLOW 5179
  414. #define AE_UNRECOGNIZED_FTS_VERSION 5180
  415. #define AE_TRIG_CREATION_FAILED 5181
  416. #define AE_MEMTABLE_SIZE_EXCEEDED 5182
  417. #define AE_OUTDATED_CLIENT_VERSION 5183
  418. #define AE_FREE_TABLE 5184
  419. #define AE_LOCAL_CONN_RESTRICTED 5185
  420. /* Supported file types */
  421. #define ADS_DATABASE_TABLE ADS_DEFAULT
  422. #define ADS_NTX 1
  423. #define ADS_CDX 2
  424. #define ADS_ADT 3
  425. /* for retrieving file names of tables */
  426. #define ADS_BASENAME 1
  427. #define ADS_BASENAMEANDEXT 2
  428. #define ADS_FULLPATHNAME 3
  429. #define ADS_DATADICTIONARY_NAME 4
  430. /* Advantage Optimized Filter (AOF) optimization levels */
  431. #define ADS_OPTIMIZED_FULL 1
  432. #define ADS_OPTIMIZED_PART 2
  433. #define ADS_OPTIMIZED_NONE 3
  434. /* Advantage Optimized Filter (AOF) options */
  435. #define ADS_DYNAMIC_AOF 0x00000000 /* default */
  436. #define ADS_RESOLVE_IMMEDIATE 0x00000001
  437. #define ADS_RESOLVE_DYNAMIC 0x00000002
  438. #define ADS_KEYSET_AOF 0x00000004
  439. #define ADS_FIXED_AOF 0x00000008
  440. /* Advantage Optimized Filter (AOF) customization options */
  441. #define ADS_AOF_ADD_RECORD 1
  442. #define ADS_AOF_REMOVE_RECORD 2
  443. #define ADS_AOF_TOGGLE_RECORD 3
  444. /* Stored procedure or trigger type */
  445. #define ADS_STORED_PROC 0x00000001
  446. /* some maximum values used by the client */
  447. /* NOTE: constants meant for string length exclude space for null terminator */
  448. #define ADS_MAX_DATEMASK 12
  449. #define ADS_MAX_ERROR_LEN 600
  450. #define ADS_MAX_INDEX_EXPR_LEN 510 /* this is only accurate for index expressions */
  451. #define ADS_MAX_KEY_LENGTH 256 /* maximum key value length. This is the max key length
  452. * of NTX index. CDX and ADI indexes have max key length
  453. * of 240.
  454. */
  455. #define ADS_MAX_FIELD_NAME 128
  456. #define ADS_MAX_DBF_FIELD_NAME 10 /* maximum length of field name in a DBF */
  457. #define ADS_MAX_INDEXES 15 /* physical index files, NOT index orders */
  458. #define ADS_MAX_PATH 260
  459. #define ADS_MAX_TABLE_NAME 255 /* long file name */
  460. #define ADS_MAX_TAG_NAME 128
  461. #define ADS_MAX_TAGS 50 /* maximum for CDX/ADI file */
  462. #define ADS_MAX_OBJECT_NAME 200 /* maximum length of DD object name */
  463. #define ADS_MAX_TABLE_AND_PATH ADS_MAX_TABLE_NAME + ADS_MAX_PATH
  464. /*
  465. * Valid range of page sizes for ADI indexes. The default page size is 512
  466. * bytes. Before using another page size, please read the section titled
  467. * "Index Page Size" in the Advantage Client Engine help file (ace.hlp)
  468. */
  469. #define ADS_MIN_ADI_PAGESIZE 512
  470. #define ADS_MAX_ADI_PAGESIZE 8192
  471. /* data types */
  472. #define ADS_TYPE_UNKNOWN 0
  473. #define ADS_LOGICAL 1 /* 1 byte logical value */
  474. #define ADS_NUMERIC 2 /* DBF character style numeric */
  475. #define ADS_DATE 3 /* Date field. With ADS_NTX and ADS_CDX,
  476. * this is an 8 byte field of the form
  477. * CCYYMMDD. With ADS_ADT, it is a
  478. * 4 byte Julian date. */
  479. #define ADS_STRING 4 /* Character data */
  480. #define ADS_MEMO 5 /* Variable length character data */
  481. /* the following are extended data types */
  482. #define ADS_BINARY 6 /* BLOB - any data */
  483. #define ADS_IMAGE 7 /* BLOB - bitmap */
  484. #define ADS_VARCHAR 8 /* variable length character field */
  485. #define ADS_COMPACTDATE 9 /* DBF date represented with 3 bytes */
  486. #define ADS_DOUBLE 10 /* IEEE 8 byte floating point */
  487. #define ADS_INTEGER 11 /* IEEE 4 byte signed long integer */
  488. /* the following are supported with the ADT file only */
  489. #define ADS_SHORTINT 12 /* IEEE 2 byte signed short integer */
  490. #define ADS_TIME 13 /* 4 byte long integer representing
  491. * milliseconds since midnight */
  492. #define ADS_TIMESTAMP 14 /* 8 bytes. High order 4 bytes are a
  493. * long integer representing Julian date.
  494. * Low order 4 bytes are a long integer
  495. * representing milliseconds since
  496. * midnight */
  497. #define ADS_AUTOINC 15 /* 4 byte auto-increment value */
  498. #define ADS_RAW 16 /* Untranslated data */
  499. #define ADS_CURDOUBLE 17 /* IEEE 8 byte floating point currency */
  500. #define ADS_MONEY 18 /* 8 byte, 4 implied decimal Currency Field */
  501. #define ADS_LONGLONG 19 /* 8 byte integer */
  502. /*
  503. * supported User Defined Function types to be used with AdsRegisterUDF
  504. */
  505. #define ADS_INDEX_UDF 1
  506. /*
  507. * Constant for AdsMgGetConfigInfo
  508. */
  509. #define ADS_MAX_CFG_PATH 256
  510. /*
  511. * Constants for AdsMgGetServerType
  512. * Note ADS_MGMT_NETWARE_SERVER remains for backwards compatibility only
  513. */
  514. #define ADS_MGMT_NETWARE_SERVER 1
  515. #define ADS_MGMT_NETWARE4_OR_OLDER_SERVER 1
  516. #define ADS_MGMT_NT_SERVER 2
  517. #define ADS_MGMT_LOCAL_SERVER 3
  518. #define ADS_MGMT_WIN9X_SERVER 4
  519. #define ADS_MGMT_NETWARE5_OR_NEWER_SERVER 5
  520. #define ADS_MGMT_LINUX_SERVER 6
  521. /*
  522. * Constants for AdsMgGetLockOwner
  523. */
  524. #define ADS_MGMT_NO_LOCK 1
  525. #define ADS_MGMT_RECORD_LOCK 2
  526. #define ADS_MGMT_FILE_LOCK 3
  527. /*
  528. * Constants for MgGetInstallInfo
  529. */
  530. #define ADS_REG_OWNER_LEN 36
  531. #define ADS_REVISION_LEN 16
  532. #define ADS_INST_DATE_LEN 16
  533. #define ADS_OEM_CHAR_NAME_LEN 16
  534. #define ADS_ANSI_CHAR_NAME_LEN 16
  535. #define ADS_SERIAL_NUM_LEN 16
  536. /*
  537. * Constants for MgGetOpenTables
  538. */
  539. #define ADS_MGMT_MAX_PATH 260
  540. #define ADS_MGMT_PROPRIETARY_LOCKING 1
  541. #define ADS_MGMT_CDX_LOCKING 2
  542. #define ADS_MGMT_NTX_LOCKING 3
  543. #define ADS_MGMT_ADT_LOCKING 4
  544. #define ADS_MAX_USER_NAME 50
  545. #define ADS_MAX_ADDRESS_SIZE 30
  546. /*
  547. * Management API structures
  548. */
  549. typedef struct
  550. {
  551. double dPercentCheckSums; /* % of pkts with checksum failures */
  552. UNSIGNED32 ulTotalPackets; /* Total packets received */
  553. UNSIGNED32 ulRcvPktOutOfSeq; /* Receive packets out of sequence */
  554. UNSIGNED32 ulNotLoggedIn; /* Packet owner not logged in */
  555. UNSIGNED32 ulRcvReqOutOfSeq; /* Receive requests out of sequence */
  556. UNSIGNED32 ulCheckSumFailures; /* Checksum failures */
  557. UNSIGNED32 ulDisconnectedUsers; /* Server initiated disconnects */
  558. UNSIGNED32 ulPartialConnects; /* Removed partial connections */
  559. UNSIGNED32 ulInvalidPackets; /* Rcvd invalid packets (NT only) */
  560. UNSIGNED32 ulRecvFromErrors; /* RecvFrom failed (NT only) */
  561. UNSIGNED32 ulSendToErrors; /* SendTo failed (NT only) */
  562. } ADS_MGMT_COMM_STATS;
  563. typedef struct
  564. {
  565. UNSIGNED32 ulNumConnections; /* number connections */
  566. UNSIGNED32 ulNumWorkAreas; /* number work areas */
  567. UNSIGNED32 ulNumTables; /* number tables */
  568. UNSIGNED32 ulNumIndexes; /* number indexes */
  569. UNSIGNED32 ulNumLocks; /* number locks */
  570. UNSIGNED32 ulUserBufferSize; /* user buffer */
  571. UNSIGNED32 ulStatDumpInterval; /* statistics dump interval */
  572. UNSIGNED32 ulErrorLogMax; /* max size of error log */
  573. UNSIGNED32 ulNumTPSHeaderElems; /* number TPS header elems */
  574. UNSIGNED32 ulNumTPSVisibilityElems; /* number TPS vis elems */
  575. UNSIGNED32 ulNumTPSMemoTransElems; /* number TPS memo elems */
  576. UNSIGNED16 usNumReceiveECBs; /* number rcv ECBs (NLM only) */
  577. UNSIGNED16 usNumSendECBs; /* number send ECBs (NLM only) */
  578. UNSIGNED16 usNumBurstPackets; /* number packets per burst */
  579. UNSIGNED16 usNumWorkerThreads; /* number worker threads */
  580. UNSIGNED16 usSortBuffSize; /* index sort buffer size */
  581. UNSIGNED8 ucReserved1; /* reserved */
  582. UNSIGNED8 ucReserved2; /* reserved */
  583. UNSIGNED8 aucErrorLog[ADS_MAX_CFG_PATH]; /* error log path */
  584. UNSIGNED8 aucSemaphore[ADS_MAX_CFG_PATH]; /* semaphore file path */
  585. UNSIGNED8 aucTransaction[ADS_MAX_CFG_PATH]; /* TPS log file path */
  586. UNSIGNED8 ucReserved3; /* reserved */
  587. UNSIGNED8 ucReserved4; /* reserved */
  588. UNSIGNED16 usSendIPPort; /* NT Service IP send port # */
  589. UNSIGNED16 usReceiveIPPort; /* NT Service IP rcv port # */
  590. UNSIGNED8 ucUseIPProtocol; /* Win9x only. Which protocol to use */
  591. UNSIGNED8 ucFlushEveryUpdate; /* Win9x specific */
  592. UNSIGNED32 ulGhostTimeout; /* Diconnection time for partial connections */
  593. UNSIGNED32 ulFlushFrequency; /* For local server only */
  594. UNSIGNED32 ulKeepAliveTimeOut; /* When not using semaophore files. In milliseconds */
  595. UNSIGNED8 ucDisplayNWLoginNames; /* Display connections using user names. */
  596. UNSIGNED8 ucUseSemaphoreFiles; /* Whether or not to use semaphore files */
  597. UNSIGNED8 ucUseDynamicAOFs;
  598. UNSIGNED8 ucUseInternet; /* 0 if an Internet port is not specified. */
  599. UNSIGNED16 usInternetPort; /* Internet Port */
  600. UNSIGNED16 usMaxConnFailures; /* Maximum Internet connection failures allowed. */
  601. UNSIGNED32 ulInternetKeepAlive; /* In Milliseconds */
  602. UNSIGNED16 usCompressionLevel; /* Compression option at server. ADS_COMPRESS_NEVER,
  603. * ADS_COMPRESS_INTERNET, or ADS_COMPRESS_ALWAYS */
  604. UNSIGNED16 usReserved5; /* reserved */
  605. UNSIGNED32 ulReserved6; /* reserved */
  606. } ADS_MGMT_CONFIG_PARAMS;
  607. typedef struct
  608. {
  609. UNSIGNED32 ulTotalConfigMem; /* Total mem taken by cfg params */
  610. UNSIGNED32 ulConnectionMem; /* memory taken by connections */
  611. UNSIGNED32 ulWorkAreaMem; /* memory taken by work areas */
  612. UNSIGNED32 ulTableMem; /* memory taken by tables */
  613. UNSIGNED32 ulIndexMem; /* memory taken by indexes */
  614. UNSIGNED32 ulLockMem; /* memory taken by locks */
  615. UNSIGNED32 ulUserBufferMem; /* memory taken by user buffer */
  616. UNSIGNED32 ulTPSHeaderElemMem; /* memory taken by TPS hdr elems */
  617. UNSIGNED32 ulTPSVisibilityElemMem; /* memory taken by TPS vis elems */
  618. UNSIGNED32 ulTPSMemoTransElemMem; /* mem taken by TPS memo elems */
  619. UNSIGNED32 ulReceiveEcbMem; /* mem taken by rcv ECBs (NLM) */
  620. UNSIGNED32 ulSendEcbMem; /* mem taken by send ECBs (NLM) */
  621. UNSIGNED32 ulWorkerThreadMem; /* mem taken by worker threads */
  622. } ADS_MGMT_CONFIG_MEMORY;
  623. typedef struct
  624. {
  625. UNSIGNED32 ulUserOption; /* User option purchased*/
  626. UNSIGNED8 aucRegisteredOwner[ADS_REG_OWNER_LEN]; /* Registered owner */
  627. UNSIGNED8 aucVersionStr[ADS_REVISION_LEN]; /* Advantage version */
  628. UNSIGNED8 aucInstallDate[ADS_INST_DATE_LEN]; /* Install date string */
  629. UNSIGNED8 aucOemCharName[ADS_OEM_CHAR_NAME_LEN]; /* OEM char language */
  630. UNSIGNED8 aucAnsiCharName[ADS_ANSI_CHAR_NAME_LEN]; /* ANSI char language */
  631. UNSIGNED8 aucEvalExpireDate[ADS_INST_DATE_LEN]; /* Eval expiration date */
  632. UNSIGNED8 aucSerialNumber[ADS_SERIAL_NUM_LEN]; /* Serial number string */
  633. } ADS_MGMT_INSTALL_INFO;
  634. typedef struct
  635. {
  636. UNSIGNED16 usDays; /* Number of days server has been up */
  637. UNSIGNED16 usHours; /* Number of hours server has been up */
  638. UNSIGNED16 usMinutes; /* Number of minutes server has been up */
  639. UNSIGNED16 usSeconds; /* Number of seconds server has been up */
  640. } ADS_MGMT_UPTIME_INFO;
  641. typedef struct
  642. {
  643. UNSIGNED32 ulInUse; /* Number of items in use */
  644. UNSIGNED32 ulMaxUsed; /* Max number of items ever used */
  645. UNSIGNED32 ulRejected; /* Number of items rejected */
  646. } ADS_MGMT_USAGE_INFO;
  647. typedef struct
  648. {
  649. UNSIGNED32 ulOperations; /* Number operations since started */
  650. UNSIGNED32 ulLoggedErrors; /* Number logged errors */
  651. ADS_MGMT_UPTIME_INFO stUpTime; /* Length of time ADS has been up */
  652. ADS_MGMT_USAGE_INFO stUsers; /* Users in use, max, rejected */
  653. ADS_MGMT_USAGE_INFO stConnections; /* Conns in use, max, rejected */
  654. ADS_MGMT_USAGE_INFO stWorkAreas; /* WAs in use, max, rejected */
  655. ADS_MGMT_USAGE_INFO stTables; /* Tables in use, max, rejected */
  656. ADS_MGMT_USAGE_INFO stIndexes; /* Indexes in use, max, rejected */
  657. ADS_MGMT_USAGE_INFO stLocks; /* Locks in use, max, rejected */
  658. ADS_MGMT_USAGE_INFO stTpsHeaderElems; /* TPS header elems in use, max */
  659. ADS_MGMT_USAGE_INFO stTpsVisElems; /* TPS vis elems in use, max */
  660. ADS_MGMT_USAGE_INFO stTpsMemoElems; /* TPS memo elems in use, max */
  661. ADS_MGMT_USAGE_INFO stWorkerThreads; /* Worker threads in use, max */
  662. } ADS_MGMT_ACTIVITY_INFO;
  663. typedef struct
  664. {
  665. UNSIGNED8 aucUserName[ADS_MAX_USER_NAME]; /* Name of connected user */
  666. UNSIGNED16 usConnNumber; /* NetWare conn # (NLM only) */
  667. UNSIGNED8 aucAuthUserName[ADS_MAX_USER_NAME];
  668. UNSIGNED8 aucAddress[ADS_MAX_ADDRESS_SIZE];
  669. } ADS_MGMT_USER_INFO;
  670. typedef struct
  671. {
  672. UNSIGNED8 aucTableName[ADS_MGMT_MAX_PATH]; /* Fully qualified table name */
  673. UNSIGNED16 usLockType; /* Advantage locking mode */
  674. } ADS_MGMT_TABLE_INFO;
  675. typedef struct
  676. {
  677. UNSIGNED8 aucIndexName[ADS_MGMT_MAX_PATH]; /* Fully qualified table name */
  678. } ADS_MGMT_INDEX_INFO;
  679. typedef struct
  680. {
  681. UNSIGNED32 ulRecordNumber; /* Record number that is locked */
  682. } ADS_MGMT_RECORD_INFO;
  683. typedef struct
  684. {
  685. UNSIGNED32 ulThreadNumber; /* Thread Number */
  686. UNSIGNED16 usOpCode; /* Operation in progress */
  687. UNSIGNED8 aucUserName[ADS_MAX_USER_NAME]; /* Name of user */
  688. UNSIGNED16 usConnNumber; /* NetWare conn num (NLM only) */
  689. UNSIGNED16 usReserved1; /* Reserved */
  690. } ADS_MGMT_THREAD_ACTIVITY;
  691. /*
  692. * Data dictionary properties related constants and structure
  693. */
  694. typedef struct _ADD_FIELD_DESC_
  695. {
  696. UNSIGNED16 usFieldType;
  697. UNSIGNED16 usFieldLength;
  698. UNSIGNED16 usFieldDecimal;
  699. } ADD_FIELD_DESC;
  700. #define ADS_DD_PROPERTY_NOT_AVAIL 0xFFFF
  701. #define ADS_DD_MAX_PROPERTY_LEN 0xFFFE
  702. #define ADS_DD_MAX_OBJECT_NAME_LEN 200
  703. #define ADS_DD_UNKNOWN_OBJECT 0
  704. #define ADS_DD_TABLE_OBJECT 1
  705. #define ADS_DD_RELATION_OBJECT 2
  706. #define ADS_DD_INDEX_FILE_OBJECT 3
  707. #define ADS_DD_FIELD_OBJECT 4
  708. #define ADS_DD_COLUMN_OBJECT 4
  709. #define ADS_DD_INDEX_OBJECT 5
  710. #define ADS_DD_VIEW_OBJECT 6
  711. #define ADS_DD_VIEW_OR_TABLE_OBJECT 7 /* Used in AdsFindFirst/NextTable */
  712. #define ADS_DD_USER_OBJECT 8
  713. #define ADS_DD_USER_GROUP_OBJECT 9
  714. #define ADS_DD_PROCEDURE_OBJECT 10
  715. #define ADS_DD_DATABASE_OBJECT 11
  716. #define ADS_DD_LINK_OBJECT 12
  717. #define ADS_DD_TABLE_VIEW_OR_LINK_OBJECT 13 /* Used in v6.2 AdsFindFirst/NextTable */
  718. #define ADS_DD_TRIGGER_OBJECT 14
  719. /* Common properties numbers < 100 */
  720. #define ADS_DD_COMMENT 1
  721. #define ADS_DD_VERSION 2
  722. #define ADS_DD_USER_DEFINED_PROP 3
  723. /* Database properties between 100 and 199 */
  724. #define ADS_DD_DEFAULT_TABLE_PATH 100
  725. #define ADS_DD_ADMIN_PASSWORD 101
  726. #define ADS_DD_TEMP_TABLE_PATH 102
  727. #define ADS_DD_LOG_IN_REQUIRED 103
  728. #define ADS_DD_VERIFY_ACCESS_RIGHTS 104
  729. #define ADS_DD_ENCRYPT_TABLE_PASSWORD 105
  730. #define ADS_DD_ENCRYPT_NEW_TABLE 106
  731. #define ADS_DD_ENABLE_INTERNET 107
  732. #define ADS_DD_INTERNET_SECURITY_LEVEL 108
  733. #define ADS_DD_MAX_FAILED_ATTEMPTS 109
  734. #define ADS_DD_ALLOW_ADSSYS_NET_ACCESS 110
  735. #define ADS_DD_VERSION_MAJOR 111 /* properties for customer dd version */
  736. #define ADS_DD_VERSION_MINOR 112
  737. /* Table properties between 200 and 299 */
  738. #define ADS_DD_TABLE_VALIDATION_EXPR 200
  739. #define ADS_DD_TABLE_VALIDATION_MSG 201
  740. #define ADS_DD_TABLE_PRIMARY_KEY 202
  741. #define ADS_DD_TABLE_AUTO_CREATE 203
  742. #define ADS_DD_TABLE_TYPE 204
  743. #define ADS_DD_TABLE_PATH 205
  744. #define ADS_DD_TABLE_FIELD_COUNT 206
  745. #define ADS_DD_TABLE_RI_GRAPH 207
  746. #define ADS_DD_TABLE_OBJ_ID 208
  747. #define ADS_DD_TABLE_RI_XY 209
  748. #define ADS_DD_TABLE_IS_RI_PARENT 210
  749. #define ADS_DD_TABLE_RELATIVE_PATH 211
  750. #define ADS_DD_TABLE_CHAR_TYPE 212
  751. #define ADS_DD_TABLE_DEFAULT_INDEX 213
  752. #define ADS_DD_TABLE_ENCRYPTION 214
  753. #define ADS_DD_TABLE_MEMO_BLOCK_SIZE 215
  754. #define ADS_DD_TABLE_PERMISSION_LEVEL 216
  755. #define ADS_DD_TABLE_TRIGGER_TYPES 217
  756. #define ADS_DD_TABLE_TRIGGER_OPTIONS 218
  757. /* Field properties between 300 - 399 */
  758. #define ADS_DD_FIELD_DEFAULT_VALUE 300
  759. #define ADS_DD_FIELD_CAN_NULL 301
  760. #define ADS_DD_FIELD_MIN_VALUE 302
  761. #define ADS_DD_FIELD_MAX_VALUE 303
  762. #define ADS_DD_FIELD_VALIDATION_MSG 304
  763. #define ADS_DD_FIELD_DEFINITION 305
  764. #define ADS_DD_FIELD_TYPE 306
  765. #define ADS_DD_FIELD_LENGTH 307
  766. #define ADS_DD_FIELD_DECIMAL 308
  767. #define ADS_DD_FIELD_NUM 309
  768. /* Index tag properties between 400 - 499 */
  769. #define ADS_DD_INDEX_FILE_NAME 400
  770. #define ADS_DD_INDEX_EXPRESSION 401
  771. #define ADS_DD_INDEX_CONDITION 402
  772. #define ADS_DD_INDEX_OPTIONS 403
  773. #define ADS_DD_INDEX_KEY_LENGTH 404
  774. #define ADS_DD_INDEX_KEY_TYPE 405
  775. #define ADS_DD_INDEX_FTS_MIN_LENGTH 406
  776. #define ADS_DD_INDEX_FTS_DELIMITERS 407
  777. #define ADS_DD_INDEX_FTS_NOISE 408
  778. #define ADS_DD_INDEX_FTS_DROP_CHARS 409
  779. #define ADS_DD_INDEX_FTS_CONDITIONAL_CHARS 410
  780. /* RI properties between 500-599 */
  781. #define ADS_DD_RI_PARENT_GRAPH 500
  782. #define ADS_DD_RI_PRIMARY_TABLE 501
  783. #define ADS_DD_RI_PRIMARY_INDEX 502
  784. #define ADS_DD_RI_FOREIGN_TABLE 503
  785. #define ADS_DD_RI_FOREIGN_INDEX 504
  786. #define ADS_DD_RI_UPDATERULE 505
  787. #define ADS_DD_RI_DELETERULE 506
  788. #define ADS_DD_RI_NO_PKEY_ERROR 507
  789. #define ADS_DD_RI_CASCADE_ERROR 508
  790. /* User properties between 600-699 */
  791. #define ADS_DD_USER_GROUP_NAME 600
  792. /* View properties between 700-749 */
  793. #define ADS_DD_VIEW_STMT 700
  794. #define ADS_DD_VIEW_STMT_LEN 701
  795. /* Stored procedure properties 800-899 */
  796. #define ADS_DD_PROC_INPUT 800
  797. #define ADS_DD_PROC_OUTPUT 801
  798. #define ADS_DD_PROC_DLL_NAME 802
  799. #define ADS_DD_PROC_DLL_FUNCTION_NAME 803
  800. #define ADS_DD_PROC_INVOKE_OPTION 804
  801. /* Index file properties 900-999 */
  802. #define ADS_DD_INDEX_FILE_PATH 900
  803. #define ADS_DD_INDEX_FILE_PAGESIZE 901
  804. /*
  805. * Object rights properties 1001 - 1099 . They can be used
  806. * with either user or user group objects.
  807. */
  808. #define ADS_DD_TABLES_RIGHTS 1001
  809. #define ADS_DD_VIEWS_RIGHTS 1002
  810. #define ADS_DD_PROCS_RIGHTS 1003
  811. #define ADS_DD_OBJECTS_RIGHTS 1004
  812. #define ADS_DD_FREE_TABLES_RIGHTS 1005
  813. /* User Properties 1101 - 1199 */
  814. #define ADS_DD_USER_PASSWORD 1101
  815. #define ADS_DD_USER_GROUP_MEMBERSHIP 1102
  816. #define ADS_DD_USER_BAD_LOGINS 1103
  817. /* User group Properties 1201 - 1299 */
  818. /* None at this moment. */
  819. /* Link properties 1301 - 1399 */
  820. #define ADS_DD_LINK_PATH 1300
  821. #define ADS_DD_LINK_OPTIONS 1301
  822. #define ADS_DD_LINK_USERNAME 1302
  823. /* Trigger properties 1400 - 1499 */
  824. #define ADS_DD_TRIG_TABLEID 1400
  825. #define ADS_DD_TRIG_EVENT_TYPE 1401
  826. #define ADS_DD_TRIG_TRIGGER_TYPE 1402
  827. #define ADS_DD_TRIG_CONTAINER_TYPE 1403
  828. #define ADS_DD_TRIG_CONTAINER 1404
  829. #define ADS_DD_TRIG_FUNCTION_NAME 1405
  830. #define ADS_DD_TRIG_PRIORITY 1406
  831. #define ADS_DD_TRIG_OPTIONS 1407
  832. #define ADS_DD_TRIG_TABLENAME 1408
  833. #define ADS_DD_LEVEL_0 0
  834. #define ADS_DD_LEVEL_1 1
  835. #define ADS_DD_LEVEL_2 2
  836. /* Referential Integrity (RI) update and delete rules */
  837. #define ADS_DD_RI_CASCADE 1
  838. #define ADS_DD_RI_RESTRICT 2
  839. #define ADS_DD_RI_SETNULL 3
  840. #define ADS_DD_RI_SETDEFAULT 4
  841. /* Default Field Value Options */
  842. #define ADS_DD_DFV_UNKNOWN 1
  843. #define ADS_DD_DFV_NONE 2
  844. #define ADS_DD_DFV_VALUES_STORED 3
  845. /* Supported permissions in the data dictionary */
  846. #define ADS_PERMISSION_READ 0x00000001
  847. #define ADS_PERMISSION_UPDATE 0x00000002
  848. #define ADS_PERMISSION_EXECUTE 0x00000004
  849. #define ADS_PERMISSION_INHERIT 0x00000008
  850. #define ADS_PERMISSION_INSERT 0x00000010
  851. #define ADS_PERMISSION_DELETE 0x00000020
  852. #define ADS_PERMISSION_LINK_ACCESS 0x00000040
  853. #define ADS_PERMISSION_ALL 0xFFFFFFFF
  854. /* Link DD options */
  855. #define ADS_LINK_GLOBAL 0x00000001
  856. #define ADS_LINK_AUTH_ACTIVE_USER 0x00000002
  857. #define ADS_LINK_PATH_IS_STATIC 0x00000004
  858. /* Trigger event types */
  859. #define ADS_TRIGEVENT_INSERT 1
  860. #define ADS_TRIGEVENT_UPDATE 2
  861. #define ADS_TRIGEVENT_DELETE 3
  862. /* Trigger types */
  863. #define ADS_TRIGTYPE_BEFORE 0x00000001
  864. #define ADS_TRIGTYPE_INSTEADOF 0x00000002
  865. #define ADS_TRIGTYPE_AFTER 0x00000004
  866. /* Trigger container types */
  867. #define ADS_TRIG_WIN32DLL 1
  868. #define ADS_TRIG_COM 2
  869. #define ADS_TRIG_SCRIPT 3
  870. /*
  871. * Trigger options, if changed or adding more please inspect code
  872. * in RemoveTriggerFromDictionary
  873. */
  874. #define ADS_TRIGOPTIONS_NO_VALUES 0x00000000
  875. #define ADS_TRIGOPTIONS_WANT_VALUES 0x00000001
  876. #define ADS_TRIGOPTIONS_WANT_MEMOS_AND_BLOBS 0x00000002
  877. #define ADS_TRIGOPTIONS_DEFAULT 0x00000003 /* default is to include vals and memos */
  878. #define ADS_TRIGOPTIONS_NO_TRANSACTION 0x00000004 /* don't use implicit transactions */
  879. /*
  880. * Table permission verification levels.
  881. * level 1 is all columns searchable, even those without permission.
  882. * level 2 is default. Permission to the column is required to search or filter on a column.
  883. * level 3 is most restricted. Only static SQL cursor is allowed.
  884. */
  885. #define ADS_DD_TABLE_PERMISSION_LEVEL_1 1
  886. #define ADS_DD_TABLE_PERMISSION_LEVEL_2 2
  887. #define ADS_DD_TABLE_PERMISSION_LEVEL_3 3
  888. /* stored procedure functions must be of this type */
  889. #ifdef WINAPI
  890. typedef UNSIGNED32 (WINAPI *STORED_PROCEDURE_PTR)
  891. (
  892. UNSIGNED32 ulConnectionID, // (I) value used to associate a user/connection
  893. // and can be used to track the state
  894. UNSIGNED8 *pucUserName, // (I) the user name who invoked this procedure
  895. UNSIGNED8 *pucPassword, // (I) the user's password in encrypted form
  896. UNSIGNED8 *pucProcName, // (I) the stored procedure name
  897. UNSIGNED32 ulRecNum, // (I) reserved for triggers
  898. UNSIGNED8 *pucTable1, // (I) table one. For Stored Proc this table
  899. // contains all input parameters. For
  900. // triggers, it contains the original field
  901. // values if the trigger is an OnUpdate or
  902. // OnDelete
  903. UNSIGNED8 *pucTable2 // (I) table two. For Stored Proc this table
  904. // is empty and the users function will
  905. // optionally add rows to it as output.
  906. // For triggers, it contains the new field
  907. // values if the trigger is an OnUpdate or
  908. // OnInsert
  909. );
  910. typedef UNSIGNED32 (WINAPI *STARTUP_PROCEDURE_PTR)
  911. (
  912. UNSIGNED32 ulConnectionID, // (I) value used to associate a user/connection
  913. // and can be used to track the state
  914. UNSIGNED8 *pucUserName, // (I) the user name who invoked this procedure
  915. UNSIGNED8 *pucPassword // (I) the user's password in encrypted form
  916. );
  917. typedef UNSIGNED32 (WINAPI *SHUTDOWN_PROCEDURE_PTR)
  918. (
  919. UNSIGNED32 ulConnectionID, // (I) value used to associate a user/connection
  920. // and can be used to track the state
  921. UNSIGNED8 *pucUserName, // (I) the user name who invoked this procedure
  922. UNSIGNED8 *pucPassword // (I) the user's password in encrypted form
  923. );
  924. typedef UNSIGNED32 (WINAPI *STORED_PROCEDURE2_PTR)
  925. (
  926. UNSIGNED32 ulConnectionID, // (I) value used to associate a user/connection
  927. // and can be used to track the state
  928. ADSHANDLE hConnection, // (I) active connection to be used by the procedure
  929. UNSIGNED32 *pulNumRowsAffected // (O) the number of rows affected
  930. );
  931. typedef UNSIGNED32 (WINAPI *STARTUP_PROCEDURE2_PTR)
  932. (
  933. UNSIGNED32 ulConnectionID, // (I) value used to associate a user/connection
  934. // and can be used to track the state
  935. ADSHANDLE hConnection // (I) active connection to be used by the procedure
  936. );
  937. typedef UNSIGNED32 (WINAPI *SHUTDOWN_PROCEDURE2_PTR)
  938. (
  939. UNSIGNED32 ulConnectionID, // (I) value used to associate a user/connection
  940. // and can be used to track the state
  941. ADSHANDLE hConnection // (I) active connection to be used by the procedure
  942. );
  943. typedef UNSIGNED32 (WINAPI *TRIGGER_FUNCTION_PTR)
  944. (
  945. UNSIGNED32 ulConnectionID, // (I) Unique ID identifying the user causing this trig
  946. ADSHANDLE hConnection, // (I) Active ACE connection handle user can perform
  947. // operations on
  948. UNSIGNED8 *pucTriggerName, // (I) Name of trigger in the dictionary
  949. UNSIGNED8 *pucTableName, // (I) Name of the base table that caused the trigger
  950. UNSIGNED32 ulEventType, // (I) Flag with event type (insert, update, etc.)
  951. UNSIGNED32 ulTriggerType, // (I) Flag with trigger type (before, after, etc.)
  952. UNSIGNED32 ulRecNo // (I) Record number of the record being modified
  953. );
  954. typedef UNSIGNED32 (WINAPI *GET_INTERFACE_VERSION_PTR)();
  955. #endif // WINAPI
  956. /*
  957. * This macro allows a numeric field value to be passed into functions
  958. * that expect field names. If the user prefers to use column number,
  959. * then calls like this can be made:
  960. * ulRet = AdsGetDouble( hTable, ADSFIELD( 1 ), &dVal );
  961. * Where the first column is a numeric value to retrieve.
  962. */
  963. #define ADSFIELD(x) ((unsigned char*)(long)( x ))
  964. #ifdef __cplusplus
  965. extern "C"
  966. {
  967. #endif
  968. #if defined( NLM ) || defined( ADS_LINUX )
  969. #if !defined( SNAPDUMP ) // Snapdump is now built as a WIN32 app so WINAPI is defined
  970. #define WINAPI /* nothing */
  971. #endif
  972. #endif
  973. UNSIGNED32 ENTRYPOINT AdsAddCustomKey( ADSHANDLE hIndex );
  974. UNSIGNED32 ENTRYPOINT AdsAppendRecord( ADSHANDLE hTable );
  975. UNSIGNED32 ENTRYPOINT AdsApplicationExit( void );
  976. UNSIGNED32 ENTRYPOINT AdsAtBOF( ADSHANDLE hTable,
  977. UNSIGNED16 *pbBof );
  978. UNSIGNED32 ENTRYPOINT AdsAtEOF( ADSHANDLE hTable,
  979. UNSIGNED16 *pbEof );
  980. UNSIGNED32 ENTRYPOINT AdsBeginTransaction( ADSHANDLE hConnect );
  981. UNSIGNED32 ENTRYPOINT AdsBinaryToFile( ADSHANDLE hTable,
  982. UNSIGNED8 *pucFldName,
  983. UNSIGNED8 *pucFileName );
  984. UNSIGNED32 ENTRYPOINT AdsCacheOpenCursors( UNSIGNED16 usOpen );
  985. UNSIGNED32 ENTRYPOINT AdsCacheOpenTables( UNSIGNED16 usOpen );
  986. UNSIGNED32 ENTRYPOINT AdsCacheRecords( ADSHANDLE hTable,
  987. UNSIGNED16 usNumRecords );
  988. UNSIGNED32 ENTRYPOINT AdsCancelUpdate( ADSHANDLE hTable );
  989. UNSIGNED32 ENTRYPOINT AdsCheckExistence( ADSHANDLE hConnect,
  990. UNSIGNED8 *pucFileName,
  991. UNSIGNED16 *pusOnDisk );
  992. UNSIGNED32 ENTRYPOINT AdsClearAllScopes( ADSHANDLE hTable );
  993. UNSIGNED32 ENTRYPOINT AdsClearDefault( void );
  994. UNSIGNED32 ENTRYPOINT AdsClearFilter( ADSHANDLE hTable );
  995. UNSIGNED32 ENTRYPOINT AdsClearRelation( ADSHANDLE hTableParent );
  996. UNSIGNED32 ENTRYPOINT AdsClearScope( ADSHANDLE hIndex,
  997. UNSIGNED16 usScopeOption );
  998. UNSIGNED32 ENTRYPOINT AdsCloneTable( ADSHANDLE hTable,
  999. ADSHANDLE *phClone );
  1000. UNSIGNED32 ENTRYPOINT AdsCloseAllIndexes( ADSHANDLE hTable );
  1001. UNSIGNED32 ENTRYPOINT AdsCloseAllTables( void );
  1002. UNSIGNED32 ENTRYPOINT AdsCloseIndex( ADSHANDLE hIndex );
  1003. UNSIGNED32 ENTRYPOINT AdsCloseTable( ADSHANDLE hTable );
  1004. UNSIGNED32 ENTRYPOINT AdsCloseCachedTables( ADSHANDLE hConnection );
  1005. UNSIGNED32 ENTRYPOINT AdsCommitTransaction( ADSHANDLE hConnect );
  1006. UNSIGNED32 ENTRYPOINT AdsConnect( UNSIGNED8 *pucServerName,
  1007. ADSHANDLE *phConnect );
  1008. UNSIGNED32 ENTRYPOINT AdsConnect26( UNSIGNED8 *pucServerName,
  1009. UNSIGNED16 usServerTypes,
  1010. ADSHANDLE *phConnect );
  1011. UNSIGNED32 ENTRYPOINT AdsConnect60( UNSIGNED8 *pucServerPath,
  1012. UNSIGNED16 usServerTypes,
  1013. UNSIGNED8 *pucUserName,
  1014. UNSIGNED8 *pucPassword,
  1015. UNSIGNED32 ulOptions,
  1016. ADSHANDLE *phConnect );
  1017. UNSIGNED32 ENTRYPOINT AdsContinue( ADSHANDLE hTable,
  1018. UNSIGNED16 *pbFound );
  1019. UNSIGNED32 ENTRYPOINT AdsConvertTable( ADSHANDLE hObj,
  1020. UNSIGNED16 usFilterOption,
  1021. UNSIGNED8 *pucFile,
  1022. UNSIGNED16 usTableType );
  1023. UNSIGNED32 ENTRYPOINT AdsCopyTable( ADSHANDLE hObj,
  1024. UNSIGNED16 usFilterOption,
  1025. UNSIGNED8 *pucFile );
  1026. UNSIGNED32 ENTRYPOINT AdsCopyTableContents( ADSHANDLE hObjFrom,
  1027. ADSHANDLE hTableTo,
  1028. UNSIGNED16 usFilterOption );
  1029. UNSIGNED32 ENTRYPOINT AdsCopyTableStructure( ADSHANDLE hTable,
  1030. UNSIGNED8 *pucFile );
  1031. UNSIGNED32 ENTRYPOINT AdsCreateIndex( ADSHANDLE hObj,
  1032. UNSIGNED8 *pucFileName,
  1033. UNSIGNED8 *pucTag,
  1034. UNSIGNED8 *pucExpr,
  1035. UNSIGNED8 *pucCondition,
  1036. UNSIGNED8 *pucWhile,
  1037. UNSIGNED32 ulOptions,

Large files files are truncated, but you can click here to view the full file