Fixed typos in the RDD enum comments

Fixed typos in the RDD enum comments

//
// Copyright (c) XSharp B.V.  All Rights Reserved.
// Licensed under the Apache License, Version 2.0.
// See License.txt in the project root for license information.
//

BEGIN NAMESPACE XSharp.RDD.Enums
	/// This enum specifies how files should be opened.
	ENUM AutoShareMode
		MEMBER NoChange		 := 0
		MEMBER Auto		 := 1
		MEMBER ForceExclusive := 2
	END ENUM

	/// This enum specifies the lock modes.
	ENUM DbLockMode
		MEMBER Lock
		MEMBER UnLock
	END	 ENUM

	/// This enum specifies the various values that the RecordInfo method for the IRDD interface accepts.
	///
    /// <remarks>
    /// <note type="tip">These enums are also available as DEFINES and can therefore also be used without the "DbRecordInfo." prefix.</note>
    /// </remarks>
	ENUM DbRecordInfo
        /// Gets the deleted flag for the record.
		MEMBER DBRI_DELETED 	:= 1
        /// Gets the locked state for the record. You may specify a specific record.
		MEMBER DBRI_LOCKED 		:= 2
        /// Gets the record size. You may specify a specific record.
		MEMBER DBRI_RECSIZE 	:= 3
        /// Gets the record number.
		MEMBER DBRI_RECNO 		:= 4
        /// Gets/Sets a boolean indicating if the current record is updated.
		MEMBER DBRI_UPDATED 	:= 5
        /// Gets the buffer used by the RDD system for the record data. This is an array of bytes in X#.
		MEMBER DBRI_BUFFPTR 	:= 6
		// harbour extensions
        /// Harbour: Is the current record encrypted?
		MEMBER DBRI_ENCRYPTED	:= 7
        /// Harbour extension: Return all the memos in the current record as one string.
		MEMBER DBRI_RAWMEMOS	:= 8
        /// Harbour extension: Return the current record and all the memos in the current record as one string.
		MEMBER DBRI_RAWDATA		:= 9
        /// Harbour extension: Return the current record as one string.
		MEMBER DBRI_RAWRECORD   := 10
        /// Offset of user defined values.
		MEMBER DBRI_USER 		:= 1000
	END	 ENUM

	/// This enum specifies the various values that the FieldInfo method for the IRDD interface accepts.
	///
    /// <remarks>
    /// <note type="tip">These enums are also available as DEFINES and can therefore also be used without the "DbFieldInfo." prefix.</note>
    /// </remarks>

	ENUM DbFieldInfo
        /// Returns the name of the field.
		MEMBER DBS_NAME				:= 1
        /// Returns the data type of the field. This is a single character string such as 'C' or 'N'.
		MEMBER DBS_TYPE				:= 2
        /// Returns the length of the field.
		MEMBER DBS_LEN				:= 3
        ///  Returns the number of decimal places for the field.
		MEMBER DBS_DEC				:= 4
        /// Returns and optionally changes an alternate name (or alias) by which a field can be referenced (by default, same as DBS_NAME).
		MEMBER DBS_ALIAS			:= 5
        /// Returns the field flags for a field (a value from the DBFFieldFlags enum)
		MEMBER DBS_FLAGS			:= 6
        /// Harbour extension: Returns the flag that indicates if a field is Nullable.
		MEMBER DBS_ISNULL			:= 11
        /// Harbour extension: Returns the next available value for autoincrement fields.
		MEMBER DBS_COUNTER			:= 12
        /// Harbour extension: Returns the step value for autoincrement fields.
		MEMBER DBS_STEP				:= 13

        /// Foxpro extension: Returns the field caption.
		MEMBER DBS_CAPTION 		    := 14
        /// VFP / SQL extension: Returns the object with the complete column information.
		MEMBER DBS_COLUMNINFO       := 15
        /// VFP / SQL extension: Returns a string describing the object (the comment).
		MEMBER DBS_DESCRIPTION      := 16
        /// X# Extension: returns a blank value for the field.
		MEMBER DBS_BLANK            := 17

        /// Gets a BLOB value.
		MEMBER DBS_BLOB_GET			:= 101
        /// Unlike memo fields maintained in .DBT files, BLOB files allow you to store many different types of data in memo fields. This returns type type of the BLOB as a single character string.
		MEMBER DBS_BLOB_TYPE		:= 102
        /// Returns the length of the BLOB data in a memo field as an unsigned long integer.
		MEMBER DBS_BLOB_LEN			:= 103
        ///
		MEMBER DBS_BLOB_OFFSET		:= 104
        /// Returns a numeric pointer to the BLOB data associated with a memo field.
		MEMBER DBS_BLOB_POINTER		:= 198
        /// Returns the type of data in a BLOB as an unsigned long integer, without referencing a particular memo field.
        /// With this constant, you must specify the BLOB using a numeric pointer obtained from BLOBDirectPut(), BLOBDirectImport(),
        /// or DBFieldInfo(DBS_BLOB_POINTER, <nFieldPos>).
        ///
		MEMBER DBS_BLOB_DIRECT_TYPE	:= 222
        /// Returns the length of data in a BLOB as an unsigned long integer, without referencing a particular memo field.
        /// With this constant, you must specify the BLOB using a numeric pointer obtained from BLOBDirectPut(), BLOBDirectImport(),
        /// or DBFieldInfo(DBS_BLOB_POINTER, <nFieldPos>).
        ///
		MEMBER DBS_BLOB_DIRECT_LEN	:= 223
        /// Return the RDD FieldInfo structure
		MEMBER DBS_STRUCT			:= 998
        /// Returns the number of properties defined for a field.
		MEMBER DBS_PROPERTIES		:= 999
        /// Start of user defined FieldInfo values.
		MEMBER DBS_USER				:= 1000
	END	 ENUM

	/// This enum specifies the various values that the Info method for the IRDD interface accepts.
	///
    /// <remarks>
    /// <note type="tip">These enums are also available as DEFINES and can therefore also be used without the "DbInfo." prefix.</note>
    /// </remarks>

	ENUM DbInfo
		/// Logical: Is the RDD DBF based ?
		MEMBER DBI_ISDBF 			:= 1
		/// Logical: Does the RDD support the PutRec mechanism ?
		MEMBER DBI_CANPUTREC		:= 2
		/// Numeric: Get header size of the file  ?
		MEMBER DBI_GETHEADERSIZE	:= 3
		/// Date:    Last date RDD file updated
		MEMBER DBI_LASTUPDATE		:= 4
		/// String:  Get default FIELD delimiter
		MEMBER DBI_GETDELIMITER		:= 5
		/// String:  Set default FIELD delimiter
		MEMBER DBI_SETDELIMITER		:= 6
		/// Numeric: Get record size
		MEMBER DBI_GETRECSIZE		:= 7
		/// Array:   Get array of locked records
		MEMBER DBI_GETLOCKARRAY		:= 8
		/// String:  Get table file extension
		MEMBER DBI_TABLEEXT 		:= 9
		/// Logic: is the file opened readonly
		MEMBER DBI_READONLY 		:= 10
		// 11-19 missing
		/// Logic: Is there a file lock active?
		MEMBER DBI_ISFLOCK 			:= 20
		/// Stream: The RDDs stream object
		MEMBER DBI_FILESTREAM 		:= 21
		/// Number: Number of child relations set
		MEMBER DBI_CHILDCOUNT 		:= 22
		/// IntPtr: The data file's handle
		MEMBER DBI_FILEHANDLE 		:= 23
		/// String: Full path to data file
		MEMBER DBI_FULLPATH			:= 24
		/// Logic: Is the file ansi encoded
		MEMBER DBI_ISANSI 			:= 25
		/// Logic: Same as Bof()
		MEMBER DBI_BOF 				:= 26
		/// Logic: Same as Eof()
		MEMBER DBI_EOF 				:= 27
		/// String: Current Filter setting
		MEMBER DBI_DBFILTER 		:= 28
		/// Logic: Same as Found()
		MEMBER DBI_FOUND 			:= 29
		/// Number: Number of fields per record
		MEMBER DBI_FCOUNT 			:= 30
		/// Number: Number of record locks
		MEMBER DBI_LOCKCOUNT		:= 31
		/// Logic: Is the buffer Valid
		MEMBER DBI_VALIDBUFFER		:= 32
		/// String: Alias
		MEMBER DBI_ALIAS 			:= 33
		/// Object: The ScopeInfo
		MEMBER DBI_GETSCOPE 		:= 34
		/// Number: Lock offset
		MEMBER DBI_LOCKOFFSET		:= 35
		/// Logic: is the file opened shared
		MEMBER DBI_SHARED 			:= 36
		/// String: Memo file extension
		MEMBER DBI_MEMOEXT 			:= 37
		/// Intptr: The memo file's handle
		MEMBER DBI_MEMOHANDLE		:= 38
		/// Intptr: The memo file's handle
		MEMBER DBI_BLOB_HANDLE 		:= 38
		/// Number: The memo block size
		MEMBER DBI_MEMOBLOCKSIZE 	:= 39
		MEMBER DBI_BLOB_INTEGRITY	:= 40
		/// Number: The Windows Codepage
		MEMBER DBI_CODEPAGE 		:= 41
		/// Number: The DOS Codepage
		MEMBER DBI_DOSCODEPAGE		:= 42
		///
		MEMBER DBI_BLOB_RECOVER 	:= 43
		/// Logic:  Use new index lock mechanism
		MEMBER DBI_NEWINDEXLOCK 	:= 44
		/// Flag for avoiding RDD hierarchy and using a bigger buffer when indexing
		MEMBER DBI_STRICTREAD  		:= 60
		/// Flag for whether to use query optimization
		MEMBER DBI_OPTIMIZE    		:= 61
		/// Flag for automatically opening structural indexes
		MEMBER DBI_AUTOOPEN    		:= 62
		/// Should the order be set to the first index when a structural index is opened
		MEMBER DBI_AUTOORDER   		:= 63
		/// When a network is detected, open the index shared, otherwise open exclusively
		MEMBER DBI_AUTOSHARE   		:= 64
        /// Stream: The memo file's stream
		MEMBER DBI_MEMOSTREAM 		:= 65
		///
		MEMBER DBI_DB_VERSION 		:= 101
		///
		MEMBER DBI_RDD_VERSION 		:= 102
		///
		MEMBER DBI_RDD_LIST 		:= 103
		///
		MEMBER DBI_MEMOFIELD 		:= 104
		///
		MEMBER DBI_VO_MACRO_SYNTAX 	:= 105
		/// Returns RDD Object.
		MEMBER DBI_RDD_OBJECT		:= 106
		///
		// 107 - 127 missing
		// Harbour extensions
		/// Harbour extension: Locking scheme used by RDD
		MEMBER DBI_LOCKSCHEME          := 128
		/// Harbour extension: Was the file opened readonly?
		MEMBER DBI_ISREADONLY          := 129
		/// Harbour extension: Rollback changes made to current record
		MEMBER DBI_ROLLBACK            := 130
		/// Harbour extension: orkarea password
		MEMBER DBI_PASSWORD            := 131 /* W*/
		/// Harbour extension: The database is encrypted
		MEMBER DBI_ISENCRYPTED         := 132
		/// Harbour extension: Type of MEMO file: DBT, SMT, FPT
		MEMBER DBI_MEMOTYPE            := 133
		/// Harbour extension: The record separator (as a string)
		MEMBER DBI_SEPARATOR           := 134
		/// Harbour extension: sub version of memo file
		MEMBER DBI_MEMOVERSION         := 135
		/// Harbour extension: Type of table file
		MEMBER DBI_TABLETYPE           := 136
		/// Harbour extension: Is given relation scoped
		MEMBER DBI_SCOPEDRELATION      := 137
		/// Harbour extension: Get/Set trigger function
		MEMBER DBI_TRIGGER             := 138
		/// Harbour extension: DBOPENINFO structure pointer
		MEMBER DBI_OPENINFO            := 139
		/// Harbour extension: Encrypt table
		MEMBER DBI_ENCRYPT             := 140
		/// Harbour extension: Decrypt table
		MEMBER DBI_DECRYPT             := 141
		/// Harbour extension: Pack memo file
		MEMBER DBI_MEMOPACK            := 142
		/// Harbour extension: Get/Set index dirty read flag
		MEMBER DBI_DIRTYREAD           := 143
		/// Harbour extension: Is cursor positioned to valid record
		MEMBER DBI_POSITIONED          := 144
		/// Harbour extension: Is the table a temporary one?
		MEMBER DBI_ISTEMPORARY         := 145
		/// Harbour extension: record / file lock test
		MEMBER DBI_LOCKTEST            := 146
		/// Harbour extension: Codepage used also memberd by VO and Vulcan
		MEMBER DBI_CODEPAGE_HB         := 147
		/// Harbour extension: Is it destination table of currently processed COPY TO or APPEND FROM operation?
		MEMBER DBI_TRANSREC            := 148
		/// Harbour extension: DBF header updating modes
		MEMBER DBI_SETHEADER		   := 149
		///
		/* Harbour RECORD MAP (RM) support */
		/// Harbour record map extension: has WA RDD record map support?
		MEMBER DBI_RM_SUPPORTED        := 150
		/// Harbour record map extension: create new empty work area record map
		MEMBER DBI_RM_CREATE           := 151
		/// Harbour record map extension: remove active work area record map
		MEMBER DBI_RM_REMOVE           := 152
		/// Harbour record map extension: remove all records from WA record map
		MEMBER DBI_RM_CLEAR            := 153
		/// Harbour record map extension: add all records to WA record map
		MEMBER DBI_RM_FILL             := 154
		/// Harbour record map extension: add record to work area record map
		MEMBER DBI_RM_ADD              := 155
		/// Harbour record map extension: remove record from work area record map
		MEMBER DBI_RM_DROP             := 156
		/// Harbour record map extension: test if record is set in WA record map
		MEMBER DBI_RM_TEST             := 157
		/// Harbour record map extension: number of records set in record map
		MEMBER DBI_RM_COUNT            := 158
		/// Harbour record map extension: get/set record map filter handle
		MEMBER DBI_RM_HANDLE           := 159
		// 160 - 169 missing
		/// if area represents result of a query, obtain expression of this query
		MEMBER DBI_QUERY				:= 170
		// 171 - 200 missing
		///
		MEMBER BLOB_INFO_HANDLE		:= 201
		///
		MEMBER BLOB_FILE_RECOVER	:= 202
		///
		MEMBER BLOB_FILE_INTEGRITY	:= 203
		///
		MEMBER BLOB_OFFSET			:= 204
		///
		MEMBER BLOB_POINTER			:= 205
		///
		MEMBER BLOB_LEN				:= 206
		///
		MEMBER BLOB_TYPE			:= 207
		///
		MEMBER BLOB_EXPORT			:= 208
		///
		MEMBER BLOB_ROOT_UNLOCK		:= 209
		///
		MEMBER BLOB_ROOT_PUT		:= 210
		///
		MEMBER BLOB_ROOT_GET		:= 211
		///
		MEMBER BLOB_ROOT_LOCK		:= 212
		///
		MEMBER BLOB_IMPORT			:= 213
		///
		MEMBER BLOB_DIRECT_PUT		:= 214
		///
		MEMBER BLOB_DIRECT_GET		:= 215
		///
		MEMBER BLOB_GET				:= 216
		///
		MEMBER BLOB_DIRECT_EXPORT	:= 217
		///
		MEMBER BLOB_DIRECT_IMPORT	:= 218
		///
		MEMBER BLOB_NMODE			:= 219
		///
		MEMBER BLOB_EXPORT_APPEND	:= 220
		///
		MEMBER BLOB_EXPORT_OVERWRITE:= 221
		///
		MEMBER BLOB_DIRECT_TYPE		:= 222
		///
		MEMBER BLOB_DIRECT_LEN		:= 223
		///
		MEMBER BLOB_USER			:= 2000

		// Clipmore functions
		/// Start of user defined DBI values
		MEMBER DBI_USER 			:= 1000
		/// Clipmore extension:
		MEMBER DBI_RL_AND 			:= 1001
		/// Clipmore extension:
		MEMBER DBI_RL_CLEAR 		:= 1002
		/// Clipmore extension:
		MEMBER DBI_RL_COUNT 		:= 1003
		/// Clipmore extension:
		MEMBER DBI_RL_DESTROY 		:= 1004
		/// Clipmore extension:
		MEMBER DBI_RL_EXFILTER 		:= 1005
		/// Clipmore extension:
		MEMBER DBI_RL_GETFILTER 	:= 1006
		/// Clipmore extension:
		MEMBER DBI_RL_HASMAYBE 		:= 1007
		/// Clipmore extension:
		MEMBER DBI_RL_LEN 			:= 1008
		/// Clipmore extension:
		MEMBER DBI_RL_MAYBEEVAL 	:= 1009
		/// Clipmore extension:
		MEMBER DBI_RL_NEW 			:= 1010
		/// Clipmore extension:
		MEMBER DBI_RL_NEWDUP 		:= 1011
		/// Clipmore extension:
		MEMBER DBI_RL_NEWQUERY 		:= 1012
		/// Clipmore extension:
		MEMBER DBI_RL_NEXTRECNO 	:= 1013
		/// Clipmore extension:
		MEMBER DBI_RL_NOT 			:= 1014
		/// Clipmore extension:
		MEMBER DBI_RL_OR 			:= 1015
		/// Clipmore extension:
		MEMBER DBI_RL_PREVRECNO 	:= 1016
		/// Clipmore extension:
		MEMBER DBI_RL_SET 			:= 1017
		/// Clipmore extension:
		MEMBER DBI_RL_SETFILTER 	:= 1018
		/// Clipmore extension:
		MEMBER DBI_RL_TEST 			:= 1019

		// advantage
		MEMBER DBI_GET_ACE_TABLE_HANDLE  := DBI_USER + 110
		MEMBER DBI_GET_ACE_STMT_HANDLE   := DBI_USER + 111

	END	 ENUM

	/// This enum specifies the various values that the OrderInfo method for the IRDD interface accepts.
	///
    /// <seealso cref='M:XSharp.RT.Functions.DbOrderInfo(XSharp.__Usual,XSharp.__Usual,XSharp.__Usual,XSharp.__Usual)' >DbOrderInfo()</seealso>
    /// <remarks>The types in the list of possible value are the types of the return value when you call DbOrderInfo() with this enum value.
    	/// <note type="tip">
	/// These enums are also available as DEFINES and can therefore also be used without the "DbOrderInfo." prefix.
	/// </note></remarks>
	ENUM DbOrder_Info
        // These number match the defines for Vulcan
        // there are some differences between the various dialects unfortunately
        /// String: The order's conditional expression
		MEMBER DBOI_CONDITION 	:= 1
        /// String: The order's key expression
		MEMBER DBOI_EXPRESSION 	:= 2
        /// Number: The current key position in scope and filter
		MEMBER DBOI_POSITION 	:= 3
        /// Alias for DBOI_POSITION
        MEMBER DBOI_KEYGOTO     := 3
        /// Alias for DBOI_POSITION
		MEMBER DBOI_KEYNO	 	:= 3
        /// Number: The current key position disregarding filters
		MEMBER DBOI_RECNO 		:= 4
        /// String: The name of the order
		MEMBER DBOI_NAME 		:= 5
        /// Number: The numeric position in the list of orders
		MEMBER DBOI_NUMBER 		:= 6
        /// String: The name of the file containing this order
		MEMBER DBOI_BAGNAME 	:= 7
        /// Alias for DBOI_BAGNAME
		MEMBER DBOI_INDEXNAME 	:= 7
        /// String: The extension of the file containing this order
		MEMBER DBOI_BAGEXT 		:= 8
        /// Alias for DBOI_BAGEXT
		MEMBER DBOI_INDEXEXT  	:= 8
        /// String: The defauly index extension
		MEMBER DBOI_DEFBAGEXT 	:= 9

        /// FoxPro CDX Index collation
		MEMBER DBOI_COLLATION  	:= 10

		// 14-19 missing
        /// String: The full path to the index file (Bag)
		MEMBER DBOI_FULLPATH 	:= 20
        /// IntPtr: The handle of the index
		MEMBER DBOI_FILEHANDLE 	:= 21
        /// Logic : Is the order DESCENDing?
		MEMBER DBOI_ISDESC 		:= 22
        /// Logic : Does the order have a FOR condition?
		MEMBER DBOI_ISCOND 		:= 23
        /// The type of the order's key  (usualType value)
		MEMBER DBOI_KEYTYPE 	:= 24
        /// Number: The length of the order's key
		MEMBER DBOI_KEYSIZE 	:= 25
        /// Number: The count of keys in scope and filter
		MEMBER DBOI_KEYCOUNT 	:= 26
        /// Block : The codeblock that produces the key
		MEMBER DBOI_SETCODEBLOCK:= 27
        /// Number: The # of decimals in a numeric key
		MEMBER DBOI_KEYDEC 		:= 28
        /// Logic : Using High Performance locking for this order?
		MEMBER DBOI_HPLOCKING 	:= 29
		// 30-34 missing
        /// Number: The offset used for logical locking
		MEMBER DBOI_LOCKOFFSET 	:= 35
        /// Logic: Custom Index: Add key
		MEMBER DBOI_KEYADD 		:= 36
        /// Logic: Custom Index: Delete key
		MEMBER DBOI_KEYDELETE 	:= 37
        /// Object: The value of the current key
		MEMBER DBOI_KEYVAL 		:= 38
        /// Object: Get or Set the scope top
		MEMBER DBOI_SCOPETOP 	:= 39
        /// Object: Get or Set the scope bottom
		MEMBER DBOI_SCOPEBOTTOM := 40
        /// Void: Clear top scope
		MEMBER DBOI_SCOPETOPCLEAR := 41
        /// Void: Clear Bottom scope
		MEMBER DBOI_SCOPEBOTTOMCLEAR:= 42
        /// Logic : Does the order have the UNIQUE attribute?
		MEMBER DBOI_UNIQUE 		:= 43
        /// Number: The count of ORDERS contained in an index file or in total
		MEMBER DBOI_ORDERCOUNT  := 44
        /// Logic: Is this a Custom Index?
		MEMBER DBOI_CUSTOM 		:= 45
        /// Logic: Was a skip to adjacent unique Key successful?
		MEMBER DBOI_SKIPUNIQUE 	:= 46
        /// Number: Number of keys in the index order
		MEMBER DBOI_KEYSINCLUDED:= 48
        /// Number: The key number disregarding filters
		MEMBER DBOI_KEYNORAW 	:= 49
        /// Number: Optimization level for current query
		MEMBER DBOI_OPTLEVEL 	:= 50
        /// Number: The key count disregarding filter
		MEMBER DBOI_KEYCOUNTRAW := 51
        /// FileStream: The stream object of the index
		MEMBER DBOI_FILESTREAM 	:=52

		// 53-59
		/* These shouldn't need an open table */
        /// The following numbers are reserved but not implemented yet.
        MEMBER DBOI_STRICTREAD   := 60  /* Flag for avoiding RDD hierarchy and using a bigger buffer when indexing  */
        MEMBER DBOI_OPTIMIZE     := 61  /* Flag for whether to use query optimization             */
        MEMBER DBOI_AUTOOPEN     := 62  /* Flag for automatically opening structural indexes      */

		MEMBER DBOI_AUTOORDER    := 63  /* When a structural index is opened, the order to be set */
		MEMBER DBOI_AUTOSHARE    := 64  /* When a network is detected, open the index shared, otherwise open exclusively   */
		// 65-99

        MEMBER DBOI_LOCK_ALL    := 100  //
        MEMBER DBOI_LOCK_FAIL   := 101 //
        MEMBER DBOI_HPLOCK_GATE := 102 //

		/* Harbour extensions , not all implemented yet*/
		MEMBER DBOI_SKIPEVAL           := 200  /* skip while code block doesn't return TRUE */
		MEMBER DBOI_SKIPEVALBACK       := 201  /* skip backward while code block doesn't return TRUE */
		MEMBER DBOI_SKIPREGEX          := 202  /* skip while regular expression on index key doesn't return TRUE */
		MEMBER DBOI_SKIPREGEXBACK      := 203  /* skip backward while regular expression on index key doesn't return TRUE */
		MEMBER DBOI_SKIPWILD           := 204  /* skip while while comparison with given pattern with wildcards doesn't return TRUE */
		MEMBER DBOI_SKIPWILDBACK       := 205  /* skip backward while comparison with given pattern with wildcards doesn't return TRUE */
		MEMBER DBOI_SCOPEEVAL          := 206  /* skip through index evaluating given C function */
		MEMBER DBOI_FINDREC            := 207  /* find given record in a Tag beginning from TOP */
		MEMBER DBOI_FINDRECCONT        := 208  /* find given record in a Tag beginning from current position */
		MEMBER DBOI_SCOPESET           := 209  /* set both scopes */
		MEMBER DBOI_SCOPECLEAR         := 210  /* clear both scopes */
		MEMBER DBOI_BAGCOUNT           := 211  /* number of open order bags */
		MEMBER DBOI_BAGNUMBER          := 212  /* bag position in bag list */
		MEMBER DBOI_BAGORDER           := 213  /* number of first order in a bag */
		MEMBER DBOI_ISMULTITAG         := 214  /* does RDD support multi tag in index file */
		MEMBER DBOI_ISSORTRECNO        := 215  /* is record number part of key in sorting */
		MEMBER DBOI_LARGEFILE          := 216  /* is large file size (>=4GB) supported */
		MEMBER DBOI_TEMPLATE           := 217  /* order with free user keys */
		MEMBER DBOI_MULTIKEY           := 218  /* custom order with multikeys */
		MEMBER DBOI_CHGONLY            := 219  /* update only existing keys */
		MEMBER DBOI_PARTIAL            := 220  /* is index partially updated */
		MEMBER DBOI_SHARED             := 221  /* is index open in shared mode */
		MEMBER DBOI_ISREADONLY         := 222  /* is index open in readonly mode */
		MEMBER DBOI_READLOCK           := 223  /* get/set index read lock */
		MEMBER DBOI_WRITELOCK          := 224  /* get/set index write lock */
		MEMBER DBOI_UPDATECOUNTER      := 225  /* get/set update index counter */
		MEMBER DBOI_EVALSTEP           := 226  /* eval step (EVERY) used in index command */
		MEMBER DBOI_ISREINDEX          := 227  /* Is reindex in process */
		MEMBER DBOI_I_BAGNAME          := 228  /* created index name */
		MEMBER DBOI_I_TAGNAME          := 229  /* created tag name */
		MEMBER DBOI_RELKEYPOS          := 230  /* get/set relative key position (in range 0 - 1) */
		MEMBER DBOI_USECURRENT         := 231  /* get/set "use current index" flag */
		MEMBER DBOI_INDEXTYPE          := 232  /* current index type */
		MEMBER DBOI_RESETPOS           := 233  /* rest logical and raw positions */
		MEMBER DBOI_INDEXPAGESIZE      := 234  /* get index page size */

		// XSharp extensions
		/// Dump the current order to a text file in the folder of the index.
		MEMBER DBOI_DUMP                := 300
		/// Logic: Validate the current order. Errors are written to a text file in the folder of the index. Only supported by DBFCDX
		MEMBER DBOI_VALIDATE            := 301

		MEMBER DBOI_USER 		:= 1000
		// Advantage
		MEMBER DBOI_AXS_PERCENT_INDEXED  := 1805
		MEMBER DBOI_GET_ACE_INDEX_HANDLE := 1806

	END ENUM

    /// DBF Field flags.
    [Flags];
    ENUM DBFFieldFlags AS BYTE
        MEMBER None             := 0x00
        /// System Field ?
        MEMBER System           := 0x01
        /// Field is Nullable
        MEMBER Nullable         := 0x02
        /// Field is Binary
        MEMBER Binary           := 0x04
        /// Field is AutoIncrement
        MEMBER AutoIncrement    := 0x08
        // Harbour additions
        /// Field is Compressed (not used yet, for compatibility with Harbour)
        MEMBER Compressed       := 0x10
        /// Field is Encrypted (not used yet, for compatibility with Harbour)
        MEMBER Encrypted        := 0x20
        /// Field contains Unicode text
        MEMBER Unicode          := 0x40

    END ENUM

	/// This enum specifies the various field types that can appear in DBF files.
	ENUM DbFieldType AS BYTE
		MEMBER Unknown		:= 0
        /// 'C', uses len and dec
		MEMBER Character 		:= 67
        /// 'D', 8 bytes
		MEMBER Date	 		:= 68
        /// 'L', 1 byte
		MEMBER Logic   		:= 76
        /// 'M', 4 or 10 bytes see Length
		MEMBER Memo    		:= 77
        /// 'N', uses len and dec
		MEMBER Number    		:= 78
        /// 'O', is anybody using this ?
		MEMBER VOObject		:= 79
		// FoxPro types in 'Name' order

        /// 'W' = Blob 4 or 10 bytes VFP type
		MEMBER Blob			:= 87
        //MEMBER Character 		:= 67
        ///  'Y'	VFP Type 8 byte
		MEMBER Currency		:= 89
        /// 'B'	VFP Type, also '8'
		MEMBER Double		:= 66
        /// 'T'	VFP Type can be 4 or 8 bytes
		MEMBER DateTime		:= 84
        /// 'F'	VFP Type, uses len and dec
		MEMBER Float		:= 70
        /// 'G'    VFP type Ole 4 or 10 bytes
		MEMBER General		:= 71
        /// 'I'	VFP Type , may be autoInc
		MEMBER Integer		:= 73
        /// 'P'	VFP Type, 4 or 10 bytes
		MEMBER Picture		:= 80
        /// 'Q'    VFP Type=, between 1 and 255
		MEMBER VarBinary		:= 81
        /// 'V'    VFP Type
		MEMBER VarChar      := 86
        /// '0'    VFP Type, contains Null Flags
        MEMBER NullFlags        := 48

        // other types for Harbour will be supported later
        /*
        /// '+' = AutoInc, 4 bytes
		MEMBER AutoIncrement	:= 43
        /// '2'	2 byte int, autoInc
		MEMBER Integer2		:= 50
        /// '4'	4 byte int, autoInc
		MEMBER Integer4		:= 52
        /// '8'  Same as 'B'
		MEMBER Double8		:= 56
        /// '=' = ModTime, 8 bytes
		MEMBER ModTime		:= 61
        /// '@' = Timestamp 8 bytes
		MEMBER TimeStamp		:= 64
        /// 'Z'	8 byte Currency
		MEMBER CurrencyDouble	:= 90
        /// '^' = RowVer, 8 bytes
		MEMBER RowVer			:= 94
        */
	END	 ENUM

	/// This enum specifies the various values that the RDDInfo method for the IRDD interface accepts.
	/// <note type="tip">
	/// These enums are also available as DEFINES and can therefore also be used without the "RDDInfo." prefix.
	/// </note>
	///
    /// <seealso cref='M:XSharp.RT.Functions.RddInfo(XSharp.__Usual,XSharp.__Usual)' >RddInfo()</seealso>
    /// <remarks>Most of these ENUMs come from Harbour and have not been implemented yet. </remarks>
	ENUM RddInfo
        /// Does this RDD support DBFs?
		MEMBER RDDI_ISDBF              :=   1
        /// Can this RDD Put Records?
		MEMBER RDDI_CANPUTREC          :=   2
        /// The field delimiter (as a string)
		MEMBER RDDI_DELIMITER          :=   3
        /// The record separator (as a string)
		MEMBER RDDI_SEPARATOR          :=   4
		/// Default data file's file extension
		MEMBER RDDI_TABLEEXT           :=   5
        /// Default memo file's file extension
		MEMBER RDDI_MEMOEXT            :=   6
        /// Default multi tag index's file extension
		MEMBER RDDI_ORDBAGEXT          :=   7
        /// default single tag index's file extension
		MEMBER RDDI_ORDEREXT           :=   8
        /// default single tag index's file extension
		MEMBER RDDI_ORDSTRUCTEXT       :=   9

        /// Local file access?
		MEMBER RDDI_LOCAL              :=  10
        /// Remote table access?
		MEMBER RDDI_REMOTE             :=  11
        /// Get/Set default connection
		MEMBER RDDI_CONNECTION         :=  12
        /// Type of table file
		MEMBER RDDI_TABLETYPE          :=  13
        /// Type of MEMO file DB_MEMO_*: DBT, SMT, FPT(FP,SIX3,FLEXIII)
		MEMBER RDDI_MEMOTYPE           :=  14
        /// Is large file size (>=4GB) supported
		MEMBER RDDI_LARGEFILE          :=  15
        /// Locking scheme used by RDD
		MEMBER RDDI_LOCKSCHEME         :=  16
        /// Does RDD support record map functionality?
		MEMBER RDDI_RECORDMAP          :=  17
        /// Does RDD support encryption
		MEMBER RDDI_ENCRYPTION         :=  18
        /// Get/Set default trigger function
		MEMBER RDDI_TRIGGER            :=  19
        /// automatic locking on update
		MEMBER RDDI_AUTOLOCK           :=  20

		/* index parameters */
        /// Are structural indexes supported
		MEMBER RDDI_STRUCTORD          :=  21
        /// Flag for avoiding RDD hierarchy and using a bigger buffer when indexing
		MEMBER RDDI_STRICTREAD         :=  22
        /// Flag for strict structural order checking
		MEMBER RDDI_STRICTSTRUCT       :=  23
        /// Flag for whether to use query optimization
		MEMBER RDDI_OPTIMIZE           :=  24
        /// Flag for forcing linear optimization
		MEMBER RDDI_FORCEOPT           :=  25
        /// Flag for automatically opening structural indexes
		MEMBER RDDI_AUTOOPEN           :=  26
        /// When a structural index is opened, the order to be set
		MEMBER RDDI_AUTOORDER          :=  27
        /// When a network is detected, open the index shared, otherwise open exclusively
		MEMBER RDDI_AUTOSHARE          :=  28
        /// Does RDD support multi tag in index file
		MEMBER RDDI_MULTITAG           :=  29
        /// Is record number part of key in sorting
		MEMBER RDDI_SORTRECNO          :=  30
        /// Does custom orders support repeated keys?
		MEMBER RDDI_MULTIKEY           :=  31

		/* memo parameters */
        /// Memo File's block size
		MEMBER RDDI_MEMOBLOCKSIZE      :=  32
        /// sub version of memo file
		MEMBER RDDI_MEMOVERSION        :=  33
        /// type of garbage collector used by GC
		MEMBER RDDI_MEMOGCTYPE         :=  34
        /// use read lock in memo file access
		MEMBER RDDI_MEMOREADLOCK       :=  35
        /// reuse free space on write
		MEMBER RDDI_MEMOREUSE          :=  36
        /// can support BLOB files directly
		MEMBER RDDI_BLOB_SUPPORT       :=  37

		/* misc */
        /// set pending trigger for next open operation
		MEMBER RDDI_PENDINGTRIGGER     :=  40
        /// set pending password for next open operation
		MEMBER RDDI_PENDINGPASSWORD    :=  41
        /// Get/Set default password
		MEMBER RDDI_PASSWORD           :=  42
        /// Get/Set record and file lock timeout value
		MEMBER RDDI_LOCKRETRY          :=  43
        /// Get/Set index dirty read flag
		MEMBER RDDI_DIRTYREAD          :=  44
        /// Get/Set default index page size
		MEMBER RDDI_INDEXPAGESIZE      :=  45
        /// Get/Set default number of decimal places for numeric fields if it's undefined
		MEMBER RDDI_DECIMALS           :=  46
        /// DBF header updating modes
		MEMBER RDDI_SETHEADER          :=  47

		/* SQL */
        /// connect to database
		MEMBER RDDI_CONNECT            :=  61
        /// disconnect from database
		MEMBER RDDI_DISCONNECT         :=  62
        /// execute SQL statement
		MEMBER RDDI_EXECUTE            :=  63
        /// error number
		MEMBER RDDI_ERROR              :=  64
        /// error description
		MEMBER RDDI_ERRORNO            :=  65
        /// last auto insert ID
		MEMBER RDDI_INSERTID           :=  66
        /// number of affected rows after UPDATE
		MEMBER RDDI_AFFECTEDROWS       :=  67
        /// last executed query
		MEMBER RDDI_QUERY              :=  68

	END ENUM

    /// Flags that describe how a DbSort operation can be done.
    [Flags];
    ENUM DbSortFlags
	    /// An ascending sort (default)
	    MEMBER Default := 0
	    ///  A case-insensitive sort
	    MEMBER Case	:= 1
	    /// A sort with printable numerics
	    MEMBER Numeric := 2
	    /// A sort for ASCII (not nation-dependent)
	    MEMBER Ascii	 := 4
	    /// A sort with long integer values
	    MEMBER Long	   := 0x80
	    /// A descending sort
	    MEMBER Descending := 0x100
    END ENUM

    /// Flags that describe how a DbTrans operation can be done.
    [Flags];
    ENUM DbTransInfoFlags
        /// Default
        MEMBER None := 0
        /// Both this work area and the destination work area have identical row structures (i.e., all columns match).
        MEMBER SameStructure := 1
	    /// The RDD has the ability to transfer an entire row.
        MEMBER CanPutRec     := 2
    END ENUM

    /// Enum that described the possible Notification messages that are sent to clients of Workareas
    /// <remarks>Clients that want to subscribe to these notifications can register themselves by calling DbRegisterClient() and must implement IDbNotify().</remarks>
    /// <seealso cref="IDbNotify"/>
    /// <seealso cref="DbRegisterClient"/>
    /// <seealso cref="DbUnRegisterClient"/>
    Enum DbNotificationType
        /// This message is sent after a file was created. The Data parameter is the name of the file that was opened.
        MEMBER FileCreate
        /// This message is sent after a file was opened. The Data parameter is the name of the file that was opened.
        MEMBER FileOpen
        /// This message is sent after a file is closed. The Data parameter is the name of the file that was closed.
        MEMBER FileClose
        /// This message is sent after an index was created. The Data parameter is the name of the file that was opened.
        MEMBER IndexCreate
        /// This message is sent after an index was deleted. The Data parameter is the name of the file that was opened.
        MEMBER IndexDelete
        /// This message is sent after an index was opened. The Data parameter is the name of the file that was opened.
        MEMBER IndexOpen
        /// This message is sent after an index was closed. The Data parameter is the name of the file that was closed.
        MEMBER IndexClose
        /// This message is sent before a bulk operation is started. The Data parameter is a description of the operation.
        MEMBER BeforeBulkOperation
        /// This message is sent after a bulk operation was completed. The Data parameter is a description of the operation.
        MEMBER AfterBulkOperation
        /// This message is sent after an order was changed. The Data parameter is the name of the new order.
        MEMBER OrderChanged
        /// This message is sent before a field is updated The Data parameter is the fieldname of the field that was updated.
        MEMBER BeforeFieldUpdate
        /// This message is sent after a field was updated The Data parameter is the fieldname of the field that was updated.
        MEMBER AfterFieldUpdate
        /// This message is sent before the record pointer is moved. The Data parameter indicates the reason for the move
        MEMBER BeforeMove
        /// This message is sent after the record pointer was moved. The Data parameter indicates the reason for the move
        MEMBER AfterMove
        /// This message is sent after a new record was appended. The Data parameter is the record number of the record.
        MEMBER RecordAppended
        /// This message is sent after a record was deleted. The Data parameter is the record number of the record.
        MEMBER AfterRecordDeleted
        /// This message is sent after a record was deleted. The Data parameter is the record number of the record.
        MEMBER RecordDeleted := AfterRecordDeleted
        /// This message is sent after a record was recalled. The Data parameter is the record number of the record.
        MEMBER AfterRecordRecalled
        /// This message is sent after a record was recalled. The Data parameter is the record number of the record.
        MEMBER RecordRecalled := AfterRecordRecalled
        /// This message is sent after a record was locked. The Data parameter is the record number of the record.
        MEMBER RecordLocked
        /// This message is sent after a record was unlocked. The Data parameter is the record number of the record.
        MEMBER RecordUnLocked
        /// This message is sent after a Workarea was commited. The Data parameter is the file name of area.
        MEMBER FileCommit
        /// This message is sent before a record is deleted. The Data parameter is the record number of the record.
        MEMBER BeforeRecordDeleted
        /// This message is sent before a record is recalled. The Data parameter is the record number of the record.
        MEMBER BeforeRecordRecalled
        /// This message is sent after an operation failed. The Data parameter is the description of the operation.
        MEMBER OperationFailed    := 99
    END ENUM

END NAMESPACE

//
// Copyright (c) XSharp B.V.  All Rights Reserved.
// Licensed under the Apache License, Version 2.0.
// See License.txt in the project root for license information.
//

BEGIN NAMESPACE XSharp.RDD.Enums
	/// This enum specifies how files should be opened.
	ENUM AutoShareMode
		MEMBER NoChange		 := 0
		MEMBER Auto		 := 1
		MEMBER ForceExclusive := 2
	END ENUM

	/// This enum specifies the lock modes.
	ENUM DbLockMode
		MEMBER Lock
		MEMBER UnLock
	END	 ENUM

	/// This enum specifies the various values that the RecordInfo method for the IRDD interface accepts.
	///
    /// <remarks>
    /// <note type="tip">These enums are also available as DEFINES and can therefore also be used without the "DbRecordInfo." prefix.</note>
    /// </remarks>
	ENUM DbRecordInfo
        /// Gets the deleted flag for the record.
		MEMBER DBRI_DELETED 	:= 1
        /// Gets the locked state for the record. You may specify a specific record.
		MEMBER DBRI_LOCKED 		:= 2
        /// Gets the record size. You may specify a specific record.
		MEMBER DBRI_RECSIZE 	:= 3
        /// Gets the record number.
		MEMBER DBRI_RECNO 		:= 4
        /// Gets/Sets a boolean indicating if the current record is updated.
		MEMBER DBRI_UPDATED 	:= 5
        /// Gets the buffer used by the RDD system for the record data. This is an array of bytes in X#.
		MEMBER DBRI_BUFFPTR 	:= 6
		// harbour extensions
        /// Harbour: Is the current record encrypted?
		MEMBER DBRI_ENCRYPTED	:= 7
        /// Harbour extension: Return all the memos in the current record as one string.
		MEMBER DBRI_RAWMEMOS	:= 8
        /// Harbour extension: Return the current record and all the memos in the current record as one string.
		MEMBER DBRI_RAWDATA		:= 9
        /// Harbour extension: Return the current record as one string.
		MEMBER DBRI_RAWRECORD   := 10
        /// Offset of user defined values.
		MEMBER DBRI_USER 		:= 1000
	END	 ENUM

	/// This enum specifies the various values that the FieldInfo method for the IRDD interface accepts.
	///
    /// <remarks>
    /// <note type="tip">These enums are also available as DEFINES and can therefore also be used without the "DbFieldInfo." prefix.</note>
    /// </remarks>

	ENUM DbFieldInfo
        /// Returns the name of the field.
		MEMBER DBS_NAME				:= 1
        /// Returns the data type of the field. This is a single character string such as 'C' or 'N'.
		MEMBER DBS_TYPE				:= 2
        /// Returns the length of the field.
		MEMBER DBS_LEN				:= 3
        ///  Returns the number of decimal places for the field.
		MEMBER DBS_DEC				:= 4
        /// Returns and optionally changes an alternate name (or alias) by which a field can be referenced (by default, same as DBS_NAME).
		MEMBER DBS_ALIAS			:= 5
        /// Returns the field flags for a field (a value from the DBFFieldFlags enum)
		MEMBER DBS_FLAGS			:= 6
        /// Harbour extension: Returns the flag that indicates if a field is Nullable.
		MEMBER DBS_ISNULL			:= 11
        /// Harbour extension: Returns the next available value for autoincrement fields.
		MEMBER DBS_COUNTER			:= 12
        /// Harbour extension: Returns the step value for autoincrement fields.
		MEMBER DBS_STEP				:= 13

        /// Foxpro extension: Returns the field caption.
		MEMBER DBS_CAPTION 		    := 14
        /// VFP / SQL extension: Returns the object with the complete column information.
		MEMBER DBS_COLUMNINFO       := 15
        /// VFP / SQL extension: Returns a string describing the object (the comment).
		MEMBER DBS_DESCRIPTION      := 16
        /// X# Extension: returns a blank value for the field.
		MEMBER DBS_BLANK            := 17

        /// Gets a BLOB value.
		MEMBER DBS_BLOB_GET			:= 101
        /// Unlike memo fields maintained in .DBT files, BLOB files allow you to store many different types of data in memo fields. This returns type type of the BLOB as a single character string.
		MEMBER DBS_BLOB_TYPE		:= 102
        /// Returns the length of the BLOB data in a memo field as an unsigned long integer.
		MEMBER DBS_BLOB_LEN			:= 103
        ///
		MEMBER DBS_BLOB_OFFSET		:= 104
        /// Returns a numeric pointer to the BLOB data associated with a memo field.
		MEMBER DBS_BLOB_POINTER		:= 198
        /// Returns the type of data in a BLOB as an unsigned long integer, without referencing a particular memo field.
        /// With this constant, you must specify the BLOB using a numeric pointer obtained from BLOBDirectPut(), BLOBDirectImport(),
        /// or DBFieldInfo(DBS_BLOB_POINTER, <nFieldPos>).
        ///
		MEMBER DBS_BLOB_DIRECT_TYPE	:= 222
        /// Returns the length of data in a BLOB as an unsigned long integer, without referencing a particular memo field.
        /// With this constant, you must specify the BLOB using a numeric pointer obtained from BLOBDirectPut(), BLOBDirectImport(),
        /// or DBFieldInfo(DBS_BLOB_POINTER, <nFieldPos>).
        ///
		MEMBER DBS_BLOB_DIRECT_LEN	:= 223
        /// Return the RDD FieldInfo structure
		MEMBER DBS_STRUCT			:= 998
        /// Returns the number of properties defined for a field.
		MEMBER DBS_PROPERTIES		:= 999
        /// Start of user defined FieldInfo values.
		MEMBER DBS_USER				:= 1000
	END	 ENUM

	/// This enum specifies the various values that the Info method for the IRDD interface accepts.
	///
    /// <remarks>
    /// <note type="tip">These enums are also available as DEFINES and can therefore also be used without the "DbInfo." prefix.</note>
    /// </remarks>

	ENUM DbInfo
		/// Logical: Is the RDD DBF based ?
		MEMBER DBI_ISDBF 			:= 1
		/// Logical: Does the RDD support the PutRec mechanism ?
		MEMBER DBI_CANPUTREC		:= 2
		/// Numeric: Get header size of the file  ?
		MEMBER DBI_GETHEADERSIZE	:= 3
		/// Date:    Last date RDD file updated
		MEMBER DBI_LASTUPDATE		:= 4
		/// String:  Get default FIELD delimiter
		MEMBER DBI_GETDELIMITER		:= 5
		/// String:  Set default FIELD delimiter
		MEMBER DBI_SETDELIMITER		:= 6
		/// Numeric: Get record size
		MEMBER DBI_GETRECSIZE		:= 7
		/// Array:   Get array of locked records
		MEMBER DBI_GETLOCKARRAY		:= 8
		/// String:  Get table file extension
		MEMBER DBI_TABLEEXT 		:= 9
		/// Logic: is the file opened readonly
		MEMBER DBI_READONLY 		:= 10
		// 11-19 missing
		/// Logic: Is there a file lock active?
		MEMBER DBI_ISFLOCK 			:= 20
		/// Stream: The RDDs stream object
		MEMBER DBI_FILESTREAM 		:= 21
		/// Number: Number of child relations set
		MEMBER DBI_CHILDCOUNT 		:= 22
		/// IntPtr: The data file's handle
		MEMBER DBI_FILEHANDLE 		:= 23
		/// String: Full path to data file
		MEMBER DBI_FULLPATH			:= 24
		/// Logic: Is the file ansi encoded
		MEMBER DBI_ISANSI 			:= 25
		/// Logic: Same as Bof()
		MEMBER DBI_BOF 				:= 26
		/// Logic: Same as Eof()
		MEMBER DBI_EOF 				:= 27
		/// String: Current Filter setting
		MEMBER DBI_DBFILTER 		:= 28
		/// Logic: Same as Found()
		MEMBER DBI_FOUND 			:= 29
		/// Number: Number of fields per record
		MEMBER DBI_FCOUNT 			:= 30
		/// Number: Number of record locks
		MEMBER DBI_LOCKCOUNT		:= 31
		/// Logic: Is the buffer Valid
		MEMBER DBI_VALIDBUFFER		:= 32
		/// String: Alias
		MEMBER DBI_ALIAS 			:= 33
		/// Object: The ScopeInfo
		MEMBER DBI_GETSCOPE 		:= 34
		/// Number: Lock offset
		MEMBER DBI_LOCKOFFSET		:= 35
		/// Logic: is the file opened shared
		MEMBER DBI_SHARED 			:= 36
		/// String: Memo file extension
		MEMBER DBI_MEMOEXT 			:= 37
		/// Intptr: The memo file's handle
		MEMBER DBI_MEMOHANDLE		:= 38
		/// Intptr: The memo file's handle
		MEMBER DBI_BLOB_HANDLE 		:= 38
		/// Number: The memo block size
		MEMBER DBI_MEMOBLOCKSIZE 	:= 39
		MEMBER DBI_BLOB_INTEGRITY	:= 40
		/// Number: The Windows Codepage
		MEMBER DBI_CODEPAGE 		:= 41
		/// Number: The DOS Codepage
		MEMBER DBI_DOSCODEPAGE		:= 42
		///
		MEMBER DBI_BLOB_RECOVER 	:= 43
		/// Logic:  Use new index lock mechanism
		MEMBER DBI_NEWINDEXLOCK 	:= 44
		/// Flag for avoiding RDD hierarchy and using a bigger buffer when indexing
		MEMBER DBI_STRICTREAD  		:= 60
		/// Flag for whether to use query optimization
		MEMBER DBI_OPTIMIZE    		:= 61
		/// Flag for automatically opening structural indexes
		MEMBER DBI_AUTOOPEN    		:= 62
		/// Should the order be set to the first index when a structural index is opened
		MEMBER DBI_AUTOORDER   		:= 63
		/// When a network is detected, open the index shared, otherwise open exclusively
		MEMBER DBI_AUTOSHARE   		:= 64
        /// Stream: The memo file's stream
		MEMBER DBI_MEMOSTREAM 		:= 65
		///
		MEMBER DBI_DB_VERSION 		:= 101
		///
		MEMBER DBI_RDD_VERSION 		:= 102
		///
		MEMBER DBI_RDD_LIST 		:= 103
		///
		MEMBER DBI_MEMOFIELD 		:= 104
		///
		MEMBER DBI_VO_MACRO_SYNTAX 	:= 105
		/// Returns RDD Object.
		MEMBER DBI_RDD_OBJECT		:= 106
		///
		// 107 - 127 missing
		// Harbour extensions
		/// Harbour extension: Locking scheme used by RDD
		MEMBER DBI_LOCKSCHEME          := 128
		/// Harbour extension: Was the file opened readonly?
		MEMBER DBI_ISREADONLY          := 129
		/// Harbour extension: Rollback changes made to current record
		MEMBER DBI_ROLLBACK            := 130
		/// Harbour extension: orkarea password
		MEMBER DBI_PASSWORD            := 131 /* W*/
		/// Harbour extension: The database is encrypted
		MEMBER DBI_ISENCRYPTED         := 132
		/// Harbour extension: Type of MEMO file: DBT, SMT, FPT
		MEMBER DBI_MEMOTYPE            := 133
		/// Harbour extension: The record separator (as a string)
		MEMBER DBI_SEPARATOR           := 134
		/// Harbour extension: sub version of memo file
		MEMBER DBI_MEMOVERSION         := 135
		/// Harbour extension: Type of table file
		MEMBER DBI_TABLETYPE           := 136
		/// Harbour extension: Is given relation scoped
		MEMBER DBI_SCOPEDRELATION      := 137
		/// Harbour extension: Get/Set trigger function
		MEMBER DBI_TRIGGER             := 138
		/// Harbour extension: DBOPENINFO structure pointer
		MEMBER DBI_OPENINFO            := 139
		/// Harbour extension: Encrypt table
		MEMBER DBI_ENCRYPT             := 140
		/// Harbour extension: Decrypt table
		MEMBER DBI_DECRYPT             := 141
		/// Harbour extension: Pack memo file
		MEMBER DBI_MEMOPACK            := 142
		/// Harbour extension: Get/Set index dirty read flag
		MEMBER DBI_DIRTYREAD           := 143
		/// Harbour extension: Is cursor positioned to valid record
		MEMBER DBI_POSITIONED          := 144
		/// Harbour extension: Is the table a temporary one?
		MEMBER DBI_ISTEMPORARY         := 145
		/// Harbour extension: record / file lock test
		MEMBER DBI_LOCKTEST            := 146
		/// Harbour extension: Codepage used also memberd by VO and Vulcan
		MEMBER DBI_CODEPAGE_HB         := 147
		/// Harbour extension: Is it destination table of currently processed COPY TO or APPEND FROM operation?
		MEMBER DBI_TRANSREC            := 148
		/// Harbour extension: DBF header updating modes
		MEMBER DBI_SETHEADER		   := 149
		///
		/* Harbour RECORD MAP (RM) support */
		/// Harbour record map extension: has WA RDD record map support?
		MEMBER DBI_RM_SUPPORTED        := 150
		/// Harbour record map extension: create new empty work area record map
		MEMBER DBI_RM_CREATE           := 151
		/// Harbour record map extension: remove active work area record map
		MEMBER DBI_RM_REMOVE           := 152
		/// Harbour record map extension: remove all records from WA record map
		MEMBER DBI_RM_CLEAR            := 153
		/// Harbour record map extension: add all records to WA record map
		MEMBER DBI_RM_FILL             := 154
		/// Harbour record map extension: add record to work area record map
		MEMBER DBI_RM_ADD              := 155
		/// Harbour record map extension: remove record from work area record map
		MEMBER DBI_RM_DROP             := 156
		/// Harbour record map extension: test if record is set in WA record map
		MEMBER DBI_RM_TEST             := 157
		/// Harbour record map extension: number of records set in record map
		MEMBER DBI_RM_COUNT            := 158
		/// Harbour record map extension: get/set record map filter handle
		MEMBER DBI_RM_HANDLE           := 159
		// 160 - 169 missing
		/// if area represents result of a query, obtain expression of this query
		MEMBER DBI_QUERY				:= 170
		// 171 - 200 missing
		///
		MEMBER BLOB_INFO_HANDLE		:= 201
		///
		MEMBER BLOB_FILE_RECOVER	:= 202
		///
		MEMBER BLOB_FILE_INTEGRITY	:= 203
		///
		MEMBER BLOB_OFFSET			:= 204
		///
		MEMBER BLOB_POINTER			:= 205
		///
		MEMBER BLOB_LEN				:= 206
		///
		MEMBER BLOB_TYPE			:= 207
		///
		MEMBER BLOB_EXPORT			:= 208
		///
		MEMBER BLOB_ROOT_UNLOCK		:= 209
		///
		MEMBER BLOB_ROOT_PUT		:= 210
		///
		MEMBER BLOB_ROOT_GET		:= 211
		///
		MEMBER BLOB_ROOT_LOCK		:= 212
		///
		MEMBER BLOB_IMPORT			:= 213
		///
		MEMBER BLOB_DIRECT_PUT		:= 214
		///
		MEMBER BLOB_DIRECT_GET		:= 215
		///
		MEMBER BLOB_GET				:= 216
		///
		MEMBER BLOB_DIRECT_EXPORT	:= 217
		///
		MEMBER BLOB_DIRECT_IMPORT	:= 218
		///
		MEMBER BLOB_NMODE			:= 219
		///
		MEMBER BLOB_EXPORT_APPEND	:= 220
		///
		MEMBER BLOB_EXPORT_OVERWRITE:= 221
		///
		MEMBER BLOB_DIRECT_TYPE		:= 222
		///
		MEMBER BLOB_DIRECT_LEN		:= 223
		///
		MEMBER BLOB_USER			:= 2000

		// Clipmore functions
		/// Start of user defined DBI values
		MEMBER DBI_USER 			:= 1000
		/// Clipmore extension:
		MEMBER DBI_RL_AND 			:= 1001
		/// Clipmore extension:
		MEMBER DBI_RL_CLEAR 		:= 1002
		/// Clipmore extension:
		MEMBER DBI_RL_COUNT 		:= 1003
		/// Clipmore extension:
		MEMBER DBI_RL_DESTROY 		:= 1004
		/// Clipmore extension:
		MEMBER DBI_RL_EXFILTER 		:= 1005
		/// Clipmore extension:
		MEMBER DBI_RL_GETFILTER 	:= 1006
		/// Clipmore extension:
		MEMBER DBI_RL_HASMAYBE 		:= 1007
		/// Clipmore extension:
		MEMBER DBI_RL_LEN 			:= 1008
		/// Clipmore extension:
		MEMBER DBI_RL_MAYBEEVAL 	:= 1009
		/// Clipmore extension:
		MEMBER DBI_RL_NEW 			:= 1010
		/// Clipmore extension:
		MEMBER DBI_RL_NEWDUP 		:= 1011
		/// Clipmore extension:
		MEMBER DBI_RL_NEWQUERY 		:= 1012
		/// Clipmore extension:
		MEMBER DBI_RL_NEXTRECNO 	:= 1013
		/// Clipmore extension:
		MEMBER DBI_RL_NOT 			:= 1014
		/// Clipmore extension:
		MEMBER DBI_RL_OR 			:= 1015
		/// Clipmore extension:
		MEMBER DBI_RL_PREVRECNO 	:= 1016
		/// Clipmore extension:
		MEMBER DBI_RL_SET 			:= 1017
		/// Clipmore extension:
		MEMBER DBI_RL_SETFILTER 	:= 1018
		/// Clipmore extension:
		MEMBER DBI_RL_TEST 			:= 1019

		// advantage
		MEMBER DBI_GET_ACE_TABLE_HANDLE  := DBI_USER + 110
		MEMBER DBI_GET_ACE_STMT_HANDLE   := DBI_USER + 111

	END	 ENUM

	/// This enum specifies the various values that the OrderInfo method for the IRDD interface accepts.
	///
    /// <seealso cref='M:XSharp.RT.Functions.DbOrderInfo(XSharp.__Usual,XSharp.__Usual,XSharp.__Usual,XSharp.__Usual)' >DbOrderInfo()</seealso>
    /// <remarks>The types in the list of possible value are the types of the return value when you call DbOrderInfo() with this enum value.
    	/// <note type="tip">
	/// These enums are also available as DEFINES and can therefore also be used without the "DbOrderInfo." prefix.
	/// </note></remarks>
	ENUM DbOrder_Info
        // These number match the defines for Vulcan
        // there are some differences between the various dialects unfortunately
        /// String: The order's conditional expression
		MEMBER DBOI_CONDITION 	:= 1
        /// String: The order's key expression
		MEMBER DBOI_EXPRESSION 	:= 2
        /// Number: The current key position in scope and filter
		MEMBER DBOI_POSITION 	:= 3
        /// Alias for DBOI_POSITION
        MEMBER DBOI_KEYGOTO     := 3
        /// Alias for DBOI_POSITION
		MEMBER DBOI_KEYNO	 	:= 3
        /// Number: The current key position disregarding filters
		MEMBER DBOI_RECNO 		:= 4
        /// String: The name of the order
		MEMBER DBOI_NAME 		:= 5
        /// Number: The numeric position in the list of orders
		MEMBER DBOI_NUMBER 		:= 6
        /// String: The name of the file containing this order
		MEMBER DBOI_BAGNAME 	:= 7
        /// Alias for DBOI_BAGNAME
		MEMBER DBOI_INDEXNAME 	:= 7
        /// String: The extension of the file containing this order
		MEMBER DBOI_BAGEXT 		:= 8
        /// Alias for DBOI_BAGEXT
		MEMBER DBOI_INDEXEXT  	:= 8
        /// String: The defauly index extension
		MEMBER DBOI_DEFBAGEXT 	:= 9

        /// FoxPro CDX Index collation
		MEMBER DBOI_COLLATION  	:= 10

		// 14-19 missing
        /// String: The full path to the index file (Bag)
		MEMBER DBOI_FULLPATH 	:= 20
        /// IntPtr: The handle of the index
		MEMBER DBOI_FILEHANDLE 	:= 21
        /// Logic : Is the order DESCENDing?
		MEMBER DBOI_ISDESC 		:= 22
        /// Logic : Does the order have a FOR condition?
		MEMBER DBOI_ISCOND 		:= 23
        /// The type of the order's key  (usualType value)
		MEMBER DBOI_KEYTYPE 	:= 24
        /// Number: The length of the order's key
		MEMBER DBOI_KEYSIZE 	:= 25
        /// Number: The count of keys in scope and filter
		MEMBER DBOI_KEYCOUNT 	:= 26
        /// Block : The codeblock that produces the key
		MEMBER DBOI_SETCODEBLOCK:= 27
        /// Number: The # of decimals in a numeric key
		MEMBER DBOI_KEYDEC 		:= 28
        /// Logic : Using High Performance locking for this order?
		MEMBER DBOI_HPLOCKING 	:= 29
		// 30-34 missing
        /// Number: The offset used for logical locking
		MEMBER DBOI_LOCKOFFSET 	:= 35
        /// Logic: Custom Index: Add key
		MEMBER DBOI_KEYADD 		:= 36
        /// Logic: Custom Index: Delete key
		MEMBER DBOI_KEYDELETE 	:= 37
        /// Object: The value of the current key
		MEMBER DBOI_KEYVAL 		:= 38
        /// Object: Get or Set the scope top
		MEMBER DBOI_SCOPETOP 	:= 39
        /// Object: Get or Set the scope bottom
		MEMBER DBOI_SCOPEBOTTOM := 40
        /// Void: Clear top scope
		MEMBER DBOI_SCOPETOPCLEAR := 41
        /// Void: Clear Bottom scope
		MEMBER DBOI_SCOPEBOTTOMCLEAR:= 42
        /// Logic : Does the order have the UNIQUE attribute?
		MEMBER DBOI_UNIQUE 		:= 43
        /// Number: The count of ORDERS contained in an index file or in total
		MEMBER DBOI_ORDERCOUNT  := 44
        /// Logic: Is this a Custom Index?
		MEMBER DBOI_CUSTOM 		:= 45
        /// Logic: Was a skip to adjacent unique Key successful?
		MEMBER DBOI_SKIPUNIQUE 	:= 46
        /// Number: Number of keys in the index order
		MEMBER DBOI_KEYSINCLUDED:= 48
        /// Number: The key number disregarding filters
		MEMBER DBOI_KEYNORAW 	:= 49
        /// Number: Optimization level for current query
		MEMBER DBOI_OPTLEVEL 	:= 50
        /// Number: The key count disregarding filter
		MEMBER DBOI_KEYCOUNTRAW := 51
        /// FileStream: The stream object of the index
		MEMBER DBOI_FILESTREAM 	:=52

		// 53-59
		/* These shouldn't need an open table */
        /// The following numbers are reserved but not implemented yet.
        MEMBER DBOI_STRICTREAD   := 60  /* Flag for avoiding RDD hierarchy and using a bigger buffer when indexing  */
        MEMBER DBOI_OPTIMIZE     := 61  /* Flag for whether to use query optimization             */
        MEMBER DBOI_AUTOOPEN     := 62  /* Flag for automatically opening structural indexes      */

		MEMBER DBOI_AUTOORDER    := 63  /* When a structural index is opened, the order to be set */
		MEMBER DBOI_AUTOSHARE    := 64  /* When a network is detected, open the index shared, otherwise open exclusively   */
		// 65-99

        MEMBER DBOI_LOCK_ALL    := 100  //
        MEMBER DBOI_LOCK_FAIL   := 101 //
        MEMBER DBOI_HPLOCK_GATE := 102 //

		/* Harbour extensions , not all implemented yet*/
		MEMBER DBOI_SKIPEVAL           := 200  /* skip while code block doesn't return TRUE */
		MEMBER DBOI_SKIPEVALBACK       := 201  /* skip backward while code block doesn't return TRUE */
		MEMBER DBOI_SKIPREGEX          := 202  /* skip while regular expression on index key doesn't return TRUE */
		MEMBER DBOI_SKIPREGEXBACK      := 203  /* skip backward while regular expression on index key doesn't return TRUE */
		MEMBER DBOI_SKIPWILD           := 204  /* skip while while comparison with given pattern with wildcards doesn't return TRUE */
		MEMBER DBOI_SKIPWILDBACK       := 205  /* skip backward while comparison with given pattern with wildcards doesn't return TRUE */
		MEMBER DBOI_SCOPEEVAL          := 206  /* skip through index evaluating given C function */
		MEMBER DBOI_FINDREC            := 207  /* find given record in a Tag beginning from TOP */
		MEMBER DBOI_FINDRECCONT        := 208  /* find given record in a Tag beginning from current position */
		MEMBER DBOI_SCOPESET           := 209  /* set both scopes */
		MEMBER DBOI_SCOPECLEAR         := 210  /* clear both scopes */
		MEMBER DBOI_BAGCOUNT           := 211  /* number of open order bags */
		MEMBER DBOI_BAGNUMBER          := 212  /* bag position in bag list */
		MEMBER DBOI_BAGORDER           := 213  /* number of first order in a bag */
		MEMBER DBOI_ISMULTITAG         := 214  /* does RDD support multi tag in index file */
		MEMBER DBOI_ISSORTRECNO        := 215  /* is record number part of key in sorting */
		MEMBER DBOI_LARGEFILE          := 216  /* is large file size (>=4GB) supported */
		MEMBER DBOI_TEMPLATE           := 217  /* order with free user keys */
		MEMBER DBOI_MULTIKEY           := 218  /* custom order with multikeys */
		MEMBER DBOI_CHGONLY            := 219  /* update only existing keys */
		MEMBER DBOI_PARTIAL            := 220  /* is index partially updated */
		MEMBER DBOI_SHARED             := 221  /* is index open in shared mode */
		MEMBER DBOI_ISREADONLY         := 222  /* is index open in readonly mode */
		MEMBER DBOI_READLOCK           := 223  /* get/set index read lock */
		MEMBER DBOI_WRITELOCK          := 224  /* get/set index write lock */
		MEMBER DBOI_UPDATECOUNTER      := 225  /* get/set update index counter */
		MEMBER DBOI_EVALSTEP           := 226  /* eval step (EVERY) used in index command */
		MEMBER DBOI_ISREINDEX          := 227  /* Is reindex in process */
		MEMBER DBOI_I_BAGNAME          := 228  /* created index name */
		MEMBER DBOI_I_TAGNAME          := 229  /* created tag name */
		MEMBER DBOI_RELKEYPOS          := 230  /* get/set relative key position (in range 0 - 1) */
		MEMBER DBOI_USECURRENT         := 231  /* get/set "use current index" flag */
		MEMBER DBOI_INDEXTYPE          := 232  /* current index type */
		MEMBER DBOI_RESETPOS           := 233  /* rest logical and raw positions */
		MEMBER DBOI_INDEXPAGESIZE      := 234  /* get index page size */

		// XSharp extensions
		/// Dump the current order to a text file in the folder of the index.
		MEMBER DBOI_DUMP                := 300
		/// Logic: Validate the current order. Errors are written to a text file in the folder of the index. Only supported by DBFCDX
		MEMBER DBOI_VALIDATE            := 301

		MEMBER DBOI_USER 		:= 1000
		// Advantage
		MEMBER DBOI_AXS_PERCENT_INDEXED  := 1805
		MEMBER DBOI_GET_ACE_INDEX_HANDLE := 1806

	END ENUM

    /// DBF Field flags.
    [Flags];
    ENUM DBFFieldFlags AS BYTE
        MEMBER None             := 0x00
        /// System Field ?
        MEMBER System           := 0x01
        /// Field is Nullable
        MEMBER Nullable         := 0x02
        /// Field is Binary
        MEMBER Binary           := 0x04
        /// Field is AutoIncrement
        MEMBER AutoIncrement    := 0x08
        // Harbour additions
        /// Field is Compressed (not used yet, for compatibility with Harbour)
        MEMBER Compressed       := 0x10
        /// Field is Encrypted (not used yet, for compatibility with Harbour)
        MEMBER Encrypted        := 0x20
        /// Field contains Unicode text
        MEMBER Unicode          := 0x40

    END ENUM

	/// This enum specifies the various field types that can appear in DBF files.
	ENUM DbFieldType AS BYTE
		MEMBER Unknown		:= 0
        /// 'C', uses len and dec
		MEMBER Character 		:= 67
        /// 'D', 8 bytes
		MEMBER Date	 		:= 68
        /// 'L', 1 byte
		MEMBER Logic   		:= 76
        /// 'M', 4 or 10 bytes see Length
		MEMBER Memo    		:= 77
        /// 'N', uses len and dec
		MEMBER Number    		:= 78
        /// 'O', is anybody using this ?
		MEMBER VOObject		:= 79
		// FoxPro types in 'Name' order

        /// 'W' = Blob 4 or 10 bytes VFP type
		MEMBER Blob			:= 87
        //MEMBER Character 		:= 67
        ///  'Y'	VFP Type 8 byte
		MEMBER Currency		:= 89
        /// 'B'	VFP Type, also '8'
		MEMBER Double		:= 66
        /// 'T'	VFP Type can be 4 or 8 bytes
		MEMBER DateTime		:= 84
        /// 'F'	VFP Type, uses len and dec
		MEMBER Float		:= 70
        /// 'G'    VFP type Ole 4 or 10 bytes
		MEMBER General		:= 71
        /// 'I'	VFP Type , may be autoInc
		MEMBER Integer		:= 73
        /// 'P'	VFP Type, 4 or 10 bytes
		MEMBER Picture		:= 80
        /// 'Q'    VFP Type=, between 1 and 255
		MEMBER VarBinary		:= 81
        /// 'V'    VFP Type
		MEMBER VarChar      := 86
        /// '0'    VFP Type, contains Null Flags
        MEMBER NullFlags        := 48

        // other types for Harbour will be supported later
        /*
        /// '+' = AutoInc, 4 bytes
		MEMBER AutoIncrement	:= 43
        /// '2'	2 byte int, autoInc
		MEMBER Integer2		:= 50
        /// '4'	4 byte int, autoInc
		MEMBER Integer4		:= 52
        /// '8'  Same as 'B'
		MEMBER Double8		:= 56
        /// '=' = ModTime, 8 bytes
		MEMBER ModTime		:= 61
        /// '@' = Timestamp 8 bytes
		MEMBER TimeStamp		:= 64
        /// 'Z'	8 byte Currency
		MEMBER CurrencyDouble	:= 90
        /// '^' = RowVer, 8 bytes
		MEMBER RowVer			:= 94
        */
	END	 ENUM

	/// This enum specifies the various values that the RDDInfo method for the IRDD interface accepts.
	/// <note type="tip">
	/// These enums are also available as DEFINES and can therefore also be used without the "RDDInfo." prefix.
	/// </note>
	///
    /// <seealso cref='M:XSharp.RT.Functions.RddInfo(XSharp.__Usual,XSharp.__Usual)' >RddInfo()</seealso>
    /// <remarks>Most of these ENUMs come from Harbour and have not been implemented yet. </remarks>
	ENUM RddInfo
        /// Does this RDD support DBFs?
		MEMBER RDDI_ISDBF              :=   1
        /// Can this RDD Put Records?
		MEMBER RDDI_CANPUTREC          :=   2
        /// The field delimiter (as a string)
		MEMBER RDDI_DELIMITER          :=   3
        /// The record separator (as a string)
		MEMBER RDDI_SEPARATOR          :=   4
		/// Default data file's file extension
		MEMBER RDDI_TABLEEXT           :=   5
        /// Default memo file's file extension
		MEMBER RDDI_MEMOEXT            :=   6
        /// Default multi tag index's file extension
		MEMBER RDDI_ORDBAGEXT          :=   7
        /// default single tag index's file extension
		MEMBER RDDI_ORDEREXT           :=   8
        /// default single tag index's file extension
		MEMBER RDDI_ORDSTRUCTEXT       :=   9

        /// Local file access?
		MEMBER RDDI_LOCAL              :=  10
        /// Remote table access?
		MEMBER RDDI_REMOTE             :=  11
        /// Get/Set default connection
		MEMBER RDDI_CONNECTION         :=  12
        /// Type of table file
		MEMBER RDDI_TABLETYPE          :=  13
        /// Type of MEMO file DB_MEMO_*: DBT, SMT, FPT(FP,SIX3,FLEXIII)
		MEMBER RDDI_MEMOTYPE           :=  14
        /// Is large file size (>=4GB) supported
		MEMBER RDDI_LARGEFILE          :=  15
        /// Locking scheme used by RDD
		MEMBER RDDI_LOCKSCHEME         :=  16
        /// Does RDD support record map functionality?
		MEMBER RDDI_RECORDMAP          :=  17
        /// Does RDD support encryption
		MEMBER RDDI_ENCRYPTION         :=  18
        /// Get/Set default trigger function
		MEMBER RDDI_TRIGGER            :=  19
        /// automatic locking on update
		MEMBER RDDI_AUTOLOCK           :=  20

		/* index parameters */
        /// Are structural indexes supported
		MEMBER RDDI_STRUCTORD          :=  21
        /// Flag for avoiding RDD hierarchy and using a bigger buffer when indexing
		MEMBER RDDI_STRICTREAD         :=  22
        /// Flag for strict structural order checking
		MEMBER RDDI_STRICTSTRUCT       :=  23
        /// Flag for whether to use query optimization
		MEMBER RDDI_OPTIMIZE           :=  24
        /// Flag for forcing linear optimization
		MEMBER RDDI_FORCEOPT           :=  25
        /// Flag for automatically opening structural indexes
		MEMBER RDDI_AUTOOPEN           :=  26
        /// When a structural index is opened, the order to be set
		MEMBER RDDI_AUTOORDER          :=  27
        /// When a network is detected, open the index shared, otherwise open exclusively
		MEMBER RDDI_AUTOSHARE          :=  28
        /// Does RDD support multi tag in index file
		MEMBER RDDI_MULTITAG           :=  29
        /// Is record number part of key in sorting
		MEMBER RDDI_SORTRECNO          :=  30
        /// Does custom orders support repeated keys?
		MEMBER RDDI_MULTIKEY           :=  31

		/* memo parameters */
        /// Memo File's block size
		MEMBER RDDI_MEMOBLOCKSIZE      :=  32
        /// sub version of memo file
		MEMBER RDDI_MEMOVERSION        :=  33
        /// type of garbage collector used by GC
		MEMBER RDDI_MEMOGCTYPE         :=  34
        /// use read lock in memo file access
		MEMBER RDDI_MEMOREADLOCK       :=  35
        /// reuse free space on write
		MEMBER RDDI_MEMOREUSE          :=  36
        /// can support BLOB files directly
		MEMBER RDDI_BLOB_SUPPORT       :=  37

		/* misc */
        /// set pending trigger for next open operation
		MEMBER RDDI_PENDINGTRIGGER     :=  40
        /// set pending password for next open operation
		MEMBER RDDI_PENDINGPASSWORD    :=  41
        /// Get/Set default password
		MEMBER RDDI_PASSWORD           :=  42
        /// Get/Set record and file lock timeout value
		MEMBER RDDI_LOCKRETRY          :=  43
        /// Get/Set index dirty read flag
		MEMBER RDDI_DIRTYREAD          :=  44
        /// Get/Set default index page size
		MEMBER RDDI_INDEXPAGESIZE      :=  45
        /// Get/Set default number of decimal places for numeric fields if it's undefined
		MEMBER RDDI_DECIMALS           :=  46
        /// DBF header updating modes
		MEMBER RDDI_SETHEADER          :=  47

		/* SQL */
        /// connect to database
		MEMBER RDDI_CONNECT            :=  61
        /// disconnect from database
		MEMBER RDDI_DISCONNECT         :=  62
        /// execute SQL statement
		MEMBER RDDI_EXECUTE            :=  63
        /// error number
		MEMBER RDDI_ERROR              :=  64
        /// error description
		MEMBER RDDI_ERRORNO            :=  65
        /// last auto insert ID
		MEMBER RDDI_INSERTID           :=  66
        /// number of affected rows after UPDATE
		MEMBER RDDI_AFFECTEDROWS       :=  67
        /// last executed query
		MEMBER RDDI_QUERY              :=  68

	END ENUM

    /// Flags that describe how a DbSort operation can be done.
    [Flags];
    ENUM DbSortFlags
	    /// An ascending sort (default)
	    MEMBER Default := 0
	    ///  A case-insensitive sort
	    MEMBER Case	:= 1
	    /// A sort with printable numerics
	    MEMBER Numeric := 2
	    /// A sort for ASCII (not nation-dependent)
	    MEMBER Ascii	 := 4
	    /// A sort with long integer values
	    MEMBER Long	   := 0x80
	    /// A descending sort
	    MEMBER Descending := 0x100
    END ENUM

    /// Flags that describe how a DbTrans operation can be done.
    [Flags];
    ENUM DbTransInfoFlags
        /// Default
        MEMBER None := 0
        /// Both this work area and the destination work area have identical row structures (i.e., all columns match).
        MEMBER SameStructure := 1
	    /// The RDD has the ability to transfer an entire row.
        MEMBER CanPutRec     := 2
    END ENUM

    /// Enum that described the possible Notification messages that are sent to clients of Workareas
    /// <remarks>Clients that want to subscribe to these notifications can register themselves by calling DbRegisterClient() and must implement IDbNotify().</remarks>
    /// <seealso cref="IDbNotify"/>
    /// <seealso cref="DbRegisterClient"/>
    /// <seealso cref="DbUnRegisterClient"/>
    Enum DbNotificationType
        /// This message is sent after a file was created. The Data parameter is the name of the file that was opened.
        MEMBER FileCreate
        /// This message is sent after a file was opened. The Data parameter is the name of the file that was opened.
        MEMBER FileOpen
        /// This message is sent after a file is closed. The Data parameter is the name of the file that was closed.
        MEMBER FileClose
        /// This message is sent after an index was created. The Data parameter is the name of the file that was opened.
        MEMBER IndexCreate
        /// This message is sent after an index was deleted. The Data parameter is the name of the file that was opened.
        MEMBER IndexDelete
        /// This message is sent after an index was opened. The Data parameter is the name of the file that was opened.
        MEMBER IndexOpen
        /// This message is sent after an index was closed. The Data parameter is the name of the file that was closed.
        MEMBER IndexClose
        /// This message is sent before a build operation is started. The Data parameter is a description of the operation.
        MEMBER BeforeBulkOperation
        /// This message is sent after a build operation was completed. The Data parameter is a description of the operation.
        MEMBER AfterBulkOperation
        /// This message is sent after an order was changed. The Data parameter is the name of the new order.
        MEMBER OrderChanged
        /// This message is sent after a field was updated The Data parameter is the fieldname of the field that was updated.
        MEMBER BeforeFieldUpdate
        /// This message is sent after a field was updated The Data parameter is the fieldname of the field that was updated.
        MEMBER AfterFieldUpdate
        /// This message is sent before the record pointer is moved. The Data parameter indicates the reason for the move
        MEMBER BeforeMove
        /// This message is sent after the record pointer is moved. The Data parameter indicates the reason for the move
        MEMBER AfterMove
        /// This message is sent after a new record has been appended. The Data parameter is the record number of the record.
        MEMBER RecordAppended
        /// This message is sent after a record has been deleted. The Data parameter is the record number of the record.
        MEMBER AfterRecordDeleted
        /// This message is sent after a record has been deleted. The Data parameter is the record number of the record.
        MEMBER RecordDeleted := AfterRecordDeleted
        /// This message is sent after a record has been recalled. The Data parameter is the record number of the record.
        MEMBER AfterRecordRecalled
        /// This message is sent after a record has been recalled. The Data parameter is the record number of the record.
        MEMBER RecordRecalled := AfterRecordRecalled
        /// This message is sent after a record has been locked. The Data parameter is the record number of the record.
        MEMBER RecordLocked
        /// This message is sent after a record has been unlocked. The Data parameter is the record number of the record.
        MEMBER RecordUnLocked
        /// This message is sent after a Workarea was commited. The Data parameter is the file name of area.
        MEMBER FileCommit
        /// This message is sent before a record wil be deleted. The Data parameter is the record number of the record.
        MEMBER BeforeRecordDeleted
        /// This message is sent before a record wil be recalled. The Data parameter is the record number of the record.
        MEMBER BeforeRecordRecalled
        /// This message is sent after an operation failed. The Data parameter is the description of the operation.
        MEMBER OperationFailed    := 99
    END ENUM

END NAMESPACE


more slides

more slides

-- See: http://en.wikipedia.org/wiki/Normalisation_by_evaluation
-- and also http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.2361
-- almost there: http://www.cs.nott.ac.uk/~txa/publ/flops04.pdf
--       slides: http://www.cs.nott.ac.uk/~txa/talks/flops-slides.pdf
-- other slides: http://cs.ioc.ee/~tarmo/tsem08/abel-slides.pdf
--
import "../src/LangPrelude.prg" (listM,Monad,compose,const)

monad listM

-- abstract syntax -------------------------------------------------------------

data Ty :: *0 ~> *0 where
   Bool :: Ty Bool
   Arr :: Ty a -> Ty b -> Ty (a -> b)

data Var :: *0 ~> *0 ~> *0 where
   ZVar :: Var (h,t) t
   SVar :: Var h t -> Var (h,s) t

data Exp :: *0 ~> *0 ~> *0 where
   Var :: Var g t -> Exp g t
   Lam :: Ty a -> Exp (g,a) b -> Exp g (a -> b)
   App :: Exp g (s -> t) -> Exp g s -> Exp g t
   If :: Exp g Bool -> Exp g t -> Exp g t -> Exp g t
   ETrue :: Exp g Bool
   EFalse :: Exp g Bool

-- smart constructors ----------------------------------------------------------
lamE :: Ty s -> (Exp (g,s) s -> Exp (g,s) t) -> Exp g (s -> t)
lamE s f = Lam s (f (Var ZVar))

ifE :: Exp g Bool -> Exp g t -> Exp g t -> Exp g t
ifE t ETrue EFalse = t
ifE t e e' = if eqE e e' then e else If t e e'

-- boring equality tests -------------------------------------------------------
eqB :: BoxExp t -> BoxExp s -> Bool
eqB (Box e) (Box e') = eqE e e'

eqE :: Exp g t -> Exp h s -> Bool
eqE (Var x) (Var y) = eqV x y
eqE (Lam s e) (Lam s' e') = eqT s s' && eqE e e'
eqE (App e1 e2) (App e1' e2') = eqE e1 e1' && eqE e2 e2'
eqE (If e1 e2 e3) (If e1' e2' e3') = eqE e1 e1' && (eqE e2 e2' && eqE e3 e3')
eqE ETrue ETrue = True
eqE EFalse EFalse = True
eqE _ _ = False

eqT :: Ty t -> Ty s -> Bool
eqT (Arr s t) (Arr s' t') = eqT s s' && eqT t t'
eqT Bool Bool = True
eqT _ _ = False

eqV :: Var g t -> Var h s -> Bool
eqV (SVar x) (SVar y) = eqV x y
eqV ZVar ZVar = True
eqV _ _ = False

-- evaluation ------------------------------------------------------------------
var :: Var g t -> g -> t
var ZVar     (_,t) = t
var (SVar x) (h,s) = var x h

exp :: Exp g t -> g -> t
exp (Var x)    g = var x g
exp (Lam _ e)  g = \a -> exp e (g,a)
exp (App e e') g = exp e g (exp e' g)
exp ETrue      g = True
exp EFalse     g = False
exp (If c t e) g = if exp c g then exp t g else exp e g

-- type inference --------------------------------------------------------------

data TyEnv :: *0 ~> *0 where
   Cons :: Ty t -> TyEnv h -> TyEnv (h,t)
   Nil :: TyEnv g

infer :: TyEnv g -> Exp g t -> Ty t
infer g (Var x)         = inferVar g x
infer g (Lam t e)       = Arr t (infer (Cons t g) e)
infer g (App e e')      = case infer g e of Arr _ t -> t
infer g ETrue           = Bool
infer g EFalse          = Bool
infer g (If _ e _)      = infer g e

inferVar :: TyEnv g -> Var g t -> Ty t
inferVar (Cons t h) (SVar x) = inferVar h x
inferVar (Cons t h) (ZVar)   = t

-- tree monad ------------------------------------------------------------------

data Tree a = Val a | Choice (Tree a) (Tree a)
-- doesn't yet force trees to be fully balanced:
--      Val :: a -> Tree a Z
--      Choice :: Tree a n -> Tree a n -> Tree a (S n)

treeM = Monad Val bind error
  where bind (Val a) f = f a
        bind (Choice l r) f = Choice (bind l f) (bind r f)

tmap f x = do a <- x; return (f a)
  where monad treeM

flatten t = fl t []
 where
   fl (Val a)      k = a:k
   fl (Choice l r) k = fl l (fl r k)

-- quote & friends -------------------------------------------------------------

-- for values --------------------------
enumV           :: Ty t -> Tree t
questionsV      :: Ty t -> [t -> Bool]

enumV Bool      = Choice (Val True) (Val False)
enumV (Arr s t) = mkEnum (questionsV s) (enumV t)
 where
   monad treeM
   mkEnum [] t = tmap const t
   mkEnum (q:qs) es = do
                   f1 <- mkEnum qs es
                   f2 <- mkEnum qs es
                   return (\d -> if q d then f1 d else f2 d)

questionsV Bool         = return (\x -> x)
questionsV (Arr s t)    = do
                          d <- flatten (enumV s)
                          q <- questionsV t
                          return (\f -> q (f d))

-- for expressions ---------------------
enumE           :: Ty t -> Tree (Exp g t)
questionsE      :: Ty t -> [Exp g t -> Exp g Bool]

enumE Bool      = Choice (Val ETrue) (Val EFalse)
enumE (Arr s t) = tmap (lamE s) (mkEnumE (questionsE s) (enumE t))
 where
   monad treeM
   mkEnumE [] t = tmap const t
   mkEnumE (q:qs) es = do
                        f1 <- mkEnumE qs es
                        f2 <- mkEnumE qs es
                        return (\d -> ifE (q d) (f1 d) (f2 d))

questionsE Bool         = return (\x -> x)
questionsE (Arr s t)    = do
                          d <- flatten (enumE s)
                          q <- questionsE t
                          return (\f -> q (App f d))

-- should be
--      find (List (Exp g Bool) n) -> Tree (Exp g a) n -> Exp g a
find :: [Exp g Bool] -> Tree (Exp g a) -> Exp g a
find []         (Val a)         = a
find (b:bs)     (Choice l r)    = ifE b (find bs l) (find bs r)
find _          _               = error "bad arguments to find"

quote :: Ty t -> t -> Exp g t
quote Bool      t = case t of True -> ETrue; False -> EFalse
quote (Arr s t) f = lamE s (\e -> find (do q <- questionsE s; return (q e))
                                        (tmap (quote t . f) (enumV s)))

-- normalization (by evaluation) -----------------------------------------------
data BoxExp t = Box (forall g. Exp g t)

normalize :: Ty t -> BoxExp t -> BoxExp t
normalize s (Box e) = Box (quote s (exp e ()))

-- examples --------------------------------------------------------------------
b2b = Arr Bool Bool
b22b = Arr b2b b2b
zero = Var ZVar
one = Var (SVar ZVar)
once   = Box (Lam b2b (Lam Bool (App one zero)))
twice  = Box (Lam b2b (Lam Bool (App one (App one zero))))
thrice = Box (Lam b2b (Lam Bool (App one (App one (App one zero)))))

test = [ eqB (nf b22b thrice) (nf b22b once)
       , eqB (nf b22b twice)  (nf b22b once)]
  where nf = normalize

-- See: http://en.wikipedia.org/wiki/Normalisation_by_evaluation
-- and also http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.2361
-- almost there: http://www.cs.nott.ac.uk/~txa/publ/flops04.pdf
--       slides: http://www.cs.nott.ac.uk/~txa/talks/flops-slides.pdf
--
import "../src/LangPrelude.prg" (listM,Monad,compose,const)

monad listM

-- abstract syntax -------------------------------------------------------------

data Ty :: *0 ~> *0 where
   Bool :: Ty Bool
   Arr :: Ty a -> Ty b -> Ty (a -> b)

data Var :: *0 ~> *0 ~> *0 where
   ZVar :: Var (h,t) t
   SVar :: Var h t -> Var (h,s) t

data Exp :: *0 ~> *0 ~> *0 where
   Var :: Var g t -> Exp g t
   Lam :: Ty a -> Exp (g,a) b -> Exp g (a -> b)
   App :: Exp g (s -> t) -> Exp g s -> Exp g t
   If :: Exp g Bool -> Exp g t -> Exp g t -> Exp g t
   ETrue :: Exp g Bool
   EFalse :: Exp g Bool

-- smart constructors ----------------------------------------------------------
lamE :: Ty s -> (Exp (g,s) s -> Exp (g,s) t) -> Exp g (s -> t)
lamE s f = Lam s (f (Var ZVar))

ifE :: Exp g Bool -> Exp g t -> Exp g t -> Exp g t
ifE t ETrue EFalse = t
ifE t e e' = if eqE e e' then e else If t e e'

-- boring equality tests -------------------------------------------------------
eqB :: BoxExp t -> BoxExp s -> Bool
eqB (Box e) (Box e') = eqE e e'

eqE :: Exp g t -> Exp h s -> Bool
eqE (Var x) (Var y) = eqV x y
eqE (Lam s e) (Lam s' e') = eqT s s' && eqE e e'
eqE (App e1 e2) (App e1' e2') = eqE e1 e1' && eqE e2 e2'
eqE (If e1 e2 e3) (If e1' e2' e3') = eqE e1 e1' && (eqE e2 e2' && eqE e3 e3')
eqE ETrue ETrue = True
eqE EFalse EFalse = True
eqE _ _ = False

eqT :: Ty t -> Ty s -> Bool
eqT (Arr s t) (Arr s' t') = eqT s s' && eqT t t'
eqT Bool Bool = True
eqT _ _ = False

eqV :: Var g t -> Var h s -> Bool
eqV (SVar x) (SVar y) = eqV x y
eqV ZVar ZVar = True
eqV _ _ = False

-- evaluation ------------------------------------------------------------------
var :: Var g t -> g -> t
var ZVar     (_,t) = t
var (SVar x) (h,s) = var x h

exp :: Exp g t -> g -> t
exp (Var x)    g = var x g
exp (Lam _ e)  g = \a -> exp e (g,a)
exp (App e e') g = exp e g (exp e' g)
exp ETrue      g = True
exp EFalse     g = False
exp (If c t e) g = if exp c g then exp t g else exp e g

-- type inference --------------------------------------------------------------

data TyEnv :: *0 ~> *0 where
   Cons :: Ty t -> TyEnv h -> TyEnv (h,t)
   Nil :: TyEnv g

infer :: TyEnv g -> Exp g t -> Ty t
infer g (Var x)         = inferVar g x
infer g (Lam t e)       = Arr t (infer (Cons t g) e)
infer g (App e e')      = case infer g e of Arr _ t -> t
infer g ETrue           = Bool
infer g EFalse          = Bool
infer g (If _ e _)      = infer g e

inferVar :: TyEnv g -> Var g t -> Ty t
inferVar (Cons t h) (SVar x) = inferVar h x
inferVar (Cons t h) (ZVar)   = t

-- tree monad ------------------------------------------------------------------

data Tree a = Val a | Choice (Tree a) (Tree a)
-- doesn't yet force trees to be fully balanced:
--      Val :: a -> Tree a Z
--      Choice :: Tree a n -> Tree a n -> Tree a (S n)

treeM = Monad Val bind error
  where bind (Val a) f = f a
        bind (Choice l r) f = Choice (bind l f) (bind r f)

tmap f x = do a <- x; return (f a)
  where monad treeM

flatten t = fl t []
 where
   fl (Val a)      k = a:k
   fl (Choice l r) k = fl l (fl r k)

-- quote & friends -------------------------------------------------------------

-- for values --------------------------
enumV           :: Ty t -> Tree t
questionsV      :: Ty t -> [t -> Bool]

enumV Bool      = Choice (Val True) (Val False)
enumV (Arr s t) = mkEnum (questionsV s) (enumV t)
 where
   monad treeM
   mkEnum [] t = tmap const t
   mkEnum (q:qs) es = do
                   f1 <- mkEnum qs es
                   f2 <- mkEnum qs es
                   return (\d -> if q d then f1 d else f2 d)

questionsV Bool         = return (\x -> x)
questionsV (Arr s t)    = do
                          d <- flatten (enumV s)
                          q <- questionsV t
                          return (\f -> q (f d))

-- for expressions ---------------------
enumE           :: Ty t -> Tree (Exp g t)
questionsE      :: Ty t -> [Exp g t -> Exp g Bool]

enumE Bool      = Choice (Val ETrue) (Val EFalse)
enumE (Arr s t) = tmap (lamE s) (mkEnumE (questionsE s) (enumE t))
 where
   monad treeM
   mkEnumE [] t = tmap const t
   mkEnumE (q:qs) es = do
                        f1 <- mkEnumE qs es
                        f2 <- mkEnumE qs es
                        return (\d -> ifE (q d) (f1 d) (f2 d))

questionsE Bool         = return (\x -> x)
questionsE (Arr s t)    = do
                          d <- flatten (enumE s)
                          q <- questionsE t
                          return (\f -> q (App f d))

-- should be
--      find (List (Exp g Bool) n) -> Tree (Exp g a) n -> Exp g a
find :: [Exp g Bool] -> Tree (Exp g a) -> Exp g a
find []         (Val a)         = a
find (b:bs)     (Choice l r)    = ifE b (find bs l) (find bs r)
find _          _               = error "bad arguments to find"

quote :: Ty t -> t -> Exp g t
quote Bool      t = case t of True -> ETrue; False -> EFalse
quote (Arr s t) f = lamE s (\e -> find (do q <- questionsE s; return (q e))
                                        (tmap (quote t . f) (enumV s)))

-- normalization (by evaluation) -----------------------------------------------
data BoxExp t = Box (forall g. Exp g t)

normalize :: Ty t -> BoxExp t -> BoxExp t
normalize s (Box e) = Box (quote s (exp e ()))

-- examples --------------------------------------------------------------------
b2b = Arr Bool Bool
b22b = Arr b2b b2b
zero = Var ZVar
one = Var (SVar ZVar)
once   = Box (Lam b2b (Lam Bool (App one zero)))
twice  = Box (Lam b2b (Lam Bool (App one (App one zero))))
thrice = Box (Lam b2b (Lam Bool (App one (App one (App one zero)))))

test = [ eqB (nf b22b thrice) (nf b22b once)
       , eqB (nf b22b twice)  (nf b22b once)]
  where nf = normalize


QtHelp: data for code generation updated

Modified:
codegen/QtHelp/QHelpSearchEngine.prg

%%
%% Qt5xHb - Bindings libraries for Harbour/xHarbour and Qt Framework 5
%%
%% Copyright (C) 2018 Marcos Antonio Gambeta <marcosgambeta AT outlook DOT com>
%%

$header

#include "hbclass.ch"

#ifndef QT5XHB_NO_REQUESTS
REQUEST QHELPSEARCHQUERY
REQUEST QHELPSEARCHQUERYWIDGET
REQUEST QHELPSEARCHRESULTWIDGET
#endif

CLASS QHelpSearchEngine INHERIT QObject

   METHOD new
   METHOD delete
   METHOD hitCount
   METHOD query
   METHOD queryWidget
   METHOD resultWidget
   METHOD cancelIndexing
   METHOD cancelSearching
   METHOD reindexDocumentation
   METHOD search

   METHOD onIndexingFinished
   METHOD onIndexingStarted
   METHOD onSearchingFinished
   METHOD onSearchingStarted

   DESTRUCTOR destroyObject

END CLASS

$destructor

#pragma BEGINDUMP

$includes

#include <QHelpSearchQueryWidget>
#include <QHelpSearchResultWidget>

$prototype=QHelpSearchEngine ( QHelpEngineCore * helpEngine, QObject * parent = 0 )
$constructor=|new|QHelpEngineCore *,QObject *=0

$deleteMethod

$prototype=int hitCount () const
$method=|int|hitCount|

$prototype=QList<QHelpSearchQuery> query () const
$method=|QList<QHelpSearchQuery>|query|

$prototype=QHelpSearchQueryWidget * queryWidget ()
$method=|QHelpSearchQueryWidget *|queryWidget|

$prototype=QHelpSearchResultWidget * resultWidget ()
$method=|QHelpSearchResultWidget *|resultWidget|

$prototype=void cancelIndexing ()
$method=|void|cancelIndexing|

$prototype=void cancelSearching ()
$method=|void|cancelSearching|

$prototype=void reindexDocumentation ()
$method=|void|reindexDocumentation|

$prototype=void search ( const QList<QHelpSearchQuery> & queryList )
$method=|void|search|const QList<QHelpSearchQuery> &

#pragma ENDDUMP

%%
%% Qt5xHb - Bindings libraries for Harbour/xHarbour and Qt Framework 5
%%
%% Copyright (C) 2018 Marcos Antonio Gambeta <marcosgambeta AT outlook DOT com>
%%

$header

#include "hbclass.ch"

#ifndef QT5XHB_NO_REQUESTS
REQUEST QHELPSEARCHQUERY
REQUEST QHELPSEARCHQUERYWIDGET
REQUEST QHELPSEARCHRESULTWIDGET
#endif

CLASS QHelpSearchEngine INHERIT QObject

   METHOD new
   METHOD delete
   METHOD hitCount
   METHOD query
   METHOD queryWidget
   METHOD resultWidget
   METHOD cancelIndexing
   METHOD cancelSearching
   METHOD reindexDocumentation
   METHOD search

   METHOD onIndexingFinished
   METHOD onIndexingStarted
   METHOD onSearchingFinished
   METHOD onSearchingStarted

   DESTRUCTOR destroyObject

END CLASS

$destructor

#pragma BEGINDUMP

$includes

#include <QHelpSearchQueryWidget>
#include <QHelpSearchResultWidget

$prototype=QHelpSearchEngine ( QHelpEngineCore * helpEngine, QObject * parent = 0 )
$constructor=|new|QHelpEngineCore *,QObject *=0

$deleteMethod

$prototype=int hitCount () const
$method=|int|hitCount|

$prototype=QList<QHelpSearchQuery> query () const
$method=|QList<QHelpSearchQuery>|query|

$prototype=QHelpSearchQueryWidget * queryWidget ()
$method=|QHelpSearchQueryWidget *|queryWidget|

$prototype=QHelpSearchResultWidget * resultWidget ()
$method=|QHelpSearchResultWidget *|resultWidget|

$prototype=void cancelIndexing ()
$method=|void|cancelIndexing|

$prototype=void cancelSearching ()
$method=|void|cancelSearching|

$prototype=void reindexDocumentation ()
$method=|void|reindexDocumentation|

$prototype=void search ( const QList<QHelpSearchQuery> & queryList )
$method=|void|search|const QList<QHelpSearchQuery> &

#pragma ENDDUMP


[SDK] UnverifiableCodeAttribute is set by Roslyn for unsafe assemblies.

////////////////////////////////////////////////////////////////////////////////
// SDKAssemblyInfo.prg

#using System.Reflection
#using System.Runtime.InteropServices
#using System.Security

#include "BuildNumber.h"

[assembly: AssemblyConfigurationAttribute( ASSEMBLY_CONFIGURATION )]
[assembly: AssemblyCompanyAttribute( COMPANY_NAME )]
[assembly: AssemblyProductAttribute( PRODUCT_NAME )]
[assembly: AssemblyCopyrightAttribute( COPYRIGHT_STR )]
[assembly: ComVisibleAttribute( FALSE )]
[assembly: CLSCompliant( FALSE )]
//[assembly: AllowPartiallyTrustedCallersAttribute()]
[assembly: AssemblyVersionAttribute( VERSION_NUMBER_STR )]
[assembly: AssemblyInformationalVersionAttribute( INFORMATIONAL_NUMBER_STR )]
[assembly: AssemblyFileVersionAttribute( FILEVERSION_NUMBER_STR )]
#ifdef __XSHARP_RT__
[assembly: ImplicitNamespaceAttribute( "VO" )]
#else
[assembly: Vulcan.VulcanImplicitNamespaceAttribute( "VO" )]
#endif

[assembly: AllowPartiallyTrustedCallersAttribute()]
#ifdef __CLR4__
[assembly: SecurityRulesAttribute (SecurityRuleSet.Level1)]
#endif

////////////////////////////////////////////////////////////////////////////////
// SDKAssemblyInfo.prg

#using System.Reflection
#using System.Runtime.InteropServices
#using System.Security

#include "BuildNumber.h"

[assembly: AssemblyConfigurationAttribute( ASSEMBLY_CONFIGURATION )]
[assembly: AssemblyCompanyAttribute( COMPANY_NAME )]
[assembly: AssemblyProductAttribute( PRODUCT_NAME )]
[assembly: AssemblyCopyrightAttribute( COPYRIGHT_STR )]
[assembly: ComVisibleAttribute( FALSE )]
[assembly: CLSCompliant( FALSE )]
//[assembly: AllowPartiallyTrustedCallersAttribute()]
[assembly: AssemblyVersionAttribute( VERSION_NUMBER_STR )]
[assembly: AssemblyInformationalVersionAttribute( INFORMATIONAL_NUMBER_STR )]
[assembly: AssemblyFileVersionAttribute( FILEVERSION_NUMBER_STR )]
#ifdef __XSHARP_RT__
[assembly: ImplicitNamespaceAttribute( "VO" )]
#else
[assembly: Vulcan.VulcanImplicitNamespaceAttribute( "VO" )]
#endif

[module: UnverifiableCodeAttribute()]
[assembly: AllowPartiallyTrustedCallersAttribute()]
#ifdef __CLR4__
[assembly: SecurityRulesAttribute (SecurityRuleSet.Level1)]
#endif