--  Generated by             : BindCOM
--  Generated on             : 2003-03-31 8:12:37 AM
--  Library Name             : ADODB
--  Library Documentation    : Microsoft ActiveX Data Objects 2.0 Library
--  Library Version          : 2.0
--  Library LIBID            : {00000200-0000-0010-8000-00AA006D2EA4}
--  Elements in Type Library : 68

with Ada.Unchecked_Conversion;
with Interfaces.C;

with GNATCOM.Types;
with GNATCOM.GUID;

package ADO is

   subtype CursorTypeEnum is Interfaces.C.long;
   subtype CursorOptionEnum is Interfaces.C.long;
   subtype LockTypeEnum is Interfaces.C.long;
   subtype ExecuteOptionEnum is Interfaces.C.long;
   subtype ConnectOptionEnum is Interfaces.C.long;
   subtype ObjectStateEnum is Interfaces.C.long;
   subtype CursorLocationEnum is Interfaces.C.long;
   subtype DataTypeEnum is Interfaces.C.long;
   subtype FieldAttributeEnum is Interfaces.C.long;
   subtype EditModeEnum is Interfaces.C.long;
   subtype RecordStatusEnum is Interfaces.C.long;
   subtype GetRowsOptionEnum is Interfaces.C.long;
   subtype PositionEnum is Interfaces.C.long;
   subtype BookmarkEnum is Interfaces.C.long;
   subtype MarshalOptionsEnum is Interfaces.C.long;
   subtype AffectEnum is Interfaces.C.long;
   subtype ResyncEnum is Interfaces.C.long;
   subtype CompareEnum is Interfaces.C.long;
   subtype FilterGroupEnum is Interfaces.C.long;
   subtype SearchDirectionEnum is Interfaces.C.long;
   type SearchDirection;
   subtype PersistFormatEnum is Interfaces.C.long;
   subtype StringFormatEnum is Interfaces.C.long;
   subtype ADCPROP_UPDATECRITERIA_ENUM is Interfaces.C.long;
   subtype ADCPROP_ASYNCTHREADPRIORITY_ENUM is Interfaces.C.long;
   subtype ConnectPromptEnum is Interfaces.C.long;
   subtype ConnectModeEnum is Interfaces.C.long;
   subtype IsolationLevelEnum is Interfaces.C.long;
   subtype XactAttributeEnum is Interfaces.C.long;
   subtype PropertyAttributesEnum is Interfaces.C.long;
   subtype ErrorValueEnum is Interfaces.C.long;
   subtype ParameterAttributesEnum is Interfaces.C.long;
   subtype ParameterDirectionEnum is Interfaces.C.long;
   subtype CommandTypeEnum is Interfaces.C.long;
   subtype EventStatusEnum is Interfaces.C.long;
   subtype EventReasonEnum is Interfaces.C.long;
   subtype SchemaEnum is Interfaces.C.long;
   type uCollection;
   type uDynaCollection;
   type uADO;
   type Properties;
   type Property;
   type Error;
   type Errors;
   type uCommand15;
   type uConnection;
   type uRecordset;
   type Fields;
   type Field;
   type uParameter;
   type Parameters;
   type uConnection15;
   type uRecordset15;
   type Fields15;
   type uCommand;
   type ConnectionEventsVt;
   type RecordsetEventsVt;
   subtype ConnectionEvents is GNATCOM.Types.Pointer_To_IDispatch;
   subtype RecordsetEvents is GNATCOM.Types.Pointer_To_IDispatch;
   type ADOConnectionConstruction15;
   type ADOConnectionConstruction;
   type ADOCommandConstruction;
   type ADORecordsetConstruction;
   type Field15;

   type Pointer_To_uCollection is access all uCollection;
   type Pointer_To_uDynaCollection is access all uDynaCollection;
   type Pointer_To_uADO is access all uADO;
   type Pointer_To_Properties is access all Properties;
   type Pointer_To_Property is access all Property;
   type Pointer_To_DataTypeEnum is access all DataTypeEnum;
   type Pointer_To_Pointer_To_Property is access all Pointer_To_Property;
   type Pointer_To_Pointer_To_Properties is access all Pointer_To_Properties;
   type Pointer_To_Error is access all Error;
   type Pointer_To_Errors is access all Errors;
   type Pointer_To_Pointer_To_Error is access all Pointer_To_Error;
   type Pointer_To_uCommand15 is access all uCommand15;
   type Pointer_To_uConnection is access all uConnection;
   type Pointer_To_uRecordset is access all uRecordset;
   type Pointer_To_PositionEnum is access all PositionEnum;
   type Pointer_To_CursorTypeEnum is access all CursorTypeEnum;
   type Pointer_To_Fields is access all Fields;
   type Pointer_To_Field is access all Field;
   type Pointer_To_unsigned_char is access all Interfaces.C.unsigned_char;
   type Pointer_To_Pointer_To_Field is access all Pointer_To_Field;
   type Pointer_To_Pointer_To_Fields is access all Pointer_To_Fields;
   type Pointer_To_LockTypeEnum is access all LockTypeEnum;
   type Pointer_To_EditModeEnum is access all EditModeEnum;
   type Pointer_To_Pointer_To_uRecordset is access all Pointer_To_uRecordset;
   type Pointer_To_CursorLocationEnum is access all CursorLocationEnum;
   type Pointer_To_MarshalOptionsEnum is access all MarshalOptionsEnum;
   type Pointer_To_CompareEnum is access all CompareEnum;
   type Pointer_To_Pointer_To_Errors is access all Pointer_To_Errors;
   type Pointer_To_IsolationLevelEnum is access all IsolationLevelEnum;
   type Pointer_To_ConnectModeEnum is access all ConnectModeEnum;
   type Pointer_To_Pointer_To_uConnection is access all Pointer_To_uConnection;
   type Pointer_To_uParameter is access all uParameter;
   type Pointer_To_ParameterDirectionEnum is access all ParameterDirectionEnum;
   type Pointer_To_Pointer_To_uParameter is access all Pointer_To_uParameter;
   type Pointer_To_Parameters is access all Parameters;
   type Pointer_To_Pointer_To_Parameters is access all Pointer_To_Parameters;
   type Pointer_To_CommandTypeEnum is access all CommandTypeEnum;
   type Pointer_To_uConnection15 is access all uConnection15;
   type Pointer_To_uRecordset15 is access all uRecordset15;
   type Pointer_To_Fields15 is access all Fields15;
   type Pointer_To_uCommand is access all uCommand;
   type Pointer_To_ConnectionEventsVt is access all ConnectionEventsVt;
   type Pointer_To_EventStatusEnum is access all EventStatusEnum;
   type Pointer_To_RecordsetEventsVt is access all RecordsetEventsVt;
   type Pointer_To_ADOConnectionConstruction15 is
      access all ADOConnectionConstruction15;
   type Pointer_To_ADOConnectionConstruction is
      access all ADOConnectionConstruction;
   type Pointer_To_ADOCommandConstruction is
      access all ADOCommandConstruction;
   type Pointer_To_ADORecordsetConstruction is
      access all ADORecordsetConstruction;
   type Pointer_To_Field15 is access all Field15;

   type SearchDirection is
     new SearchDirectionEnum;

   LIBID_ADODB : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000200-0000-0010-8000-00AA006D2EA4}");

   --  Element Index         : 0
   --  Element Name          : CursorTypeEnum
   --  Element Type          : Enumeration

   adOpenUnspecified : constant := -1;
   adOpenForwardOnly : constant := 0;
   adOpenKeyset      : constant := 1;
   adOpenDynamic     : constant := 2;
   adOpenStatic      : constant := 3;

   --  Element Index         : 1
   --  Element Name          : CursorOptionEnum
   --  Element Type          : Enumeration

   adHoldRecords    : constant := 256;
   adMovePrevious   : constant := 512;
   adAddNew         : constant := 16778240;
   adDelete         : constant := 16779264;
   adUpdate         : constant := 16809984;
   adBookmark       : constant := 8192;
   adApproxPosition : constant := 16384;
   adUpdateBatch    : constant := 65536;
   adResync         : constant := 131072;
   adNotify         : constant := 262144;
   adFind           : constant := 524288;

   --  Element Index         : 2
   --  Element Name          : LockTypeEnum
   --  Element Type          : Enumeration

   adLockUnspecified     : constant := -1;
   adLockReadOnly        : constant := 1;
   adLockPessimistic     : constant := 2;
   adLockOptimistic      : constant := 3;
   adLockBatchOptimistic : constant := 4;

   --  Element Index         : 3
   --  Element Name          : ExecuteOptionEnum
   --  Element Type          : Enumeration

   adOptionUnspecified     : constant := -1;
   adAsyncExecute          : constant := 16;
   adAsyncFetch            : constant := 32;
   adAsyncFetchNonBlocking : constant := 64;
   adExecuteNoRecords      : constant := 128;

   --  Element Index         : 4
   --  Element Name          : ConnectOptionEnum
   --  Element Type          : Enumeration

   adConnectUnspecified : constant := -1;
   adAsyncConnect       : constant := 16;

   --  Element Index         : 5
   --  Element Name          : ObjectStateEnum
   --  Element Type          : Enumeration

   adStateClosed     : constant := 0;
   adStateOpen       : constant := 1;
   adStateConnecting : constant := 2;
   adStateExecuting  : constant := 4;
   adStateFetching   : constant := 8;

   --  Element Index         : 6
   --  Element Name          : CursorLocationEnum
   --  Element Type          : Enumeration

   adUseNone        : constant := 1;
   adUseServer      : constant := 2;
   adUseClient      : constant := 3;
   adUseClientBatch : constant := 3;

   --  Element Index         : 7
   --  Element Name          : DataTypeEnum
   --  Element Type          : Enumeration

   adEmpty            : constant := 0;
   adTinyInt          : constant := 16;
   adSmallInt         : constant := 2;
   adInteger          : constant := 3;
   adBigInt           : constant := 20;
   adUnsignedTinyInt  : constant := 17;
   adUnsignedSmallInt : constant := 18;
   adUnsignedInt      : constant := 19;
   adUnsignedBigInt   : constant := 21;
   adSingle           : constant := 4;
   adDouble           : constant := 5;
   adCurrency         : constant := 6;
   adDecimal          : constant := 14;
   adNumeric          : constant := 131;
   adBoolean          : constant := 11;
   adError            : constant := 10;
   adUserDefined      : constant := 132;
   adVariant          : constant := 12;
   adIDispatch        : constant := 9;
   adIUnknown         : constant := 13;
   adGUID             : constant := 72;
   adDate             : constant := 7;
   adDBDate           : constant := 133;
   adDBTime           : constant := 134;
   adDBTimeStamp      : constant := 135;
   adBSTR             : constant := 8;
   adChar             : constant := 129;
   adVarChar          : constant := 200;
   adLongVarChar      : constant := 201;
   adWChar            : constant := 130;
   adVarWChar         : constant := 202;
   adLongVarWChar     : constant := 203;
   adBinary           : constant := 128;
   adVarBinary        : constant := 204;
   adLongVarBinary    : constant := 205;
   adChapter          : constant := 136;
   adFileTime         : constant := 64;
   adDBFileTime       : constant := 137;
   adPropVariant      : constant := 138;
   adVarNumeric       : constant := 139;

   --  Element Index         : 8
   --  Element Name          : FieldAttributeEnum
   --  Element Type          : Enumeration

   adFldUnspecified      : constant := -1;
   adFldMayDefer         : constant := 2;
   adFldUpdatable        : constant := 4;
   adFldUnknownUpdatable : constant := 8;
   adFldFixed            : constant := 16;
   adFldIsNullable       : constant := 32;
   adFldMayBeNull        : constant := 64;
   adFldLong             : constant := 128;
   adFldRowID            : constant := 256;
   adFldRowVersion       : constant := 512;
   adFldCacheDeferred    : constant := 4096;
   adFldNegativeScale    : constant := 16384;
   adFldKeyColumn        : constant := 32768;

   --  Element Index         : 9
   --  Element Name          : EditModeEnum
   --  Element Type          : Enumeration

   adEditNone       : constant := 0;
   adEditInProgress : constant := 1;
   adEditAdd        : constant := 2;
   adEditDelete     : constant := 4;

   --  Element Index         : 10
   --  Element Name          : RecordStatusEnum
   --  Element Type          : Enumeration

   adRecOK                   : constant := 0;
   adRecNew                  : constant := 1;
   adRecModified             : constant := 2;
   adRecDeleted              : constant := 4;
   adRecUnmodified           : constant := 8;
   adRecInvalid              : constant := 16;
   adRecMultipleChanges      : constant := 64;
   adRecPendingChanges       : constant := 128;
   adRecCanceled             : constant := 256;
   adRecCantRelease          : constant := 1024;
   adRecConcurrencyViolation : constant := 2048;
   adRecIntegrityViolation   : constant := 4096;
   adRecMaxChangesExceeded   : constant := 8192;
   adRecObjectOpen           : constant := 16384;
   adRecOutOfMemory          : constant := 32768;
   adRecPermissionDenied     : constant := 65536;
   adRecSchemaViolation      : constant := 131072;
   adRecDBDeleted            : constant := 262144;

   --  Element Index         : 11
   --  Element Name          : GetRowsOptionEnum
   --  Element Type          : Enumeration

   adGetRowsRest : constant := -1;

   --  Element Index         : 12
   --  Element Name          : PositionEnum
   --  Element Type          : Enumeration

   adPosUnknown : constant := -1;
   adPosBOF     : constant := -2;
   adPosEOF     : constant := -3;

   --  Element Index         : 13
   --  Element Name          : BookmarkEnum
   --  Element Type          : Enumeration

   adBookmarkCurrent : constant := 0;
   adBookmarkFirst   : constant := 1;
   adBookmarkLast    : constant := 2;

   --  Element Index         : 14
   --  Element Name          : MarshalOptionsEnum
   --  Element Type          : Enumeration

   adMarshalAll          : constant := 0;
   adMarshalModifiedOnly : constant := 1;

   --  Element Index         : 15
   --  Element Name          : AffectEnum
   --  Element Type          : Enumeration

   adAffectCurrent     : constant := 1;
   adAffectGroup       : constant := 2;
   adAffectAll         : constant := 3;
   adAffectAllChapters : constant := 4;

   --  Element Index         : 16
   --  Element Name          : ResyncEnum
   --  Element Type          : Enumeration

   adResyncUnderlyingValues : constant := 1;
   adResyncAllValues        : constant := 2;

   --  Element Index         : 17
   --  Element Name          : CompareEnum
   --  Element Type          : Enumeration

   adCompareLessThan      : constant := 0;
   adCompareEqual         : constant := 1;
   adCompareGreaterThan   : constant := 2;
   adCompareNotEqual      : constant := 3;
   adCompareNotComparable : constant := 4;

   --  Element Index         : 18
   --  Element Name          : FilterGroupEnum
   --  Element Type          : Enumeration

   adFilterNone               : constant := 0;
   adFilterPendingRecords     : constant := 1;
   adFilterAffectedRecords    : constant := 2;
   adFilterFetchedRecords     : constant := 3;
   adFilterPredicate          : constant := 4;
   adFilterConflictingRecords : constant := 5;

   --  Element Index         : 19
   --  Element Name          : SearchDirectionEnum
   --  Element Type          : Enumeration

   adSearchForward  : constant := 1;
   adSearchBackward : constant := -1;

   --  Element Index         : 21
   --  Element Name          : PersistFormatEnum
   --  Element Type          : Enumeration

   adPersistADTG : constant := 0;
   adPersistXML  : constant := 1;

   --  Element Index         : 22
   --  Element Name          : StringFormatEnum
   --  Element Type          : Enumeration

   adClipString : constant := 2;

   --  Element Index         : 23
   --  Element Name          : ADCPROP_UPDATECRITERIA_ENUM
   --  Element Type          : Enumeration

   adCriteriaKey       : constant := 0;
   adCriteriaAllCols   : constant := 1;
   adCriteriaUpdCols   : constant := 2;
   adCriteriaTimeStamp : constant := 3;

   --  Element Index         : 24
   --  Element Name          : ADCPROP_ASYNCTHREADPRIORITY_ENUM
   --  Element Type          : Enumeration

   adPriorityLowest      : constant := 1;
   adPriorityBelowNormal : constant := 2;
   adPriorityNormal      : constant := 3;
   adPriorityAboveNormal : constant := 4;
   adPriorityHighest     : constant := 5;

   --  Element Index         : 25
   --  Element Name          : ConnectPromptEnum
   --  Element Type          : Enumeration

   adPromptAlways           : constant := 1;
   adPromptComplete         : constant := 2;
   adPromptCompleteRequired : constant := 3;
   adPromptNever            : constant := 4;

   --  Element Index         : 26
   --  Element Name          : ConnectModeEnum
   --  Element Type          : Enumeration

   adModeUnknown        : constant := 0;
   adModeRead           : constant := 1;
   adModeWrite          : constant := 2;
   adModeReadWrite      : constant := 3;
   adModeShareDenyRead  : constant := 4;
   adModeShareDenyWrite : constant := 8;
   adModeShareExclusive : constant := 12;
   adModeShareDenyNone  : constant := 16;

   --  Element Index         : 27
   --  Element Name          : IsolationLevelEnum
   --  Element Type          : Enumeration

   adXactUnspecified     : constant := -1;
   adXactChaos           : constant := 16;
   adXactReadUncommitted : constant := 256;
   adXactBrowse          : constant := 256;
   adXactCursorStability : constant := 4096;
   adXactReadCommitted   : constant := 4096;
   adXactRepeatableRead  : constant := 65536;
   adXactSerializable    : constant := 1048576;
   adXactIsolated        : constant := 1048576;

   --  Element Index         : 28
   --  Element Name          : XactAttributeEnum
   --  Element Type          : Enumeration

   adXactCommitRetaining : constant := 131072;
   adXactAbortRetaining  : constant := 262144;
   adXactAsyncPhaseOne   : constant := 524288;
   adXactSyncPhaseOne    : constant := 1048576;

   --  Element Index         : 29
   --  Element Name          : PropertyAttributesEnum
   --  Element Type          : Enumeration

   adPropNotSupported : constant := 0;
   adPropRequired     : constant := 1;
   adPropOptional     : constant := 2;
   adPropRead         : constant := 512;
   adPropWrite        : constant := 1024;

   --  Element Index         : 30
   --  Element Name          : ErrorValueEnum
   --  Element Type          : Enumeration

   adErrInvalidArgument     : constant := 3001;
   adErrNoCurrentRecord     : constant := 3021;
   adErrIllegalOperation    : constant := 3219;
   adErrInTransaction       : constant := 3246;
   adErrFeatureNotAvailable : constant := 3251;
   adErrItemNotFound        : constant := 3265;
   adErrObjectInCollection  : constant := 3367;
   adErrObjectNotSet        : constant := 3420;
   adErrDataConversion      : constant := 3421;
   adErrObjectClosed        : constant := 3704;
   adErrObjectOpen          : constant := 3705;
   adErrProviderNotFound    : constant := 3706;
   adErrBoundToCommand      : constant := 3707;
   adErrInvalidParamInfo    : constant := 3708;
   adErrInvalidConnection   : constant := 3709;
   adErrNotReentrant        : constant := 3710;
   adErrStillExecuting      : constant := 3711;
   adErrOperationCancelled  : constant := 3712;
   adErrStillConnecting     : constant := 3713;
   adErrNotExecuting        : constant := 3715;
   adErrUnsafeOperation     : constant := 3716;

   --  Element Index         : 31
   --  Element Name          : ParameterAttributesEnum
   --  Element Type          : Enumeration

   adParamSigned   : constant := 16;
   adParamNullable : constant := 64;
   adParamLong     : constant := 128;

   --  Element Index         : 32
   --  Element Name          : ParameterDirectionEnum
   --  Element Type          : Enumeration

   adParamUnknown     : constant := 0;
   adParamInput       : constant := 1;
   adParamOutput      : constant := 2;
   adParamInputOutput : constant := 3;
   adParamReturnValue : constant := 4;

   --  Element Index         : 33
   --  Element Name          : CommandTypeEnum
   --  Element Type          : Enumeration

   adCmdUnspecified : constant := -1;
   adCmdUnknown     : constant := 8;
   adCmdText        : constant := 1;
   adCmdTable       : constant := 2;
   adCmdStoredProc  : constant := 4;
   adCmdFile        : constant := 256;
   adCmdTableDirect : constant := 512;

   --  Element Index         : 34
   --  Element Name          : EventStatusEnum
   --  Element Type          : Enumeration

   adStatusOK             : constant := 1;
   adStatusErrorsOccurred : constant := 2;
   adStatusCantDeny       : constant := 3;
   adStatusCancel         : constant := 4;
   adStatusUnwantedEvent  : constant := 5;

   --  Element Index         : 35
   --  Element Name          : EventReasonEnum
   --  Element Type          : Enumeration

   adRsnAddNew       : constant := 1;
   adRsnDelete       : constant := 2;
   adRsnUpdate       : constant := 3;
   adRsnUndoUpdate   : constant := 4;
   adRsnUndoAddNew   : constant := 5;
   adRsnUndoDelete   : constant := 6;
   adRsnRequery      : constant := 7;
   adRsnResynch      : constant := 8;
   adRsnClose        : constant := 9;
   adRsnMove         : constant := 10;
   adRsnFirstChange  : constant := 11;
   adRsnMoveFirst    : constant := 12;
   adRsnMoveNext     : constant := 13;
   adRsnMovePrevious : constant := 14;
   adRsnMoveLast     : constant := 15;

   --  Element Index         : 36
   --  Element Name          : SchemaEnum
   --  Element Type          : Enumeration

   adSchemaProviderSpecific      : constant := -1;
   adSchemaAsserts               : constant := 0;
   adSchemaCatalogs              : constant := 1;
   adSchemaCharacterSets         : constant := 2;
   adSchemaCollations            : constant := 3;
   adSchemaColumns               : constant := 4;
   adSchemaCheckConstraints      : constant := 5;
   adSchemaConstraintColumnUsage : constant := 6;
   adSchemaConstraintTableUsage  : constant := 7;
   adSchemaKeyColumnUsage        : constant := 8;
   adSchemaReferentialContraints : constant := 9;
   adSchemaTableConstraints      : constant := 10;
   adSchemaColumnsDomainUsage    : constant := 11;
   adSchemaIndexes               : constant := 12;
   adSchemaColumnPrivileges      : constant := 13;
   adSchemaTablePrivileges       : constant := 14;
   adSchemaUsagePrivileges       : constant := 15;
   adSchemaProcedures            : constant := 16;
   adSchemaSchemata              : constant := 17;
   adSchemaSQLLanguages          : constant := 18;
   adSchemaStatistics            : constant := 19;
   adSchemaTables                : constant := 20;
   adSchemaTranslations          : constant := 21;
   adSchemaProviderTypes         : constant := 22;
   adSchemaViews                 : constant := 23;
   adSchemaViewColumnUsage       : constant := 24;
   adSchemaViewTableUsage        : constant := 25;
   adSchemaProcedureParameters   : constant := 26;
   adSchemaForeignKeys           : constant := 27;
   adSchemaPrimaryKeys           : constant := 28;
   adSchemaProcedureColumns      : constant := 29;
   adSchemaDBInfoKeywords        : constant := 30;
   adSchemaDBInfoLiterals        : constant := 31;
   adSchemaCubes                 : constant := 32;
   adSchemaDimensions            : constant := 33;
   adSchemaHierarchies           : constant := 34;
   adSchemaLevels                : constant := 35;
   adSchemaMeasures              : constant := 36;
   adSchemaProperties            : constant := 37;
   adSchemaMembers               : constant := 38;

   --  Element Index         : 37
   --  Element Name          : _Collection
   --  Element Type          : Dispatch

   IID_uCollection : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000512-0000-0010-8000-00AA006D2EA4}");

   type af_uCollection_QueryInterface is access
     function (This   : access uCollection;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCollection_QueryInterface);

   type af_uCollection_AddRef is access
     function (This : access uCollection)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uCollection_AddRef);

   type af_uCollection_Release is access
     function (This : access uCollection)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uCollection_Release);

   type af_uCollection_GetTypeInfoCount is access
     function (This    : access uCollection;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCollection_GetTypeInfoCount);

   type af_uCollection_GetTypeInfo is access
     function (This    : access uCollection;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCollection_GetTypeInfo);

   type af_uCollection_GetIDsOfNames is access
     function (This      : access uCollection;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCollection_GetIDsOfNames);

   type af_uCollection_Invoke is access
     function (This         : access uCollection;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCollection_Invoke);

   type af_uCollection_Get_Count is access
     function (This : access uCollection;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCollection_Get_Count);

   type af_uCollection_uNewEnum is access
     function (This      : access uCollection;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCollection_uNewEnum);

   type af_uCollection_Refresh is access
     function (This : access uCollection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCollection_Refresh);

   type uCollectionVtbl;
   type Pointer_To_uCollectionVtbl is access all uCollectionVtbl;

   type uCollection is
      record
         Vtbl : Pointer_To_uCollectionVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, uCollection);

   type uCollectionVtbl is
      record
         QueryInterface   : af_uCollection_QueryInterface;
         AddRef           : af_uCollection_AddRef;
         Release          : af_uCollection_Release;
         GetTypeInfoCount : af_uCollection_GetTypeInfoCount;
         GetTypeInfo      : af_uCollection_GetTypeInfo;
         GetIDsOfNames    : af_uCollection_GetIDsOfNames;
         Invoke           : af_uCollection_Invoke;
         Get_Count        : af_uCollection_Get_Count;
         uNewEnum         : af_uCollection_uNewEnum;
         Refresh          : af_uCollection_Refresh;
      end record;
   pragma Convention (C_Pass_By_Copy, uCollectionVtbl);

   function To_Pointer_To_uCollection is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_uCollection);

   --  Element Index         : 37
   --  Element Name          : _Collection
   --  Element Type          : Dispatch

   uCollection_Get_Count : constant := 1610743808;
   uCollection_uNewEnum  : constant := -4;
   uCollection_Refresh   : constant := 1610743810;

   --  Element Index         : 38
   --  Element Name          : _DynaCollection
   --  Element Type          : Dispatch

   IID_uDynaCollection : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000513-0000-0010-8000-00AA006D2EA4}");

   type af_uDynaCollection_QueryInterface is access
     function (This   : access uDynaCollection;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uDynaCollection_QueryInterface);

   type af_uDynaCollection_AddRef is access
     function (This : access uDynaCollection)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uDynaCollection_AddRef);

   type af_uDynaCollection_Release is access
     function (This : access uDynaCollection)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uDynaCollection_Release);

   type af_uDynaCollection_GetTypeInfoCount is access
     function (This    : access uDynaCollection;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uDynaCollection_GetTypeInfoCount);

   type af_uDynaCollection_GetTypeInfo is access
     function (This    : access uDynaCollection;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uDynaCollection_GetTypeInfo);

   type af_uDynaCollection_GetIDsOfNames is access
     function (This      : access uDynaCollection;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uDynaCollection_GetIDsOfNames);

   type af_uDynaCollection_Invoke is access
     function (This         : access uDynaCollection;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uDynaCollection_Invoke);

   type af_uDynaCollection_Get_Count is access
     function (This : access uDynaCollection;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uDynaCollection_Get_Count);

   type af_uDynaCollection_uNewEnum is access
     function (This      : access uDynaCollection;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uDynaCollection_uNewEnum);

   type af_uDynaCollection_Refresh is access
     function (This : access uDynaCollection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uDynaCollection_Refresh);

   type af_uDynaCollection_Append is access
     function (This   : access uDynaCollection;
               Object : GNATCOM.Types.Pointer_To_IDispatch)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uDynaCollection_Append);

   type af_uDynaCollection_Delete is access
     function (This  : access uDynaCollection;
               Index : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uDynaCollection_Delete);

   type uDynaCollectionVtbl;
   type Pointer_To_uDynaCollectionVtbl is access all uDynaCollectionVtbl;

   type uDynaCollection is
      record
         Vtbl : Pointer_To_uDynaCollectionVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, uDynaCollection);

   type uDynaCollectionVtbl is
      record
         QueryInterface   : af_uDynaCollection_QueryInterface;
         AddRef           : af_uDynaCollection_AddRef;
         Release          : af_uDynaCollection_Release;
         GetTypeInfoCount : af_uDynaCollection_GetTypeInfoCount;
         GetTypeInfo      : af_uDynaCollection_GetTypeInfo;
         GetIDsOfNames    : af_uDynaCollection_GetIDsOfNames;
         Invoke           : af_uDynaCollection_Invoke;
         Get_Count        : af_uDynaCollection_Get_Count;
         uNewEnum         : af_uDynaCollection_uNewEnum;
         Refresh          : af_uDynaCollection_Refresh;
         Append           : af_uDynaCollection_Append;
         Delete           : af_uDynaCollection_Delete;
      end record;
   pragma Convention (C_Pass_By_Copy, uDynaCollectionVtbl);

   function To_Pointer_To_uDynaCollection is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_uDynaCollection);

   --  Element Index         : 38
   --  Element Name          : _DynaCollection
   --  Element Type          : Dispatch

   uDynaCollection_Get_Count : constant := 1610743808;
   uDynaCollection_uNewEnum  : constant := -4;
   uDynaCollection_Refresh   : constant := 1610743810;
   uDynaCollection_Append    : constant := 1610809344;
   uDynaCollection_Delete    : constant := 1610809345;

   --  Element Index         : 41
   --  Element Name          : Property
   --  Element Type          : Dispatch

   IID_Property : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000503-0000-0010-8000-00AA006D2EA4}");

   type af_Property_QueryInterface is access
     function (This   : access Property;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Property_QueryInterface);

   type af_Property_AddRef is access
     function (This : access Property)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Property_AddRef);

   type af_Property_Release is access
     function (This : access Property)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Property_Release);

   type af_Property_GetTypeInfoCount is access
     function (This    : access Property;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Property_GetTypeInfoCount);

   type af_Property_GetTypeInfo is access
     function (This    : access Property;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Property_GetTypeInfo);

   type af_Property_GetIDsOfNames is access
     function (This      : access Property;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Property_GetIDsOfNames);

   type af_Property_Invoke is access
     function (This         : access Property;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Property_Invoke);

   type af_Property_Get_Value is access
     function (This : access Property;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Property_Get_Value);

   type af_Property_Put_Value is access
     function (This : access Property;
               pval : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Property_Put_Value);

   type af_Property_Get_Name is access
     function (This  : access Property;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Property_Get_Name);

   type af_Property_Get_Type is access
     function (This  : access Property;
               RetVal : Pointer_To_DataTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Property_Get_Type);

   type af_Property_Get_Attributes is access
     function (This         : access Property;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Property_Get_Attributes);

   type af_Property_Put_Attributes is access
     function (This         : access Property;
               plAttributes : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Property_Put_Attributes);

   type PropertyVtbl;
   type Pointer_To_PropertyVtbl is access all PropertyVtbl;

   type Property is
      record
         Vtbl : Pointer_To_PropertyVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, Property);

   type PropertyVtbl is
      record
         QueryInterface   : af_Property_QueryInterface;
         AddRef           : af_Property_AddRef;
         Release          : af_Property_Release;
         GetTypeInfoCount : af_Property_GetTypeInfoCount;
         GetTypeInfo      : af_Property_GetTypeInfo;
         GetIDsOfNames    : af_Property_GetIDsOfNames;
         Invoke           : af_Property_Invoke;
         Get_Value        : af_Property_Get_Value;
         Put_Value        : af_Property_Put_Value;
         Get_Name         : af_Property_Get_Name;
         Get_Type         : af_Property_Get_Type;
         Get_Attributes   : af_Property_Get_Attributes;
         Put_Attributes   : af_Property_Put_Attributes;
      end record;
   pragma Convention (C_Pass_By_Copy, PropertyVtbl);

   function To_Pointer_To_Property is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_Property);

   --  Element Index         : 41
   --  Element Name          : Property
   --  Element Type          : Dispatch

   Property_Get_Value      : constant := 0;
   Property_Put_Value      : constant := 0;
   Property_Get_Name       : constant := 1610743810;
   Property_Get_Type       : constant := 1610743811;
   Property_Get_Attributes : constant := 1610743812;
   Property_Put_Attributes : constant := 1610743812;

   --  Element Index         : 40
   --  Element Name          : Properties
   --  Element Type          : Dispatch

   IID_Properties : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000504-0000-0010-8000-00AA006D2EA4}");

   type af_Properties_QueryInterface is access
     function (This   : access Properties;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Properties_QueryInterface);

   type af_Properties_AddRef is access
     function (This : access Properties)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Properties_AddRef);

   type af_Properties_Release is access
     function (This : access Properties)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Properties_Release);

   type af_Properties_GetTypeInfoCount is access
     function (This    : access Properties;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Properties_GetTypeInfoCount);

   type af_Properties_GetTypeInfo is access
     function (This    : access Properties;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Properties_GetTypeInfo);

   type af_Properties_GetIDsOfNames is access
     function (This      : access Properties;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Properties_GetIDsOfNames);

   type af_Properties_Invoke is access
     function (This         : access Properties;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Properties_Invoke);

   type af_Properties_Get_Count is access
     function (This : access Properties;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Properties_Get_Count);

   type af_Properties_uNewEnum is access
     function (This      : access Properties;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Properties_uNewEnum);

   type af_Properties_Refresh is access
     function (This : access Properties)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Properties_Refresh);

   type af_Properties_Get_Item is access
     function (This      : access Properties;
               Index     : GNATCOM.Types.VARIANT;
               RetVal : Pointer_To_Pointer_To_Property)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Properties_Get_Item);

   type PropertiesVtbl;
   type Pointer_To_PropertiesVtbl is access all PropertiesVtbl;

   type Properties is
      record
         Vtbl : Pointer_To_PropertiesVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, Properties);

   type PropertiesVtbl is
      record
         QueryInterface   : af_Properties_QueryInterface;
         AddRef           : af_Properties_AddRef;
         Release          : af_Properties_Release;
         GetTypeInfoCount : af_Properties_GetTypeInfoCount;
         GetTypeInfo      : af_Properties_GetTypeInfo;
         GetIDsOfNames    : af_Properties_GetIDsOfNames;
         Invoke           : af_Properties_Invoke;
         Get_Count        : af_Properties_Get_Count;
         uNewEnum         : af_Properties_uNewEnum;
         Refresh          : af_Properties_Refresh;
         Get_Item         : af_Properties_Get_Item;
      end record;
   pragma Convention (C_Pass_By_Copy, PropertiesVtbl);

   function To_Pointer_To_Properties is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_Properties);

   --  Element Index         : 40
   --  Element Name          : Properties
   --  Element Type          : Dispatch

   Properties_Get_Count : constant := 1610743808;
   Properties_uNewEnum  : constant := -4;
   Properties_Refresh   : constant := 1610743810;
   Properties_Get_Item  : constant := 0;

   --  Element Index         : 39
   --  Element Name          : _ADO
   --  Element Type          : Dispatch

   IID_uADO : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000534-0000-0010-8000-00AA006D2EA4}");

   type af_uADO_QueryInterface is access
     function (This   : access uADO;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uADO_QueryInterface);

   type af_uADO_AddRef is access
     function (This : access uADO)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uADO_AddRef);

   type af_uADO_Release is access
     function (This : access uADO)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uADO_Release);

   type af_uADO_GetTypeInfoCount is access
     function (This    : access uADO;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uADO_GetTypeInfoCount);

   type af_uADO_GetTypeInfo is access
     function (This    : access uADO;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uADO_GetTypeInfo);

   type af_uADO_GetIDsOfNames is access
     function (This      : access uADO;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uADO_GetIDsOfNames);

   type af_uADO_Invoke is access
     function (This         : access uADO;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uADO_Invoke);

   type af_uADO_Get_Properties is access
     function (This      : access uADO;
               RetVal : Pointer_To_Pointer_To_Properties)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uADO_Get_Properties);

   type uADOVtbl;
   type Pointer_To_uADOVtbl is access all uADOVtbl;

   type uADO is
      record
         Vtbl : Pointer_To_uADOVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, uADO);

   type uADOVtbl is
      record
         QueryInterface   : af_uADO_QueryInterface;
         AddRef           : af_uADO_AddRef;
         Release          : af_uADO_Release;
         GetTypeInfoCount : af_uADO_GetTypeInfoCount;
         GetTypeInfo      : af_uADO_GetTypeInfo;
         GetIDsOfNames    : af_uADO_GetIDsOfNames;
         Invoke           : af_uADO_Invoke;
         Get_Properties   : af_uADO_Get_Properties;
      end record;
   pragma Convention (C_Pass_By_Copy, uADOVtbl);

   function To_Pointer_To_uADO is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_uADO);

   --  Element Index         : 39
   --  Element Name          : _ADO
   --  Element Type          : Dispatch

   uADO_Get_Properties : constant := 500;

   --  Element Index         : 42
   --  Element Name          : Error
   --  Element Type          : Dispatch

   IID_Error : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000500-0000-0010-8000-00AA006D2EA4}");

   type af_Error_QueryInterface is access
     function (This   : access Error;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Error_QueryInterface);

   type af_Error_AddRef is access
     function (This : access Error)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Error_AddRef);

   type af_Error_Release is access
     function (This : access Error)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Error_Release);

   type af_Error_GetTypeInfoCount is access
     function (This    : access Error;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Error_GetTypeInfoCount);

   type af_Error_GetTypeInfo is access
     function (This    : access Error;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Error_GetTypeInfo);

   type af_Error_GetIDsOfNames is access
     function (This      : access Error;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Error_GetIDsOfNames);

   type af_Error_Invoke is access
     function (This         : access Error;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Error_Invoke);

   type af_Error_Get_Number is access
     function (This : access Error;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Error_Get_Number);

   type af_Error_Get_Source is access
     function (This  : access Error;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Error_Get_Source);

   type af_Error_Get_Description is access
     function (This  : access Error;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Error_Get_Description);

   type af_Error_Get_HelpFile is access
     function (This  : access Error;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Error_Get_HelpFile);

   type af_Error_Get_HelpContext is access
     function (This : access Error;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Error_Get_HelpContext);

   type af_Error_Get_SQLState is access
     function (This  : access Error;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Error_Get_SQLState);

   type af_Error_Get_NativeError is access
     function (This : access Error;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Error_Get_NativeError);

   type ErrorVtbl;
   type Pointer_To_ErrorVtbl is access all ErrorVtbl;

   type Error is
      record
         Vtbl : Pointer_To_ErrorVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, Error);

   type ErrorVtbl is
      record
         QueryInterface   : af_Error_QueryInterface;
         AddRef           : af_Error_AddRef;
         Release          : af_Error_Release;
         GetTypeInfoCount : af_Error_GetTypeInfoCount;
         GetTypeInfo      : af_Error_GetTypeInfo;
         GetIDsOfNames    : af_Error_GetIDsOfNames;
         Invoke           : af_Error_Invoke;
         Get_Number       : af_Error_Get_Number;
         Get_Source       : af_Error_Get_Source;
         Get_Description  : af_Error_Get_Description;
         Get_HelpFile     : af_Error_Get_HelpFile;
         Get_HelpContext  : af_Error_Get_HelpContext;
         Get_SQLState     : af_Error_Get_SQLState;
         Get_NativeError  : af_Error_Get_NativeError;
      end record;
   pragma Convention (C_Pass_By_Copy, ErrorVtbl);

   function To_Pointer_To_Error is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_Error);

   --  Element Index         : 42
   --  Element Name          : Error
   --  Element Type          : Dispatch

   Error_Get_Number      : constant := 1610743808;
   Error_Get_Source      : constant := 1610743809;
   Error_Get_Description : constant := 0;
   Error_Get_HelpFile    : constant := 1610743811;
   Error_Get_HelpContext : constant := 1610743812;
   Error_Get_SQLState    : constant := 1610743813;
   Error_Get_NativeError : constant := 1610743814;

   --  Element Index         : 43
   --  Element Name          : Errors
   --  Element Type          : Dispatch

   IID_Errors : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000501-0000-0010-8000-00AA006D2EA4}");

   type af_Errors_QueryInterface is access
     function (This   : access Errors;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Errors_QueryInterface);

   type af_Errors_AddRef is access
     function (This : access Errors)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Errors_AddRef);

   type af_Errors_Release is access
     function (This : access Errors)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Errors_Release);

   type af_Errors_GetTypeInfoCount is access
     function (This    : access Errors;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Errors_GetTypeInfoCount);

   type af_Errors_GetTypeInfo is access
     function (This    : access Errors;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Errors_GetTypeInfo);

   type af_Errors_GetIDsOfNames is access
     function (This      : access Errors;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Errors_GetIDsOfNames);

   type af_Errors_Invoke is access
     function (This         : access Errors;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Errors_Invoke);

   type af_Errors_Get_Count is access
     function (This : access Errors;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Errors_Get_Count);

   type af_Errors_uNewEnum is access
     function (This      : access Errors;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Errors_uNewEnum);

   type af_Errors_Refresh is access
     function (This : access Errors)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Errors_Refresh);

   type af_Errors_Get_Item is access
     function (This      : access Errors;
               Index     : GNATCOM.Types.VARIANT;
               RetVal : Pointer_To_Pointer_To_Error)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Errors_Get_Item);

   type af_Errors_Clear is access
     function (This : access Errors)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Errors_Clear);

   type ErrorsVtbl;
   type Pointer_To_ErrorsVtbl is access all ErrorsVtbl;

   type Errors is
      record
         Vtbl : Pointer_To_ErrorsVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, Errors);

   type ErrorsVtbl is
      record
         QueryInterface   : af_Errors_QueryInterface;
         AddRef           : af_Errors_AddRef;
         Release          : af_Errors_Release;
         GetTypeInfoCount : af_Errors_GetTypeInfoCount;
         GetTypeInfo      : af_Errors_GetTypeInfo;
         GetIDsOfNames    : af_Errors_GetIDsOfNames;
         Invoke           : af_Errors_Invoke;
         Get_Count        : af_Errors_Get_Count;
         uNewEnum         : af_Errors_uNewEnum;
         Refresh          : af_Errors_Refresh;
         Get_Item         : af_Errors_Get_Item;
         Clear            : af_Errors_Clear;
      end record;
   pragma Convention (C_Pass_By_Copy, ErrorsVtbl);

   function To_Pointer_To_Errors is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_Errors);

   --  Element Index         : 43
   --  Element Name          : Errors
   --  Element Type          : Dispatch

   Errors_Get_Count : constant := 1610743808;
   Errors_uNewEnum  : constant := -4;
   Errors_Refresh   : constant := 1610743810;
   Errors_Get_Item  : constant := 0;
   Errors_Clear     : constant := 1610809345;

   --  Element Index         : 51
   --  Element Name          : Field
   --  Element Type          : Dispatch

   IID_Field : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{0000054C-0000-0010-8000-00AA006D2EA4}");

   type af_Field_QueryInterface is access
     function (This   : access Field;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_QueryInterface);

   type af_Field_AddRef is access
     function (This : access Field)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Field_AddRef);

   type af_Field_Release is access
     function (This : access Field)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Field_Release);

   type af_Field_GetTypeInfoCount is access
     function (This    : access Field;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_GetTypeInfoCount);

   type af_Field_GetTypeInfo is access
     function (This    : access Field;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_GetTypeInfo);

   type af_Field_GetIDsOfNames is access
     function (This      : access Field;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_GetIDsOfNames);

   type af_Field_Invoke is access
     function (This         : access Field;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Invoke);

   type af_Field_Get_Properties is access
     function (This      : access Field;
               RetVal : Pointer_To_Pointer_To_Properties)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Get_Properties);

   type af_Field_Get_ActualSize is access
     function (This : access Field;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Get_ActualSize);

   type af_Field_Get_Attributes is access
     function (This : access Field;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Get_Attributes);

   type af_Field_Get_DefinedSize is access
     function (This : access Field;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Get_DefinedSize);

   type af_Field_Get_Name is access
     function (This  : access Field;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Get_Name);

   type af_Field_Get_Type is access
     function (This      : access Field;
               RetVal : Pointer_To_DataTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Get_Type);

   type af_Field_Get_Value is access
     function (This : access Field;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Get_Value);

   type af_Field_Put_Value is access
     function (This : access Field;
               pvar : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Put_Value);

   type af_Field_Get_Precision is access
     function (This        : access Field;
               RetVal : Pointer_To_unsigned_char)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Get_Precision);

   type af_Field_Get_NumericScale is access
     function (This           : access Field;
               RetVal : Pointer_To_unsigned_char)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Get_NumericScale);

   type af_Field_AppendChunk is access
     function (This : access Field;
               Data : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_AppendChunk);

   type af_Field_GetChunk is access
     function (This   : access Field;
               Length : Interfaces.C.long;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_GetChunk);

   type af_Field_Get_OriginalValue is access
     function (This : access Field;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Get_OriginalValue);

   type af_Field_Get_UnderlyingValue is access
     function (This : access Field;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Get_UnderlyingValue);

   type af_Field_Get_DataFormat is access
     function (This  : access Field;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Get_DataFormat);

   type af_Field_PutRef_DataFormat is access
     function (This  : access Field;
               ppiDF : GNATCOM.Types.Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_PutRef_DataFormat);

   type af_Field_Put_Precision is access
     function (This        : access Field;
               pbPrecision : Interfaces.C.unsigned_char)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Put_Precision);

   type af_Field_Put_NumericScale is access
     function (This           : access Field;
               pbNumericScale : Interfaces.C.unsigned_char)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Put_NumericScale);

   type af_Field_Put_Type is access
     function (This      : access Field;
               pDataType : DataTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Put_Type);

   type af_Field_Put_DefinedSize is access
     function (This : access Field;
               pl   : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Put_DefinedSize);

   type af_Field_Put_Attributes is access
     function (This : access Field;
               pl   : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field_Put_Attributes);

   type FieldVtbl;
   type Pointer_To_FieldVtbl is access all FieldVtbl;

   type Field is
      record
         Vtbl : Pointer_To_FieldVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, Field);

   type FieldVtbl is
      record
         QueryInterface      : af_Field_QueryInterface;
         AddRef              : af_Field_AddRef;
         Release             : af_Field_Release;
         GetTypeInfoCount    : af_Field_GetTypeInfoCount;
         GetTypeInfo         : af_Field_GetTypeInfo;
         GetIDsOfNames       : af_Field_GetIDsOfNames;
         Invoke              : af_Field_Invoke;
         Get_Properties      : af_Field_Get_Properties;
         Get_ActualSize      : af_Field_Get_ActualSize;
         Get_Attributes      : af_Field_Get_Attributes;
         Get_DefinedSize     : af_Field_Get_DefinedSize;
         Get_Name            : af_Field_Get_Name;
         Get_Type            : af_Field_Get_Type;
         Get_Value           : af_Field_Get_Value;
         Put_Value           : af_Field_Put_Value;
         Get_Precision       : af_Field_Get_Precision;
         Get_NumericScale    : af_Field_Get_NumericScale;
         AppendChunk         : af_Field_AppendChunk;
         GetChunk            : af_Field_GetChunk;
         Get_OriginalValue   : af_Field_Get_OriginalValue;
         Get_UnderlyingValue : af_Field_Get_UnderlyingValue;
         Get_DataFormat      : af_Field_Get_DataFormat;
         PutRef_DataFormat   : af_Field_PutRef_DataFormat;
         Put_Precision       : af_Field_Put_Precision;
         Put_NumericScale    : af_Field_Put_NumericScale;
         Put_Type            : af_Field_Put_Type;
         Put_DefinedSize     : af_Field_Put_DefinedSize;
         Put_Attributes      : af_Field_Put_Attributes;
      end record;
   pragma Convention (C_Pass_By_Copy, FieldVtbl);

   function To_Pointer_To_Field is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_Field);

   --  Element Index         : 51
   --  Element Name          : Field
   --  Element Type          : Dispatch

   Field_Get_Properties      : constant := 500;
   Field_Get_ActualSize      : constant := 1109;
   Field_Get_Attributes      : constant := 1036;
   Field_Get_DefinedSize     : constant := 1103;
   Field_Get_Name            : constant := 1100;
   Field_Get_Type            : constant := 1102;
   Field_Get_Value           : constant := 0;
   Field_Put_Value           : constant := 0;
   Field_Get_Precision       : constant := 1610809351;
   Field_Get_NumericScale    : constant := 1610809352;
   Field_AppendChunk         : constant := 1107;
   Field_GetChunk            : constant := 1108;
   Field_Get_OriginalValue   : constant := 1104;
   Field_Get_UnderlyingValue : constant := 1105;
   Field_Get_DataFormat      : constant := 1610809357;
   Field_PutRef_DataFormat   : constant := 1610809357;
   Field_Put_Precision       : constant := 1610809351;
   Field_Put_NumericScale    : constant := 1610809352;
   Field_Put_Type            : constant := 1102;
   Field_Put_DefinedSize     : constant := 1103;
   Field_Put_Attributes      : constant := 1036;

   --  Element Index         : 49
   --  Element Name          : Fields
   --  Element Type          : Dispatch

   IID_Fields : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{0000054D-0000-0010-8000-00AA006D2EA4}");

   type af_Fields_QueryInterface is access
     function (This   : access Fields;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields_QueryInterface);

   type af_Fields_AddRef is access
     function (This : access Fields)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Fields_AddRef);

   type af_Fields_Release is access
     function (This : access Fields)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Fields_Release);

   type af_Fields_GetTypeInfoCount is access
     function (This    : access Fields;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields_GetTypeInfoCount);

   type af_Fields_GetTypeInfo is access
     function (This    : access Fields;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields_GetTypeInfo);

   type af_Fields_GetIDsOfNames is access
     function (This      : access Fields;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields_GetIDsOfNames);

   type af_Fields_Invoke is access
     function (This         : access Fields;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields_Invoke);

   type af_Fields_Get_Count is access
     function (This : access Fields;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields_Get_Count);

   type af_Fields_uNewEnum is access
     function (This      : access Fields;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields_uNewEnum);

   type af_Fields_Refresh is access
     function (This : access Fields)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields_Refresh);

   type af_Fields_Get_Item is access
     function (This      : access Fields;
               Index     : GNATCOM.Types.VARIANT;
               RetVal : Pointer_To_Pointer_To_Field)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields_Get_Item);

   type af_Fields_Append is access
     function (This        : access Fields;
               Name        : GNATCOM.Types.BSTR;
               uType       : DataTypeEnum;
               DefinedSize : Interfaces.C.long;
               Attrib      : FieldAttributeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields_Append);

   type af_Fields_Delete is access
     function (This  : access Fields;
               Index : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields_Delete);

   type FieldsVtbl;
   type Pointer_To_FieldsVtbl is access all FieldsVtbl;

   type Fields is
      record
         Vtbl : Pointer_To_FieldsVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, Fields);

   type FieldsVtbl is
      record
         QueryInterface   : af_Fields_QueryInterface;
         AddRef           : af_Fields_AddRef;
         Release          : af_Fields_Release;
         GetTypeInfoCount : af_Fields_GetTypeInfoCount;
         GetTypeInfo      : af_Fields_GetTypeInfo;
         GetIDsOfNames    : af_Fields_GetIDsOfNames;
         Invoke           : af_Fields_Invoke;
         Get_Count        : af_Fields_Get_Count;
         uNewEnum         : af_Fields_uNewEnum;
         Refresh          : af_Fields_Refresh;
         Get_Item         : af_Fields_Get_Item;
         Append           : af_Fields_Append;
         Delete           : af_Fields_Delete;
      end record;
   pragma Convention (C_Pass_By_Copy, FieldsVtbl);

   function To_Pointer_To_Fields is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_Fields);

   --  Element Index         : 49
   --  Element Name          : Fields
   --  Element Type          : Dispatch

   Fields_Get_Count : constant := 1610743808;
   Fields_uNewEnum  : constant := -4;
   Fields_Refresh   : constant := 1610743810;
   Fields_Get_Item  : constant := 0;
   Fields_Append    : constant := 1610874880;
   Fields_Delete    : constant := 1610874881;

   --  Element Index         : 47
   --  Element Name          : _Recordset
   --  Element Type          : Dispatch

   IID_uRecordset : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{0000054F-0000-0010-8000-00AA006D2EA4}");

   type af_uRecordset_QueryInterface is access
     function (This   : access uRecordset;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_QueryInterface);

   type af_uRecordset_AddRef is access
     function (This : access uRecordset)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uRecordset_AddRef);

   type af_uRecordset_Release is access
     function (This : access uRecordset)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uRecordset_Release);

   type af_uRecordset_GetTypeInfoCount is access
     function (This    : access uRecordset;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_GetTypeInfoCount);

   type af_uRecordset_GetTypeInfo is access
     function (This    : access uRecordset;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_GetTypeInfo);

   type af_uRecordset_GetIDsOfNames is access
     function (This      : access uRecordset;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_GetIDsOfNames);

   type af_uRecordset_Invoke is access
     function (This         : access uRecordset;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Invoke);

   type af_uRecordset_Get_Properties is access
     function (This      : access uRecordset;
               RetVal : Pointer_To_Pointer_To_Properties)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_Properties);

   type af_uRecordset_Get_AbsolutePosition is access
     function (This : access uRecordset;
               RetVal : Pointer_To_PositionEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_AbsolutePosition);

   type af_uRecordset_Put_AbsolutePosition is access
     function (This : access uRecordset;
               pl   : PositionEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_AbsolutePosition);

   type af_uRecordset_PutRef_ActiveConnection is access
     function (This : access uRecordset;
               pvar : GNATCOM.Types.Pointer_To_IDispatch)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_PutRef_ActiveConnection);

   type af_uRecordset_Put_ActiveConnection is access
     function (This : access uRecordset;
               pvar : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_ActiveConnection);

   type af_uRecordset_Get_ActiveConnection is access
     function (This : access uRecordset;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_ActiveConnection);

   type af_uRecordset_Get_BOF is access
     function (This : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_VARIANT_BOOL)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_BOF);

   type af_uRecordset_Get_Bookmark is access
     function (This       : access uRecordset;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_Bookmark);

   type af_uRecordset_Put_Bookmark is access
     function (This       : access uRecordset;
               pvBookmark : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_Bookmark);

   type af_uRecordset_Get_CacheSize is access
     function (This : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_CacheSize);

   type af_uRecordset_Put_CacheSize is access
     function (This : access uRecordset;
               pl   : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_CacheSize);

   type af_uRecordset_Get_CursorType is access
     function (This         : access uRecordset;
               RetVal : Pointer_To_CursorTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_CursorType);

   type af_uRecordset_Put_CursorType is access
     function (This         : access uRecordset;
               plCursorType : CursorTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_CursorType);

   type af_uRecordset_Get_EOF is access
     function (This : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_VARIANT_BOOL)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_EOF);

   type af_uRecordset_Get_Fields is access
     function (This      : access uRecordset;
               RetVal : Pointer_To_Pointer_To_Fields)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_Fields);

   type af_uRecordset_Get_LockType is access
     function (This       : access uRecordset;
               RetVal : Pointer_To_LockTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_LockType);

   type af_uRecordset_Put_LockType is access
     function (This       : access uRecordset;
               plLockType : LockTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_LockType);

   type af_uRecordset_Get_MaxRecords is access
     function (This         : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_MaxRecords);

   type af_uRecordset_Put_MaxRecords is access
     function (This         : access uRecordset;
               plMaxRecords : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_MaxRecords);

   type af_uRecordset_Get_RecordCount is access
     function (This : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_RecordCount);

   type af_uRecordset_PutRef_Source is access
     function (This     : access uRecordset;
               pvSource : GNATCOM.Types.Pointer_To_IDispatch)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_PutRef_Source);

   type af_uRecordset_Put_Source is access
     function (This     : access uRecordset;
               pvSource : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_Source);

   type af_uRecordset_Get_Source is access
     function (This     : access uRecordset;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_Source);

   type af_uRecordset_AddNew is access
     function (This      : access uRecordset;
               FieldList : GNATCOM.Types.VARIANT;
               Values    : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_AddNew);

   type af_uRecordset_CancelUpdate is access
     function (This : access uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_CancelUpdate);

   type af_uRecordset_Close is access
     function (This : access uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Close);

   type af_uRecordset_Delete is access
     function (This          : access uRecordset;
               AffectRecords : AffectEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Delete);

   type af_uRecordset_GetRows is access
     function (This   : access uRecordset;
               Rows   : Interfaces.C.long;
               Start  : GNATCOM.Types.VARIANT;
               Fields : GNATCOM.Types.VARIANT;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_GetRows);

   type af_uRecordset_Move is access
     function (This       : access uRecordset;
               NumRecords : Interfaces.C.long;
               Start      : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Move);

   type af_uRecordset_MoveNext is access
     function (This : access uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_MoveNext);

   type af_uRecordset_MovePrevious is access
     function (This : access uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_MovePrevious);

   type af_uRecordset_MoveFirst is access
     function (This : access uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_MoveFirst);

   type af_uRecordset_MoveLast is access
     function (This : access uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_MoveLast);

   type af_uRecordset_Open is access
     function (This             : access uRecordset;
               Source           : GNATCOM.Types.VARIANT;
               ActiveConnection : GNATCOM.Types.VARIANT;
               CursorType       : CursorTypeEnum;
               LockType         : LockTypeEnum;
               Options          : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Open);

   type af_uRecordset_Requery is access
     function (This    : access uRecordset;
               Options : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Requery);

   type af_uRecordset_uxResync is access
     function (This          : access uRecordset;
               AffectRecords : AffectEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_uxResync);

   type af_uRecordset_Update is access
     function (This   : access uRecordset;
               Fields : GNATCOM.Types.VARIANT;
               Values : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Update);

   type af_uRecordset_Get_AbsolutePage is access
     function (This : access uRecordset;
               RetVal : Pointer_To_PositionEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_AbsolutePage);

   type af_uRecordset_Put_AbsolutePage is access
     function (This : access uRecordset;
               pl   : PositionEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_AbsolutePage);

   type af_uRecordset_Get_EditMode is access
     function (This : access uRecordset;
               RetVal : Pointer_To_EditModeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_EditMode);

   type af_uRecordset_Get_Filter is access
     function (This     : access uRecordset;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_Filter);

   type af_uRecordset_Put_Filter is access
     function (This     : access uRecordset;
               Criteria : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_Filter);

   type af_uRecordset_Get_PageCount is access
     function (This : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_PageCount);

   type af_uRecordset_Get_PageSize is access
     function (This : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_PageSize);

   type af_uRecordset_Put_PageSize is access
     function (This : access uRecordset;
               pl   : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_PageSize);

   type af_uRecordset_Get_Sort is access
     function (This     : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_Sort);

   type af_uRecordset_Put_Sort is access
     function (This     : access uRecordset;
               Criteria : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_Sort);

   type af_uRecordset_Get_Status is access
     function (This : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_Status);

   type af_uRecordset_Get_State is access
     function (This       : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_State);

   type af_uRecordset_uxClone is access
     function (This      : access uRecordset;
               RetVal : Pointer_To_Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_uxClone);

   type af_uRecordset_UpdateBatch is access
     function (This          : access uRecordset;
               AffectRecords : AffectEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_UpdateBatch);

   type af_uRecordset_CancelBatch is access
     function (This          : access uRecordset;
               AffectRecords : AffectEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_CancelBatch);

   type af_uRecordset_Get_CursorLocation is access
     function (This        : access uRecordset;
               RetVal : Pointer_To_CursorLocationEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_CursorLocation);

   type af_uRecordset_Put_CursorLocation is access
     function (This        : access uRecordset;
               plCursorLoc : CursorLocationEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_CursorLocation);

   type af_uRecordset_NextRecordset is access
     function (This            : access uRecordset;
               RecordsAffected : access GNATCOM.Types.VARIANT;
               RetVal : Pointer_To_Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_NextRecordset);

   type af_uRecordset_Supports is access
     function (This          : access uRecordset;
               CursorOptions : CursorOptionEnum;
               RetVal : GNATCOM.Types.Pointer_To_VARIANT_BOOL)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Supports);

   type af_uRecordset_Get_Collect is access
     function (This  : access uRecordset;
               Index : GNATCOM.Types.VARIANT;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_Collect);

   type af_uRecordset_Put_Collect is access
     function (This  : access uRecordset;
               Index : GNATCOM.Types.VARIANT;
               pvar  : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_Collect);

   type af_uRecordset_Get_MarshalOptions is access
     function (This      : access uRecordset;
               RetVal : Pointer_To_MarshalOptionsEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_MarshalOptions);

   type af_uRecordset_Put_MarshalOptions is access
     function (This      : access uRecordset;
               peMarshal : MarshalOptionsEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_MarshalOptions);

   type af_uRecordset_Find is access
     function (This            : access uRecordset;
               Criteria        : GNATCOM.Types.BSTR;
               SkipRecords     : Interfaces.C.long;
               SearchDirection : SearchDirectionEnum;
               Start           : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Find);

   type af_uRecordset_Cancel is access
     function (This : access uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Cancel);

   type af_uRecordset_Get_DataSource is access
     function (This            : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_DataSource);

   type af_uRecordset_PutRef_DataSource is access
     function (This            : access uRecordset;
               ppunkDataSource : GNATCOM.Types.Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_PutRef_DataSource);

   type af_uRecordset_Save is access
     function (This          : access uRecordset;
               FileName      : GNATCOM.Types.BSTR;
               PersistFormat : PersistFormatEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Save);

   type af_uRecordset_Get_ActiveCommand is access
     function (This  : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IDispatch)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_ActiveCommand);

   type af_uRecordset_Put_StayInSync is access
     function (This         : access uRecordset;
               pbStayInSync : GNATCOM.Types.VARIANT_BOOL)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_StayInSync);

   type af_uRecordset_Get_StayInSync is access
     function (This         : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_VARIANT_BOOL)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_StayInSync);

   type af_uRecordset_GetString is access
     function (This            : access uRecordset;
               StringFormat    : StringFormatEnum;
               NumRows         : Interfaces.C.long;
               ColumnDelimeter : GNATCOM.Types.BSTR;
               RowDelimeter    : GNATCOM.Types.BSTR;
               NullExpr        : GNATCOM.Types.BSTR;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_GetString);

   type af_uRecordset_Get_DataMember is access
     function (This            : access uRecordset;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Get_DataMember);

   type af_uRecordset_Put_DataMember is access
     function (This            : access uRecordset;
               pbstrDataMember : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Put_DataMember);

   type af_uRecordset_CompareBookmarks is access
     function (This      : access uRecordset;
               Bookmark1 : GNATCOM.Types.VARIANT;
               Bookmark2 : GNATCOM.Types.VARIANT;
               RetVal : Pointer_To_CompareEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_CompareBookmarks);

   type af_uRecordset_Clone is access
     function (This      : access uRecordset;
               LockType  : LockTypeEnum;
               RetVal : Pointer_To_Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Clone);

   type af_uRecordset_Resync is access
     function (This          : access uRecordset;
               AffectRecords : AffectEnum;
               ResyncValues  : ResyncEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset_Resync);

   type uRecordsetVtbl;
   type Pointer_To_uRecordsetVtbl is access all uRecordsetVtbl;

   type uRecordset is
      record
         Vtbl : Pointer_To_uRecordsetVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, uRecordset);

   type uRecordsetVtbl is
      record
         QueryInterface          : af_uRecordset_QueryInterface;
         AddRef                  : af_uRecordset_AddRef;
         Release                 : af_uRecordset_Release;
         GetTypeInfoCount        : af_uRecordset_GetTypeInfoCount;
         GetTypeInfo             : af_uRecordset_GetTypeInfo;
         GetIDsOfNames           : af_uRecordset_GetIDsOfNames;
         Invoke                  : af_uRecordset_Invoke;
         Get_Properties          : af_uRecordset_Get_Properties;
         Get_AbsolutePosition    : af_uRecordset_Get_AbsolutePosition;
         Put_AbsolutePosition    : af_uRecordset_Put_AbsolutePosition;
         PutRef_ActiveConnection : af_uRecordset_PutRef_ActiveConnection;
         Put_ActiveConnection    : af_uRecordset_Put_ActiveConnection;
         Get_ActiveConnection    : af_uRecordset_Get_ActiveConnection;
         Get_BOF                 : af_uRecordset_Get_BOF;
         Get_Bookmark            : af_uRecordset_Get_Bookmark;
         Put_Bookmark            : af_uRecordset_Put_Bookmark;
         Get_CacheSize           : af_uRecordset_Get_CacheSize;
         Put_CacheSize           : af_uRecordset_Put_CacheSize;
         Get_CursorType          : af_uRecordset_Get_CursorType;
         Put_CursorType          : af_uRecordset_Put_CursorType;
         Get_EOF                 : af_uRecordset_Get_EOF;
         Get_Fields              : af_uRecordset_Get_Fields;
         Get_LockType            : af_uRecordset_Get_LockType;
         Put_LockType            : af_uRecordset_Put_LockType;
         Get_MaxRecords          : af_uRecordset_Get_MaxRecords;
         Put_MaxRecords          : af_uRecordset_Put_MaxRecords;
         Get_RecordCount         : af_uRecordset_Get_RecordCount;
         PutRef_Source           : af_uRecordset_PutRef_Source;
         Put_Source              : af_uRecordset_Put_Source;
         Get_Source              : af_uRecordset_Get_Source;
         AddNew                  : af_uRecordset_AddNew;
         CancelUpdate            : af_uRecordset_CancelUpdate;
         Close                   : af_uRecordset_Close;
         Delete                  : af_uRecordset_Delete;
         GetRows                 : af_uRecordset_GetRows;
         Move                    : af_uRecordset_Move;
         MoveNext                : af_uRecordset_MoveNext;
         MovePrevious            : af_uRecordset_MovePrevious;
         MoveFirst               : af_uRecordset_MoveFirst;
         MoveLast                : af_uRecordset_MoveLast;
         Open                    : af_uRecordset_Open;
         Requery                 : af_uRecordset_Requery;
         uxResync                : af_uRecordset_uxResync;
         Update                  : af_uRecordset_Update;
         Get_AbsolutePage        : af_uRecordset_Get_AbsolutePage;
         Put_AbsolutePage        : af_uRecordset_Put_AbsolutePage;
         Get_EditMode            : af_uRecordset_Get_EditMode;
         Get_Filter              : af_uRecordset_Get_Filter;
         Put_Filter              : af_uRecordset_Put_Filter;
         Get_PageCount           : af_uRecordset_Get_PageCount;
         Get_PageSize            : af_uRecordset_Get_PageSize;
         Put_PageSize            : af_uRecordset_Put_PageSize;
         Get_Sort                : af_uRecordset_Get_Sort;
         Put_Sort                : af_uRecordset_Put_Sort;
         Get_Status              : af_uRecordset_Get_Status;
         Get_State               : af_uRecordset_Get_State;
         uxClone                 : af_uRecordset_uxClone;
         UpdateBatch             : af_uRecordset_UpdateBatch;
         CancelBatch             : af_uRecordset_CancelBatch;
         Get_CursorLocation      : af_uRecordset_Get_CursorLocation;
         Put_CursorLocation      : af_uRecordset_Put_CursorLocation;
         NextRecordset           : af_uRecordset_NextRecordset;
         Supports                : af_uRecordset_Supports;
         Get_Collect             : af_uRecordset_Get_Collect;
         Put_Collect             : af_uRecordset_Put_Collect;
         Get_MarshalOptions      : af_uRecordset_Get_MarshalOptions;
         Put_MarshalOptions      : af_uRecordset_Put_MarshalOptions;
         Find                    : af_uRecordset_Find;
         Cancel                  : af_uRecordset_Cancel;
         Get_DataSource          : af_uRecordset_Get_DataSource;
         PutRef_DataSource       : af_uRecordset_PutRef_DataSource;
         Save                    : af_uRecordset_Save;
         Get_ActiveCommand       : af_uRecordset_Get_ActiveCommand;
         Put_StayInSync          : af_uRecordset_Put_StayInSync;
         Get_StayInSync          : af_uRecordset_Get_StayInSync;
         GetString               : af_uRecordset_GetString;
         Get_DataMember          : af_uRecordset_Get_DataMember;
         Put_DataMember          : af_uRecordset_Put_DataMember;
         CompareBookmarks        : af_uRecordset_CompareBookmarks;
         Clone                   : af_uRecordset_Clone;
         Resync                  : af_uRecordset_Resync;
      end record;
   pragma Convention (C_Pass_By_Copy, uRecordsetVtbl);

   function To_Pointer_To_uRecordset is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_uRecordset);

   --  Element Index         : 47
   --  Element Name          : _Recordset
   --  Element Type          : Dispatch

   uRecordset_Get_Properties          : constant := 500;
   uRecordset_Get_AbsolutePosition    : constant := 1000;
   uRecordset_Put_AbsolutePosition    : constant := 1000;
   uRecordset_PutRef_ActiveConnection : constant := 1001;
   uRecordset_Put_ActiveConnection    : constant := 1001;
   uRecordset_Get_ActiveConnection    : constant := 1001;
   uRecordset_Get_BOF                 : constant := 1002;
   uRecordset_Get_Bookmark            : constant := 1003;
   uRecordset_Put_Bookmark            : constant := 1003;
   uRecordset_Get_CacheSize           : constant := 1004;
   uRecordset_Put_CacheSize           : constant := 1004;
   uRecordset_Get_CursorType          : constant := 1005;
   uRecordset_Put_CursorType          : constant := 1005;
   uRecordset_Get_EOF                 : constant := 1006;
   uRecordset_Get_Fields              : constant := 0;
   uRecordset_Get_LockType            : constant := 1008;
   uRecordset_Put_LockType            : constant := 1008;
   uRecordset_Get_MaxRecords          : constant := 1009;
   uRecordset_Put_MaxRecords          : constant := 1009;
   uRecordset_Get_RecordCount         : constant := 1010;
   uRecordset_PutRef_Source           : constant := 1011;
   uRecordset_Put_Source              : constant := 1011;
   uRecordset_Get_Source              : constant := 1011;
   uRecordset_AddNew                  : constant := 1012;
   uRecordset_CancelUpdate            : constant := 1013;
   uRecordset_Close                   : constant := 1014;
   uRecordset_Delete                  : constant := 1015;
   uRecordset_GetRows                 : constant := 1016;
   uRecordset_Move                    : constant := 1017;
   uRecordset_MoveNext                : constant := 1018;
   uRecordset_MovePrevious            : constant := 1019;
   uRecordset_MoveFirst               : constant := 1020;
   uRecordset_MoveLast                : constant := 1021;
   uRecordset_Open                    : constant := 1022;
   uRecordset_Requery                 : constant := 1023;
   uRecordset_uxResync                : constant := 1610809378;
   uRecordset_Update                  : constant := 1025;
   uRecordset_Get_AbsolutePage        : constant := 1047;
   uRecordset_Put_AbsolutePage        : constant := 1047;
   uRecordset_Get_EditMode            : constant := 1026;
   uRecordset_Get_Filter              : constant := 1030;
   uRecordset_Put_Filter              : constant := 1030;
   uRecordset_Get_PageCount           : constant := 1050;
   uRecordset_Get_PageSize            : constant := 1048;
   uRecordset_Put_PageSize            : constant := 1048;
   uRecordset_Get_Sort                : constant := 1031;
   uRecordset_Put_Sort                : constant := 1031;
   uRecordset_Get_Status              : constant := 1029;
   uRecordset_Get_State               : constant := 1054;
   uRecordset_uxClone                 : constant := 1610809392;
   uRecordset_UpdateBatch             : constant := 1035;
   uRecordset_CancelBatch             : constant := 1049;
   uRecordset_Get_CursorLocation      : constant := 1051;
   uRecordset_Put_CursorLocation      : constant := 1051;
   uRecordset_NextRecordset           : constant := 1052;
   uRecordset_Supports                : constant := 1036;
   uRecordset_Get_Collect             : constant := -8;
   uRecordset_Put_Collect             : constant := -8;
   uRecordset_Get_MarshalOptions      : constant := 1053;
   uRecordset_Put_MarshalOptions      : constant := 1053;
   uRecordset_Find                    : constant := 1058;
   uRecordset_Cancel                  : constant := 1055;
   uRecordset_Get_DataSource          : constant := 1056;
   uRecordset_PutRef_DataSource       : constant := 1056;
   uRecordset_Save                    : constant := 1057;
   uRecordset_Get_ActiveCommand       : constant := 1061;
   uRecordset_Put_StayInSync          : constant := 1063;
   uRecordset_Get_StayInSync          : constant := 1063;
   uRecordset_GetString               : constant := 1062;
   uRecordset_Get_DataMember          : constant := 1064;
   uRecordset_Put_DataMember          : constant := 1064;
   uRecordset_CompareBookmarks        : constant := 1065;
   uRecordset_Clone                   : constant := 1034;
   uRecordset_Resync                  : constant := 1024;

   --  Element Index         : 45
   --  Element Name          : _Connection
   --  Element Type          : Dispatch

   IID_uConnection : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000550-0000-0010-8000-00AA006D2EA4}");

   type af_uConnection_QueryInterface is access
     function (This   : access uConnection;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_QueryInterface);

   type af_uConnection_AddRef is access
     function (This : access uConnection)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uConnection_AddRef);

   type af_uConnection_Release is access
     function (This : access uConnection)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uConnection_Release);

   type af_uConnection_GetTypeInfoCount is access
     function (This    : access uConnection;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_GetTypeInfoCount);

   type af_uConnection_GetTypeInfo is access
     function (This    : access uConnection;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_GetTypeInfo);

   type af_uConnection_GetIDsOfNames is access
     function (This      : access uConnection;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_GetIDsOfNames);

   type af_uConnection_Invoke is access
     function (This         : access uConnection;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Invoke);

   type af_uConnection_Get_Properties is access
     function (This      : access uConnection;
               RetVal : Pointer_To_Pointer_To_Properties)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_Properties);

   type af_uConnection_Get_ConnectionString is access
     function (This  : access uConnection;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_ConnectionString);

   type af_uConnection_Put_ConnectionString is access
     function (This  : access uConnection;
               pbstr : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Put_ConnectionString);

   type af_uConnection_Get_CommandTimeout is access
     function (This      : access uConnection;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_CommandTimeout);

   type af_uConnection_Put_CommandTimeout is access
     function (This      : access uConnection;
               plTimeout : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Put_CommandTimeout);

   type af_uConnection_Get_ConnectionTimeout is access
     function (This      : access uConnection;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_ConnectionTimeout);

   type af_uConnection_Put_ConnectionTimeout is access
     function (This      : access uConnection;
               plTimeout : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Put_ConnectionTimeout);

   type af_uConnection_Get_Version is access
     function (This  : access uConnection;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_Version);

   type af_uConnection_Close is access
     function (This : access uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Close);

   type af_uConnection_Execute is access
     function (This            : access uConnection;
               CommandText     : GNATCOM.Types.BSTR;
               RecordsAffected : access GNATCOM.Types.VARIANT;
               Options         : Interfaces.C.long;
               RetVal : Pointer_To_Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Execute);

   type af_uConnection_BeginTrans is access
     function (This             : access uConnection;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_BeginTrans);

   type af_uConnection_CommitTrans is access
     function (This : access uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_CommitTrans);

   type af_uConnection_RollbackTrans is access
     function (This : access uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_RollbackTrans);

   type af_uConnection_Open is access
     function (This             : access uConnection;
               ConnectionString : GNATCOM.Types.BSTR;
               UserID           : GNATCOM.Types.BSTR;
               Password         : GNATCOM.Types.BSTR;
               Options          : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Open);

   type af_uConnection_Get_Errors is access
     function (This      : access uConnection;
               RetVal : Pointer_To_Pointer_To_Errors)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_Errors);

   type af_uConnection_Get_DefaultDatabase is access
     function (This  : access uConnection;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_DefaultDatabase);

   type af_uConnection_Put_DefaultDatabase is access
     function (This  : access uConnection;
               pbstr : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Put_DefaultDatabase);

   type af_uConnection_Get_IsolationLevel is access
     function (This  : access uConnection;
               RetVal : Pointer_To_IsolationLevelEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_IsolationLevel);

   type af_uConnection_Put_IsolationLevel is access
     function (This  : access uConnection;
               Level : IsolationLevelEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Put_IsolationLevel);

   type af_uConnection_Get_Attributes is access
     function (This   : access uConnection;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_Attributes);

   type af_uConnection_Put_Attributes is access
     function (This   : access uConnection;
               plAttr : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Put_Attributes);

   type af_uConnection_Get_CursorLocation is access
     function (This        : access uConnection;
               RetVal : Pointer_To_CursorLocationEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_CursorLocation);

   type af_uConnection_Put_CursorLocation is access
     function (This        : access uConnection;
               plCursorLoc : CursorLocationEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Put_CursorLocation);

   type af_uConnection_Get_Mode is access
     function (This   : access uConnection;
               RetVal : Pointer_To_ConnectModeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_Mode);

   type af_uConnection_Put_Mode is access
     function (This   : access uConnection;
               plMode : ConnectModeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Put_Mode);

   type af_uConnection_Get_Provider is access
     function (This  : access uConnection;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_Provider);

   type af_uConnection_Put_Provider is access
     function (This  : access uConnection;
               pbstr : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Put_Provider);

   type af_uConnection_Get_State is access
     function (This       : access uConnection;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Get_State);

   type af_uConnection_OpenSchema is access
     function (This         : access uConnection;
               Schema       : SchemaEnum;
               Restrictions : GNATCOM.Types.VARIANT;
               SchemaID     : GNATCOM.Types.VARIANT;
               RetVal : Pointer_To_Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_OpenSchema);

   type af_uConnection_Cancel is access
     function (This : access uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection_Cancel);

   type uConnectionVtbl;
   type Pointer_To_uConnectionVtbl is access all uConnectionVtbl;

   type uConnection is
      record
         Vtbl : Pointer_To_uConnectionVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, uConnection);

   type uConnectionVtbl is
      record
         QueryInterface        : af_uConnection_QueryInterface;
         AddRef                : af_uConnection_AddRef;
         Release               : af_uConnection_Release;
         GetTypeInfoCount      : af_uConnection_GetTypeInfoCount;
         GetTypeInfo           : af_uConnection_GetTypeInfo;
         GetIDsOfNames         : af_uConnection_GetIDsOfNames;
         Invoke                : af_uConnection_Invoke;
         Get_Properties        : af_uConnection_Get_Properties;
         Get_ConnectionString  : af_uConnection_Get_ConnectionString;
         Put_ConnectionString  : af_uConnection_Put_ConnectionString;
         Get_CommandTimeout    : af_uConnection_Get_CommandTimeout;
         Put_CommandTimeout    : af_uConnection_Put_CommandTimeout;
         Get_ConnectionTimeout : af_uConnection_Get_ConnectionTimeout;
         Put_ConnectionTimeout : af_uConnection_Put_ConnectionTimeout;
         Get_Version           : af_uConnection_Get_Version;
         Close                 : af_uConnection_Close;
         Execute               : af_uConnection_Execute;
         BeginTrans            : af_uConnection_BeginTrans;
         CommitTrans           : af_uConnection_CommitTrans;
         RollbackTrans         : af_uConnection_RollbackTrans;
         Open                  : af_uConnection_Open;
         Get_Errors            : af_uConnection_Get_Errors;
         Get_DefaultDatabase   : af_uConnection_Get_DefaultDatabase;
         Put_DefaultDatabase   : af_uConnection_Put_DefaultDatabase;
         Get_IsolationLevel    : af_uConnection_Get_IsolationLevel;
         Put_IsolationLevel    : af_uConnection_Put_IsolationLevel;
         Get_Attributes        : af_uConnection_Get_Attributes;
         Put_Attributes        : af_uConnection_Put_Attributes;
         Get_CursorLocation    : af_uConnection_Get_CursorLocation;
         Put_CursorLocation    : af_uConnection_Put_CursorLocation;
         Get_Mode              : af_uConnection_Get_Mode;
         Put_Mode              : af_uConnection_Put_Mode;
         Get_Provider          : af_uConnection_Get_Provider;
         Put_Provider          : af_uConnection_Put_Provider;
         Get_State             : af_uConnection_Get_State;
         OpenSchema            : af_uConnection_OpenSchema;
         Cancel                : af_uConnection_Cancel;
      end record;
   pragma Convention (C_Pass_By_Copy, uConnectionVtbl);

   function To_Pointer_To_uConnection is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_uConnection);

   --  Element Index         : 45
   --  Element Name          : _Connection
   --  Element Type          : Dispatch

   uConnection_Get_Properties        : constant := 500;
   uConnection_Get_ConnectionString  : constant := 0;
   uConnection_Put_ConnectionString  : constant := 0;
   uConnection_Get_CommandTimeout    : constant := 2;
   uConnection_Put_CommandTimeout    : constant := 2;
   uConnection_Get_ConnectionTimeout : constant := 3;
   uConnection_Put_ConnectionTimeout : constant := 3;
   uConnection_Get_Version           : constant := 4;
   uConnection_Close                 : constant := 5;
   uConnection_Execute               : constant := 6;
   uConnection_BeginTrans            : constant := 7;
   uConnection_CommitTrans           : constant := 8;
   uConnection_RollbackTrans         : constant := 9;
   uConnection_Open                  : constant := 10;
   uConnection_Get_Errors            : constant := 11;
   uConnection_Get_DefaultDatabase   : constant := 12;
   uConnection_Put_DefaultDatabase   : constant := 12;
   uConnection_Get_IsolationLevel    : constant := 13;
   uConnection_Put_IsolationLevel    : constant := 13;
   uConnection_Get_Attributes        : constant := 14;
   uConnection_Put_Attributes        : constant := 14;
   uConnection_Get_CursorLocation    : constant := 15;
   uConnection_Put_CursorLocation    : constant := 15;
   uConnection_Get_Mode              : constant := 16;
   uConnection_Put_Mode              : constant := 16;
   uConnection_Get_Provider          : constant := 17;
   uConnection_Put_Provider          : constant := 17;
   uConnection_Get_State             : constant := 18;
   uConnection_OpenSchema            : constant := 19;
   uConnection_Cancel                : constant := 21;

   --  Element Index         : 52
   --  Element Name          : _Parameter
   --  Element Type          : Dispatch

   IID_uParameter : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{0000050C-0000-0010-8000-00AA006D2EA4}");

   type af_uParameter_QueryInterface is access
     function (This   : access uParameter;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_QueryInterface);

   type af_uParameter_AddRef is access
     function (This : access uParameter)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uParameter_AddRef);

   type af_uParameter_Release is access
     function (This : access uParameter)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uParameter_Release);

   type af_uParameter_GetTypeInfoCount is access
     function (This    : access uParameter;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_GetTypeInfoCount);

   type af_uParameter_GetTypeInfo is access
     function (This    : access uParameter;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_GetTypeInfo);

   type af_uParameter_GetIDsOfNames is access
     function (This      : access uParameter;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_GetIDsOfNames);

   type af_uParameter_Invoke is access
     function (This         : access uParameter;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Invoke);

   type af_uParameter_Get_Properties is access
     function (This      : access uParameter;
               RetVal : Pointer_To_Pointer_To_Properties)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Get_Properties);

   type af_uParameter_Get_Name is access
     function (This  : access uParameter;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Get_Name);

   type af_uParameter_Put_Name is access
     function (This  : access uParameter;
               pbstr : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Put_Name);

   type af_uParameter_Get_Value is access
     function (This : access uParameter;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Get_Value);

   type af_uParameter_Put_Value is access
     function (This : access uParameter;
               pvar : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Put_Value);

   type af_uParameter_Get_Type is access
     function (This       : access uParameter;
               RetVal : Pointer_To_DataTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Get_Type);

   type af_uParameter_Put_Type is access
     function (This       : access uParameter;
               psDataType : DataTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Put_Type);

   type af_uParameter_Put_Direction is access
     function (This            : access uParameter;
               plParmDirection : ParameterDirectionEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Put_Direction);

   type af_uParameter_Get_Direction is access
     function (This            : access uParameter;
               RetVal : Pointer_To_ParameterDirectionEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Get_Direction);

   type af_uParameter_Put_Precision is access
     function (This        : access uParameter;
               pbPrecision : Interfaces.C.unsigned_char)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Put_Precision);

   type af_uParameter_Get_Precision is access
     function (This        : access uParameter;
               RetVal : Pointer_To_unsigned_char)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Get_Precision);

   type af_uParameter_Put_NumericScale is access
     function (This    : access uParameter;
               pbScale : Interfaces.C.unsigned_char)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Put_NumericScale);

   type af_uParameter_Get_NumericScale is access
     function (This    : access uParameter;
               RetVal : Pointer_To_unsigned_char)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Get_NumericScale);

   type af_uParameter_Put_Size is access
     function (This : access uParameter;
               pl   : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Put_Size);

   type af_uParameter_Get_Size is access
     function (This : access uParameter;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Get_Size);

   type af_uParameter_AppendChunk is access
     function (This : access uParameter;
               Val  : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_AppendChunk);

   type af_uParameter_Get_Attributes is access
     function (This          : access uParameter;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Get_Attributes);

   type af_uParameter_Put_Attributes is access
     function (This          : access uParameter;
               plParmAttribs : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uParameter_Put_Attributes);

   type uParameterVtbl;
   type Pointer_To_uParameterVtbl is access all uParameterVtbl;

   type uParameter is
      record
         Vtbl : Pointer_To_uParameterVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, uParameter);

   type uParameterVtbl is
      record
         QueryInterface   : af_uParameter_QueryInterface;
         AddRef           : af_uParameter_AddRef;
         Release          : af_uParameter_Release;
         GetTypeInfoCount : af_uParameter_GetTypeInfoCount;
         GetTypeInfo      : af_uParameter_GetTypeInfo;
         GetIDsOfNames    : af_uParameter_GetIDsOfNames;
         Invoke           : af_uParameter_Invoke;
         Get_Properties   : af_uParameter_Get_Properties;
         Get_Name         : af_uParameter_Get_Name;
         Put_Name         : af_uParameter_Put_Name;
         Get_Value        : af_uParameter_Get_Value;
         Put_Value        : af_uParameter_Put_Value;
         Get_Type         : af_uParameter_Get_Type;
         Put_Type         : af_uParameter_Put_Type;
         Put_Direction    : af_uParameter_Put_Direction;
         Get_Direction    : af_uParameter_Get_Direction;
         Put_Precision    : af_uParameter_Put_Precision;
         Get_Precision    : af_uParameter_Get_Precision;
         Put_NumericScale : af_uParameter_Put_NumericScale;
         Get_NumericScale : af_uParameter_Get_NumericScale;
         Put_Size         : af_uParameter_Put_Size;
         Get_Size         : af_uParameter_Get_Size;
         AppendChunk      : af_uParameter_AppendChunk;
         Get_Attributes   : af_uParameter_Get_Attributes;
         Put_Attributes   : af_uParameter_Put_Attributes;
      end record;
   pragma Convention (C_Pass_By_Copy, uParameterVtbl);

   function To_Pointer_To_uParameter is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_uParameter);

   --  Element Index         : 52
   --  Element Name          : _Parameter
   --  Element Type          : Dispatch

   uParameter_Get_Properties   : constant := 500;
   uParameter_Get_Name         : constant := 1610809344;
   uParameter_Put_Name         : constant := 1610809344;
   uParameter_Get_Value        : constant := 0;
   uParameter_Put_Value        : constant := 0;
   uParameter_Get_Type         : constant := 1610809348;
   uParameter_Put_Type         : constant := 1610809348;
   uParameter_Put_Direction    : constant := 1610809350;
   uParameter_Get_Direction    : constant := 1610809350;
   uParameter_Put_Precision    : constant := 1610809352;
   uParameter_Get_Precision    : constant := 1610809352;
   uParameter_Put_NumericScale : constant := 1610809354;
   uParameter_Get_NumericScale : constant := 1610809354;
   uParameter_Put_Size         : constant := 1610809356;
   uParameter_Get_Size         : constant := 1610809356;
   uParameter_AppendChunk      : constant := 1610809358;
   uParameter_Get_Attributes   : constant := 1610809359;
   uParameter_Put_Attributes   : constant := 1610809359;

   --  Element Index         : 53
   --  Element Name          : Parameters
   --  Element Type          : Dispatch

   IID_Parameters : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{0000050D-0000-0010-8000-00AA006D2EA4}");

   type af_Parameters_QueryInterface is access
     function (This   : access Parameters;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Parameters_QueryInterface);

   type af_Parameters_AddRef is access
     function (This : access Parameters)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Parameters_AddRef);

   type af_Parameters_Release is access
     function (This : access Parameters)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Parameters_Release);

   type af_Parameters_GetTypeInfoCount is access
     function (This    : access Parameters;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Parameters_GetTypeInfoCount);

   type af_Parameters_GetTypeInfo is access
     function (This    : access Parameters;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Parameters_GetTypeInfo);

   type af_Parameters_GetIDsOfNames is access
     function (This      : access Parameters;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Parameters_GetIDsOfNames);

   type af_Parameters_Invoke is access
     function (This         : access Parameters;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Parameters_Invoke);

   type af_Parameters_Get_Count is access
     function (This : access Parameters;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Parameters_Get_Count);

   type af_Parameters_uNewEnum is access
     function (This      : access Parameters;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Parameters_uNewEnum);

   type af_Parameters_Refresh is access
     function (This : access Parameters)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Parameters_Refresh);

   type af_Parameters_Append is access
     function (This   : access Parameters;
               Object : GNATCOM.Types.Pointer_To_IDispatch)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Parameters_Append);

   type af_Parameters_Delete is access
     function (This  : access Parameters;
               Index : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Parameters_Delete);

   type af_Parameters_Get_Item is access
     function (This      : access Parameters;
               Index     : GNATCOM.Types.VARIANT;
               RetVal : Pointer_To_Pointer_To_uParameter)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Parameters_Get_Item);

   type ParametersVtbl;
   type Pointer_To_ParametersVtbl is access all ParametersVtbl;

   type Parameters is
      record
         Vtbl : Pointer_To_ParametersVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, Parameters);

   type ParametersVtbl is
      record
         QueryInterface   : af_Parameters_QueryInterface;
         AddRef           : af_Parameters_AddRef;
         Release          : af_Parameters_Release;
         GetTypeInfoCount : af_Parameters_GetTypeInfoCount;
         GetTypeInfo      : af_Parameters_GetTypeInfo;
         GetIDsOfNames    : af_Parameters_GetIDsOfNames;
         Invoke           : af_Parameters_Invoke;
         Get_Count        : af_Parameters_Get_Count;
         uNewEnum         : af_Parameters_uNewEnum;
         Refresh          : af_Parameters_Refresh;
         Append           : af_Parameters_Append;
         Delete           : af_Parameters_Delete;
         Get_Item         : af_Parameters_Get_Item;
      end record;
   pragma Convention (C_Pass_By_Copy, ParametersVtbl);

   function To_Pointer_To_Parameters is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_Parameters);

   --  Element Index         : 53
   --  Element Name          : Parameters
   --  Element Type          : Dispatch

   Parameters_Get_Count : constant := 1610743808;
   Parameters_uNewEnum  : constant := -4;
   Parameters_Refresh   : constant := 1610743810;
   Parameters_Append    : constant := 1610809344;
   Parameters_Delete    : constant := 1610809345;
   Parameters_Get_Item  : constant := 0;

   --  Element Index         : 44
   --  Element Name          : _Command15
   --  Element Type          : Dispatch

   IID_uCommand15 : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000508-0000-0010-8000-00AA006D2EA4}");

   type af_uCommand15_QueryInterface is access
     function (This   : access uCommand15;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_QueryInterface);

   type af_uCommand15_AddRef is access
     function (This : access uCommand15)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uCommand15_AddRef);

   type af_uCommand15_Release is access
     function (This : access uCommand15)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uCommand15_Release);

   type af_uCommand15_GetTypeInfoCount is access
     function (This    : access uCommand15;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_GetTypeInfoCount);

   type af_uCommand15_GetTypeInfo is access
     function (This    : access uCommand15;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_GetTypeInfo);

   type af_uCommand15_GetIDsOfNames is access
     function (This      : access uCommand15;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_GetIDsOfNames);

   type af_uCommand15_Invoke is access
     function (This         : access uCommand15;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Invoke);

   type af_uCommand15_Get_Properties is access
     function (This      : access uCommand15;
               RetVal : Pointer_To_Pointer_To_Properties)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Get_Properties);

   type af_uCommand15_Get_ActiveConnection is access
     function (This      : access uCommand15;
               RetVal : Pointer_To_Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Get_ActiveConnection);

   type af_uCommand15_PutRef_ActiveConnection is access
     function (This      : access uCommand15;
               ppvObject : Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_PutRef_ActiveConnection);

   type af_uCommand15_Put_ActiveConnection is access
     function (This      : access uCommand15;
               ppvObject : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Put_ActiveConnection);

   type af_uCommand15_Get_CommandText is access
     function (This  : access uCommand15;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Get_CommandText);

   type af_uCommand15_Put_CommandText is access
     function (This  : access uCommand15;
               pbstr : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Put_CommandText);

   type af_uCommand15_Get_CommandTimeout is access
     function (This : access uCommand15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Get_CommandTimeout);

   type af_uCommand15_Put_CommandTimeout is access
     function (This : access uCommand15;
               pl   : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Put_CommandTimeout);

   type af_uCommand15_Get_Prepared is access
     function (This       : access uCommand15;
               RetVal : GNATCOM.Types.Pointer_To_VARIANT_BOOL)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Get_Prepared);

   type af_uCommand15_Put_Prepared is access
     function (This       : access uCommand15;
               pfPrepared : GNATCOM.Types.VARIANT_BOOL)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Put_Prepared);

   type af_uCommand15_Execute is access
     function (This            : access uCommand15;
               RecordsAffected : access GNATCOM.Types.VARIANT;
               Parameters      : access GNATCOM.Types.VARIANT;
               Options         : Interfaces.C.long;
               RetVal : Pointer_To_Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Execute);

   type af_uCommand15_CreateParameter is access
     function (This      : access uCommand15;
               Name      : GNATCOM.Types.BSTR;
               uType     : DataTypeEnum;
               Direction : ParameterDirectionEnum;
               Size      : Interfaces.C.long;
               Value     : GNATCOM.Types.VARIANT;
               RetVal : Pointer_To_Pointer_To_uParameter)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_CreateParameter);

   type af_uCommand15_Get_Parameters is access
     function (This      : access uCommand15;
               RetVal : Pointer_To_Pointer_To_Parameters)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Get_Parameters);

   type af_uCommand15_Put_CommandType is access
     function (This      : access uCommand15;
               plCmdType : CommandTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Put_CommandType);

   type af_uCommand15_Get_CommandType is access
     function (This      : access uCommand15;
               RetVal : Pointer_To_CommandTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Get_CommandType);

   type af_uCommand15_Get_Name is access
     function (This      : access uCommand15;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Get_Name);

   type af_uCommand15_Put_Name is access
     function (This      : access uCommand15;
               pbstrName : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand15_Put_Name);

   type uCommand15Vtbl;
   type Pointer_To_uCommand15Vtbl is access all uCommand15Vtbl;

   type uCommand15 is
      record
         Vtbl : Pointer_To_uCommand15Vtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, uCommand15);

   type uCommand15Vtbl is
      record
         QueryInterface          : af_uCommand15_QueryInterface;
         AddRef                  : af_uCommand15_AddRef;
         Release                 : af_uCommand15_Release;
         GetTypeInfoCount        : af_uCommand15_GetTypeInfoCount;
         GetTypeInfo             : af_uCommand15_GetTypeInfo;
         GetIDsOfNames           : af_uCommand15_GetIDsOfNames;
         Invoke                  : af_uCommand15_Invoke;
         Get_Properties          : af_uCommand15_Get_Properties;
         Get_ActiveConnection    : af_uCommand15_Get_ActiveConnection;
         PutRef_ActiveConnection : af_uCommand15_PutRef_ActiveConnection;
         Put_ActiveConnection    : af_uCommand15_Put_ActiveConnection;
         Get_CommandText         : af_uCommand15_Get_CommandText;
         Put_CommandText         : af_uCommand15_Put_CommandText;
         Get_CommandTimeout      : af_uCommand15_Get_CommandTimeout;
         Put_CommandTimeout      : af_uCommand15_Put_CommandTimeout;
         Get_Prepared            : af_uCommand15_Get_Prepared;
         Put_Prepared            : af_uCommand15_Put_Prepared;
         Execute                 : af_uCommand15_Execute;
         CreateParameter         : af_uCommand15_CreateParameter;
         Get_Parameters          : af_uCommand15_Get_Parameters;
         Put_CommandType         : af_uCommand15_Put_CommandType;
         Get_CommandType         : af_uCommand15_Get_CommandType;
         Get_Name                : af_uCommand15_Get_Name;
         Put_Name                : af_uCommand15_Put_Name;
      end record;
   pragma Convention (C_Pass_By_Copy, uCommand15Vtbl);

   function To_Pointer_To_uCommand15 is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_uCommand15);

   --  Element Index         : 44
   --  Element Name          : _Command15
   --  Element Type          : Dispatch

   uCommand15_Get_Properties          : constant := 500;
   uCommand15_Get_ActiveConnection    : constant := 1610809344;
   uCommand15_PutRef_ActiveConnection : constant := 1610809344;
   uCommand15_Put_ActiveConnection    : constant := 1610809344;
   uCommand15_Get_CommandText         : constant := 1610809347;
   uCommand15_Put_CommandText         : constant := 1610809347;
   uCommand15_Get_CommandTimeout      : constant := 1610809349;
   uCommand15_Put_CommandTimeout      : constant := 1610809349;
   uCommand15_Get_Prepared            : constant := 1610809351;
   uCommand15_Put_Prepared            : constant := 1610809351;
   uCommand15_Execute                 : constant := 1610809353;
   uCommand15_CreateParameter         : constant := 1610809354;
   uCommand15_Get_Parameters          : constant := 0;
   uCommand15_Put_CommandType         : constant := 1610809356;
   uCommand15_Get_CommandType         : constant := 1610809356;
   uCommand15_Get_Name                : constant := 1610809358;
   uCommand15_Put_Name                : constant := 1610809358;

   --  Element Index         : 46
   --  Element Name          : _Connection15
   --  Element Type          : Dispatch

   IID_uConnection15 : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000515-0000-0010-8000-00AA006D2EA4}");

   type af_uConnection15_QueryInterface is access
     function (This   : access uConnection15;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_QueryInterface);

   type af_uConnection15_AddRef is access
     function (This : access uConnection15)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uConnection15_AddRef);

   type af_uConnection15_Release is access
     function (This : access uConnection15)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uConnection15_Release);

   type af_uConnection15_GetTypeInfoCount is access
     function (This    : access uConnection15;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_GetTypeInfoCount);

   type af_uConnection15_GetTypeInfo is access
     function (This    : access uConnection15;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_GetTypeInfo);

   type af_uConnection15_GetIDsOfNames is access
     function (This      : access uConnection15;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_GetIDsOfNames);

   type af_uConnection15_Invoke is access
     function (This         : access uConnection15;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Invoke);

   type af_uConnection15_Get_Properties is access
     function (This      : access uConnection15;
               RetVal : Pointer_To_Pointer_To_Properties)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_Properties);

   type af_uConnection15_Get_ConnectionString is access
     function (This  : access uConnection15;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_ConnectionString);

   type af_uConnection15_Put_ConnectionString is access
     function (This  : access uConnection15;
               pbstr : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Put_ConnectionString);

   type af_uConnection15_Get_CommandTimeout is access
     function (This      : access uConnection15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_CommandTimeout);

   type af_uConnection15_Put_CommandTimeout is access
     function (This      : access uConnection15;
               plTimeout : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Put_CommandTimeout);

   type af_uConnection15_Get_ConnectionTimeout is access
     function (This      : access uConnection15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_ConnectionTimeout);

   type af_uConnection15_Put_ConnectionTimeout is access
     function (This      : access uConnection15;
               plTimeout : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Put_ConnectionTimeout);

   type af_uConnection15_Get_Version is access
     function (This  : access uConnection15;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_Version);

   type af_uConnection15_Close is access
     function (This : access uConnection15)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Close);

   type af_uConnection15_Execute is access
     function (This            : access uConnection15;
               CommandText     : GNATCOM.Types.BSTR;
               RecordsAffected : access GNATCOM.Types.VARIANT;
               Options         : Interfaces.C.long;
               RetVal : Pointer_To_Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Execute);

   type af_uConnection15_BeginTrans is access
     function (This             : access uConnection15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_BeginTrans);

   type af_uConnection15_CommitTrans is access
     function (This : access uConnection15)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_CommitTrans);

   type af_uConnection15_RollbackTrans is access
     function (This : access uConnection15)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_RollbackTrans);

   type af_uConnection15_Open is access
     function (This             : access uConnection15;
               ConnectionString : GNATCOM.Types.BSTR;
               UserID           : GNATCOM.Types.BSTR;
               Password         : GNATCOM.Types.BSTR;
               Options          : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Open);

   type af_uConnection15_Get_Errors is access
     function (This      : access uConnection15;
               RetVal : Pointer_To_Pointer_To_Errors)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_Errors);

   type af_uConnection15_Get_DefaultDatabase is access
     function (This  : access uConnection15;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_DefaultDatabase);

   type af_uConnection15_Put_DefaultDatabase is access
     function (This  : access uConnection15;
               pbstr : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Put_DefaultDatabase);

   type af_uConnection15_Get_IsolationLevel is access
     function (This  : access uConnection15;
               RetVal : Pointer_To_IsolationLevelEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_IsolationLevel);

   type af_uConnection15_Put_IsolationLevel is access
     function (This  : access uConnection15;
               Level : IsolationLevelEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Put_IsolationLevel);

   type af_uConnection15_Get_Attributes is access
     function (This   : access uConnection15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_Attributes);

   type af_uConnection15_Put_Attributes is access
     function (This   : access uConnection15;
               plAttr : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Put_Attributes);

   type af_uConnection15_Get_CursorLocation is access
     function (This        : access uConnection15;
               RetVal : Pointer_To_CursorLocationEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_CursorLocation);

   type af_uConnection15_Put_CursorLocation is access
     function (This        : access uConnection15;
               plCursorLoc : CursorLocationEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Put_CursorLocation);

   type af_uConnection15_Get_Mode is access
     function (This   : access uConnection15;
               RetVal : Pointer_To_ConnectModeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_Mode);

   type af_uConnection15_Put_Mode is access
     function (This   : access uConnection15;
               plMode : ConnectModeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Put_Mode);

   type af_uConnection15_Get_Provider is access
     function (This  : access uConnection15;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_Provider);

   type af_uConnection15_Put_Provider is access
     function (This  : access uConnection15;
               pbstr : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Put_Provider);

   type af_uConnection15_Get_State is access
     function (This       : access uConnection15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_Get_State);

   type af_uConnection15_OpenSchema is access
     function (This         : access uConnection15;
               Schema       : SchemaEnum;
               Restrictions : GNATCOM.Types.VARIANT;
               SchemaID     : GNATCOM.Types.VARIANT;
               RetVal : Pointer_To_Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uConnection15_OpenSchema);

   type uConnection15Vtbl;
   type Pointer_To_uConnection15Vtbl is access all uConnection15Vtbl;

   type uConnection15 is
      record
         Vtbl : Pointer_To_uConnection15Vtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, uConnection15);

   type uConnection15Vtbl is
      record
         QueryInterface        : af_uConnection15_QueryInterface;
         AddRef                : af_uConnection15_AddRef;
         Release               : af_uConnection15_Release;
         GetTypeInfoCount      : af_uConnection15_GetTypeInfoCount;
         GetTypeInfo           : af_uConnection15_GetTypeInfo;
         GetIDsOfNames         : af_uConnection15_GetIDsOfNames;
         Invoke                : af_uConnection15_Invoke;
         Get_Properties        : af_uConnection15_Get_Properties;
         Get_ConnectionString  : af_uConnection15_Get_ConnectionString;
         Put_ConnectionString  : af_uConnection15_Put_ConnectionString;
         Get_CommandTimeout    : af_uConnection15_Get_CommandTimeout;
         Put_CommandTimeout    : af_uConnection15_Put_CommandTimeout;
         Get_ConnectionTimeout : af_uConnection15_Get_ConnectionTimeout;
         Put_ConnectionTimeout : af_uConnection15_Put_ConnectionTimeout;
         Get_Version           : af_uConnection15_Get_Version;
         Close                 : af_uConnection15_Close;
         Execute               : af_uConnection15_Execute;
         BeginTrans            : af_uConnection15_BeginTrans;
         CommitTrans           : af_uConnection15_CommitTrans;
         RollbackTrans         : af_uConnection15_RollbackTrans;
         Open                  : af_uConnection15_Open;
         Get_Errors            : af_uConnection15_Get_Errors;
         Get_DefaultDatabase   : af_uConnection15_Get_DefaultDatabase;
         Put_DefaultDatabase   : af_uConnection15_Put_DefaultDatabase;
         Get_IsolationLevel    : af_uConnection15_Get_IsolationLevel;
         Put_IsolationLevel    : af_uConnection15_Put_IsolationLevel;
         Get_Attributes        : af_uConnection15_Get_Attributes;
         Put_Attributes        : af_uConnection15_Put_Attributes;
         Get_CursorLocation    : af_uConnection15_Get_CursorLocation;
         Put_CursorLocation    : af_uConnection15_Put_CursorLocation;
         Get_Mode              : af_uConnection15_Get_Mode;
         Put_Mode              : af_uConnection15_Put_Mode;
         Get_Provider          : af_uConnection15_Get_Provider;
         Put_Provider          : af_uConnection15_Put_Provider;
         Get_State             : af_uConnection15_Get_State;
         OpenSchema            : af_uConnection15_OpenSchema;
      end record;
   pragma Convention (C_Pass_By_Copy, uConnection15Vtbl);

   function To_Pointer_To_uConnection15 is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_uConnection15);

   --  Element Index         : 46
   --  Element Name          : _Connection15
   --  Element Type          : Dispatch

   uConnection15_Get_Properties        : constant := 500;
   uConnection15_Get_ConnectionString  : constant := 0;
   uConnection15_Put_ConnectionString  : constant := 0;
   uConnection15_Get_CommandTimeout    : constant := 2;
   uConnection15_Put_CommandTimeout    : constant := 2;
   uConnection15_Get_ConnectionTimeout : constant := 3;
   uConnection15_Put_ConnectionTimeout : constant := 3;
   uConnection15_Get_Version           : constant := 4;
   uConnection15_Close                 : constant := 5;
   uConnection15_Execute               : constant := 6;
   uConnection15_BeginTrans            : constant := 7;
   uConnection15_CommitTrans           : constant := 8;
   uConnection15_RollbackTrans         : constant := 9;
   uConnection15_Open                  : constant := 10;
   uConnection15_Get_Errors            : constant := 11;
   uConnection15_Get_DefaultDatabase   : constant := 12;
   uConnection15_Put_DefaultDatabase   : constant := 12;
   uConnection15_Get_IsolationLevel    : constant := 13;
   uConnection15_Put_IsolationLevel    : constant := 13;
   uConnection15_Get_Attributes        : constant := 14;
   uConnection15_Put_Attributes        : constant := 14;
   uConnection15_Get_CursorLocation    : constant := 15;
   uConnection15_Put_CursorLocation    : constant := 15;
   uConnection15_Get_Mode              : constant := 16;
   uConnection15_Put_Mode              : constant := 16;
   uConnection15_Get_Provider          : constant := 17;
   uConnection15_Put_Provider          : constant := 17;
   uConnection15_Get_State             : constant := 18;
   uConnection15_OpenSchema            : constant := 19;

   --  Element Index         : 48
   --  Element Name          : _Recordset15
   --  Element Type          : Dispatch

   IID_uRecordset15 : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{0000050E-0000-0010-8000-00AA006D2EA4}");

   type af_uRecordset15_QueryInterface is access
     function (This   : access uRecordset15;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_QueryInterface);

   type af_uRecordset15_AddRef is access
     function (This : access uRecordset15)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uRecordset15_AddRef);

   type af_uRecordset15_Release is access
     function (This : access uRecordset15)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uRecordset15_Release);

   type af_uRecordset15_GetTypeInfoCount is access
     function (This    : access uRecordset15;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_GetTypeInfoCount);

   type af_uRecordset15_GetTypeInfo is access
     function (This    : access uRecordset15;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_GetTypeInfo);

   type af_uRecordset15_GetIDsOfNames is access
     function (This      : access uRecordset15;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_GetIDsOfNames);

   type af_uRecordset15_Invoke is access
     function (This         : access uRecordset15;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Invoke);

   type af_uRecordset15_Get_Properties is access
     function (This      : access uRecordset15;
               RetVal : Pointer_To_Pointer_To_Properties)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_Properties);

   type af_uRecordset15_Get_AbsolutePosition is access
     function (This : access uRecordset15;
               RetVal : Pointer_To_PositionEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_AbsolutePosition);

   type af_uRecordset15_Put_AbsolutePosition is access
     function (This : access uRecordset15;
               pl   : PositionEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_AbsolutePosition);

   type af_uRecordset15_PutRef_ActiveConnection is access
     function (This : access uRecordset15;
               pvar : GNATCOM.Types.Pointer_To_IDispatch)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_PutRef_ActiveConnection);

   type af_uRecordset15_Put_ActiveConnection is access
     function (This : access uRecordset15;
               pvar : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_ActiveConnection);

   type af_uRecordset15_Get_ActiveConnection is access
     function (This : access uRecordset15;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_ActiveConnection);

   type af_uRecordset15_Get_BOF is access
     function (This : access uRecordset15;
               RetVal : GNATCOM.Types.Pointer_To_VARIANT_BOOL)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_BOF);

   type af_uRecordset15_Get_Bookmark is access
     function (This       : access uRecordset15;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_Bookmark);

   type af_uRecordset15_Put_Bookmark is access
     function (This       : access uRecordset15;
               pvBookmark : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_Bookmark);

   type af_uRecordset15_Get_CacheSize is access
     function (This : access uRecordset15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_CacheSize);

   type af_uRecordset15_Put_CacheSize is access
     function (This : access uRecordset15;
               pl   : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_CacheSize);

   type af_uRecordset15_Get_CursorType is access
     function (This         : access uRecordset15;
               RetVal : Pointer_To_CursorTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_CursorType);

   type af_uRecordset15_Put_CursorType is access
     function (This         : access uRecordset15;
               plCursorType : CursorTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_CursorType);

   type af_uRecordset15_Get_EOF is access
     function (This : access uRecordset15;
               RetVal : GNATCOM.Types.Pointer_To_VARIANT_BOOL)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_EOF);

   type af_uRecordset15_Get_Fields is access
     function (This      : access uRecordset15;
               RetVal : Pointer_To_Pointer_To_Fields)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_Fields);

   type af_uRecordset15_Get_LockType is access
     function (This       : access uRecordset15;
               RetVal : Pointer_To_LockTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_LockType);

   type af_uRecordset15_Put_LockType is access
     function (This       : access uRecordset15;
               plLockType : LockTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_LockType);

   type af_uRecordset15_Get_MaxRecords is access
     function (This         : access uRecordset15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_MaxRecords);

   type af_uRecordset15_Put_MaxRecords is access
     function (This         : access uRecordset15;
               plMaxRecords : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_MaxRecords);

   type af_uRecordset15_Get_RecordCount is access
     function (This : access uRecordset15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_RecordCount);

   type af_uRecordset15_PutRef_Source is access
     function (This     : access uRecordset15;
               pvSource : GNATCOM.Types.Pointer_To_IDispatch)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_PutRef_Source);

   type af_uRecordset15_Put_Source is access
     function (This     : access uRecordset15;
               pvSource : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_Source);

   type af_uRecordset15_Get_Source is access
     function (This     : access uRecordset15;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_Source);

   type af_uRecordset15_AddNew is access
     function (This      : access uRecordset15;
               FieldList : GNATCOM.Types.VARIANT;
               Values    : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_AddNew);

   type af_uRecordset15_CancelUpdate is access
     function (This : access uRecordset15)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_CancelUpdate);

   type af_uRecordset15_Close is access
     function (This : access uRecordset15)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Close);

   type af_uRecordset15_Delete is access
     function (This          : access uRecordset15;
               AffectRecords : AffectEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Delete);

   type af_uRecordset15_GetRows is access
     function (This   : access uRecordset15;
               Rows   : Interfaces.C.long;
               Start  : GNATCOM.Types.VARIANT;
               Fields : GNATCOM.Types.VARIANT;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_GetRows);

   type af_uRecordset15_Move is access
     function (This       : access uRecordset15;
               NumRecords : Interfaces.C.long;
               Start      : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Move);

   type af_uRecordset15_MoveNext is access
     function (This : access uRecordset15)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_MoveNext);

   type af_uRecordset15_MovePrevious is access
     function (This : access uRecordset15)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_MovePrevious);

   type af_uRecordset15_MoveFirst is access
     function (This : access uRecordset15)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_MoveFirst);

   type af_uRecordset15_MoveLast is access
     function (This : access uRecordset15)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_MoveLast);

   type af_uRecordset15_Open is access
     function (This             : access uRecordset15;
               Source           : GNATCOM.Types.VARIANT;
               ActiveConnection : GNATCOM.Types.VARIANT;
               CursorType       : CursorTypeEnum;
               LockType         : LockTypeEnum;
               Options          : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Open);

   type af_uRecordset15_Requery is access
     function (This    : access uRecordset15;
               Options : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Requery);

   type af_uRecordset15_uxResync is access
     function (This          : access uRecordset15;
               AffectRecords : AffectEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_uxResync);

   type af_uRecordset15_Update is access
     function (This   : access uRecordset15;
               Fields : GNATCOM.Types.VARIANT;
               Values : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Update);

   type af_uRecordset15_Get_AbsolutePage is access
     function (This : access uRecordset15;
               RetVal : Pointer_To_PositionEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_AbsolutePage);

   type af_uRecordset15_Put_AbsolutePage is access
     function (This : access uRecordset15;
               pl   : PositionEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_AbsolutePage);

   type af_uRecordset15_Get_EditMode is access
     function (This : access uRecordset15;
               RetVal : Pointer_To_EditModeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_EditMode);

   type af_uRecordset15_Get_Filter is access
     function (This     : access uRecordset15;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_Filter);

   type af_uRecordset15_Put_Filter is access
     function (This     : access uRecordset15;
               Criteria : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_Filter);

   type af_uRecordset15_Get_PageCount is access
     function (This : access uRecordset15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_PageCount);

   type af_uRecordset15_Get_PageSize is access
     function (This : access uRecordset15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_PageSize);

   type af_uRecordset15_Put_PageSize is access
     function (This : access uRecordset15;
               pl   : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_PageSize);

   type af_uRecordset15_Get_Sort is access
     function (This     : access uRecordset15;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_Sort);

   type af_uRecordset15_Put_Sort is access
     function (This     : access uRecordset15;
               Criteria : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_Sort);

   type af_uRecordset15_Get_Status is access
     function (This : access uRecordset15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_Status);

   type af_uRecordset15_Get_State is access
     function (This       : access uRecordset15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_State);

   type af_uRecordset15_uxClone is access
     function (This      : access uRecordset15;
               RetVal : Pointer_To_Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_uxClone);

   type af_uRecordset15_UpdateBatch is access
     function (This          : access uRecordset15;
               AffectRecords : AffectEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_UpdateBatch);

   type af_uRecordset15_CancelBatch is access
     function (This          : access uRecordset15;
               AffectRecords : AffectEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_CancelBatch);

   type af_uRecordset15_Get_CursorLocation is access
     function (This        : access uRecordset15;
               RetVal : Pointer_To_CursorLocationEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_CursorLocation);

   type af_uRecordset15_Put_CursorLocation is access
     function (This        : access uRecordset15;
               plCursorLoc : CursorLocationEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_CursorLocation);

   type af_uRecordset15_NextRecordset is access
     function (This            : access uRecordset15;
               RecordsAffected : access GNATCOM.Types.VARIANT;
               RetVal : Pointer_To_Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_NextRecordset);

   type af_uRecordset15_Supports is access
     function (This          : access uRecordset15;
               CursorOptions : CursorOptionEnum;
               RetVal : GNATCOM.Types.Pointer_To_VARIANT_BOOL)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Supports);

   type af_uRecordset15_Get_Collect is access
     function (This  : access uRecordset15;
               Index : GNATCOM.Types.VARIANT;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_Collect);

   type af_uRecordset15_Put_Collect is access
     function (This  : access uRecordset15;
               Index : GNATCOM.Types.VARIANT;
               pvar  : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_Collect);

   type af_uRecordset15_Get_MarshalOptions is access
     function (This      : access uRecordset15;
               RetVal : Pointer_To_MarshalOptionsEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Get_MarshalOptions);

   type af_uRecordset15_Put_MarshalOptions is access
     function (This      : access uRecordset15;
               peMarshal : MarshalOptionsEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Put_MarshalOptions);

   type af_uRecordset15_Find is access
     function (This            : access uRecordset15;
               Criteria        : GNATCOM.Types.BSTR;
               SkipRecords     : Interfaces.C.long;
               SearchDirection : SearchDirectionEnum;
               Start           : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uRecordset15_Find);

   type uRecordset15Vtbl;
   type Pointer_To_uRecordset15Vtbl is access all uRecordset15Vtbl;

   type uRecordset15 is
      record
         Vtbl : Pointer_To_uRecordset15Vtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, uRecordset15);

   type uRecordset15Vtbl is
      record
         QueryInterface          : af_uRecordset15_QueryInterface;
         AddRef                  : af_uRecordset15_AddRef;
         Release                 : af_uRecordset15_Release;
         GetTypeInfoCount        : af_uRecordset15_GetTypeInfoCount;
         GetTypeInfo             : af_uRecordset15_GetTypeInfo;
         GetIDsOfNames           : af_uRecordset15_GetIDsOfNames;
         Invoke                  : af_uRecordset15_Invoke;
         Get_Properties          : af_uRecordset15_Get_Properties;
         Get_AbsolutePosition    : af_uRecordset15_Get_AbsolutePosition;
         Put_AbsolutePosition    : af_uRecordset15_Put_AbsolutePosition;
         PutRef_ActiveConnection : af_uRecordset15_PutRef_ActiveConnection;
         Put_ActiveConnection    : af_uRecordset15_Put_ActiveConnection;
         Get_ActiveConnection    : af_uRecordset15_Get_ActiveConnection;
         Get_BOF                 : af_uRecordset15_Get_BOF;
         Get_Bookmark            : af_uRecordset15_Get_Bookmark;
         Put_Bookmark            : af_uRecordset15_Put_Bookmark;
         Get_CacheSize           : af_uRecordset15_Get_CacheSize;
         Put_CacheSize           : af_uRecordset15_Put_CacheSize;
         Get_CursorType          : af_uRecordset15_Get_CursorType;
         Put_CursorType          : af_uRecordset15_Put_CursorType;
         Get_EOF                 : af_uRecordset15_Get_EOF;
         Get_Fields              : af_uRecordset15_Get_Fields;
         Get_LockType            : af_uRecordset15_Get_LockType;
         Put_LockType            : af_uRecordset15_Put_LockType;
         Get_MaxRecords          : af_uRecordset15_Get_MaxRecords;
         Put_MaxRecords          : af_uRecordset15_Put_MaxRecords;
         Get_RecordCount         : af_uRecordset15_Get_RecordCount;
         PutRef_Source           : af_uRecordset15_PutRef_Source;
         Put_Source              : af_uRecordset15_Put_Source;
         Get_Source              : af_uRecordset15_Get_Source;
         AddNew                  : af_uRecordset15_AddNew;
         CancelUpdate            : af_uRecordset15_CancelUpdate;
         Close                   : af_uRecordset15_Close;
         Delete                  : af_uRecordset15_Delete;
         GetRows                 : af_uRecordset15_GetRows;
         Move                    : af_uRecordset15_Move;
         MoveNext                : af_uRecordset15_MoveNext;
         MovePrevious            : af_uRecordset15_MovePrevious;
         MoveFirst               : af_uRecordset15_MoveFirst;
         MoveLast                : af_uRecordset15_MoveLast;
         Open                    : af_uRecordset15_Open;
         Requery                 : af_uRecordset15_Requery;
         uxResync                : af_uRecordset15_uxResync;
         Update                  : af_uRecordset15_Update;
         Get_AbsolutePage        : af_uRecordset15_Get_AbsolutePage;
         Put_AbsolutePage        : af_uRecordset15_Put_AbsolutePage;
         Get_EditMode            : af_uRecordset15_Get_EditMode;
         Get_Filter              : af_uRecordset15_Get_Filter;
         Put_Filter              : af_uRecordset15_Put_Filter;
         Get_PageCount           : af_uRecordset15_Get_PageCount;
         Get_PageSize            : af_uRecordset15_Get_PageSize;
         Put_PageSize            : af_uRecordset15_Put_PageSize;
         Get_Sort                : af_uRecordset15_Get_Sort;
         Put_Sort                : af_uRecordset15_Put_Sort;
         Get_Status              : af_uRecordset15_Get_Status;
         Get_State               : af_uRecordset15_Get_State;
         uxClone                 : af_uRecordset15_uxClone;
         UpdateBatch             : af_uRecordset15_UpdateBatch;
         CancelBatch             : af_uRecordset15_CancelBatch;
         Get_CursorLocation      : af_uRecordset15_Get_CursorLocation;
         Put_CursorLocation      : af_uRecordset15_Put_CursorLocation;
         NextRecordset           : af_uRecordset15_NextRecordset;
         Supports                : af_uRecordset15_Supports;
         Get_Collect             : af_uRecordset15_Get_Collect;
         Put_Collect             : af_uRecordset15_Put_Collect;
         Get_MarshalOptions      : af_uRecordset15_Get_MarshalOptions;
         Put_MarshalOptions      : af_uRecordset15_Put_MarshalOptions;
         Find                    : af_uRecordset15_Find;
      end record;
   pragma Convention (C_Pass_By_Copy, uRecordset15Vtbl);

   function To_Pointer_To_uRecordset15 is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_uRecordset15);

   --  Element Index         : 48
   --  Element Name          : _Recordset15
   --  Element Type          : Dispatch

   uRecordset15_Get_Properties          : constant := 500;
   uRecordset15_Get_AbsolutePosition    : constant := 1000;
   uRecordset15_Put_AbsolutePosition    : constant := 1000;
   uRecordset15_PutRef_ActiveConnection : constant := 1001;
   uRecordset15_Put_ActiveConnection    : constant := 1001;
   uRecordset15_Get_ActiveConnection    : constant := 1001;
   uRecordset15_Get_BOF                 : constant := 1002;
   uRecordset15_Get_Bookmark            : constant := 1003;
   uRecordset15_Put_Bookmark            : constant := 1003;
   uRecordset15_Get_CacheSize           : constant := 1004;
   uRecordset15_Put_CacheSize           : constant := 1004;
   uRecordset15_Get_CursorType          : constant := 1005;
   uRecordset15_Put_CursorType          : constant := 1005;
   uRecordset15_Get_EOF                 : constant := 1006;
   uRecordset15_Get_Fields              : constant := 0;
   uRecordset15_Get_LockType            : constant := 1008;
   uRecordset15_Put_LockType            : constant := 1008;
   uRecordset15_Get_MaxRecords          : constant := 1009;
   uRecordset15_Put_MaxRecords          : constant := 1009;
   uRecordset15_Get_RecordCount         : constant := 1010;
   uRecordset15_PutRef_Source           : constant := 1011;
   uRecordset15_Put_Source              : constant := 1011;
   uRecordset15_Get_Source              : constant := 1011;
   uRecordset15_AddNew                  : constant := 1012;
   uRecordset15_CancelUpdate            : constant := 1013;
   uRecordset15_Close                   : constant := 1014;
   uRecordset15_Delete                  : constant := 1015;
   uRecordset15_GetRows                 : constant := 1016;
   uRecordset15_Move                    : constant := 1017;
   uRecordset15_MoveNext                : constant := 1018;
   uRecordset15_MovePrevious            : constant := 1019;
   uRecordset15_MoveFirst               : constant := 1020;
   uRecordset15_MoveLast                : constant := 1021;
   uRecordset15_Open                    : constant := 1022;
   uRecordset15_Requery                 : constant := 1023;
   uRecordset15_uxResync                : constant := 1610809378;
   uRecordset15_Update                  : constant := 1025;
   uRecordset15_Get_AbsolutePage        : constant := 1047;
   uRecordset15_Put_AbsolutePage        : constant := 1047;
   uRecordset15_Get_EditMode            : constant := 1026;
   uRecordset15_Get_Filter              : constant := 1030;
   uRecordset15_Put_Filter              : constant := 1030;
   uRecordset15_Get_PageCount           : constant := 1050;
   uRecordset15_Get_PageSize            : constant := 1048;
   uRecordset15_Put_PageSize            : constant := 1048;
   uRecordset15_Get_Sort                : constant := 1031;
   uRecordset15_Put_Sort                : constant := 1031;
   uRecordset15_Get_Status              : constant := 1029;
   uRecordset15_Get_State               : constant := 1054;
   uRecordset15_uxClone                 : constant := 1610809392;
   uRecordset15_UpdateBatch             : constant := 1035;
   uRecordset15_CancelBatch             : constant := 1049;
   uRecordset15_Get_CursorLocation      : constant := 1051;
   uRecordset15_Put_CursorLocation      : constant := 1051;
   uRecordset15_NextRecordset           : constant := 1052;
   uRecordset15_Supports                : constant := 1036;
   uRecordset15_Get_Collect             : constant := -8;
   uRecordset15_Put_Collect             : constant := -8;
   uRecordset15_Get_MarshalOptions      : constant := 1053;
   uRecordset15_Put_MarshalOptions      : constant := 1053;
   uRecordset15_Find                    : constant := 1058;

   --  Element Index         : 50
   --  Element Name          : Fields15
   --  Element Type          : Dispatch

   IID_Fields15 : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000506-0000-0010-8000-00AA006D2EA4}");

   type af_Fields15_QueryInterface is access
     function (This   : access Fields15;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields15_QueryInterface);

   type af_Fields15_AddRef is access
     function (This : access Fields15)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Fields15_AddRef);

   type af_Fields15_Release is access
     function (This : access Fields15)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Fields15_Release);

   type af_Fields15_GetTypeInfoCount is access
     function (This    : access Fields15;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields15_GetTypeInfoCount);

   type af_Fields15_GetTypeInfo is access
     function (This    : access Fields15;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields15_GetTypeInfo);

   type af_Fields15_GetIDsOfNames is access
     function (This      : access Fields15;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields15_GetIDsOfNames);

   type af_Fields15_Invoke is access
     function (This         : access Fields15;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields15_Invoke);

   type af_Fields15_Get_Count is access
     function (This : access Fields15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields15_Get_Count);

   type af_Fields15_uNewEnum is access
     function (This      : access Fields15;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields15_uNewEnum);

   type af_Fields15_Refresh is access
     function (This : access Fields15)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields15_Refresh);

   type af_Fields15_Get_Item is access
     function (This      : access Fields15;
               Index     : GNATCOM.Types.VARIANT;
               RetVal : Pointer_To_Pointer_To_Field)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Fields15_Get_Item);

   type Fields15Vtbl;
   type Pointer_To_Fields15Vtbl is access all Fields15Vtbl;

   type Fields15 is
      record
         Vtbl : Pointer_To_Fields15Vtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, Fields15);

   type Fields15Vtbl is
      record
         QueryInterface   : af_Fields15_QueryInterface;
         AddRef           : af_Fields15_AddRef;
         Release          : af_Fields15_Release;
         GetTypeInfoCount : af_Fields15_GetTypeInfoCount;
         GetTypeInfo      : af_Fields15_GetTypeInfo;
         GetIDsOfNames    : af_Fields15_GetIDsOfNames;
         Invoke           : af_Fields15_Invoke;
         Get_Count        : af_Fields15_Get_Count;
         uNewEnum         : af_Fields15_uNewEnum;
         Refresh          : af_Fields15_Refresh;
         Get_Item         : af_Fields15_Get_Item;
      end record;
   pragma Convention (C_Pass_By_Copy, Fields15Vtbl);

   function To_Pointer_To_Fields15 is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_Fields15);

   --  Element Index         : 50
   --  Element Name          : Fields15
   --  Element Type          : Dispatch

   Fields15_Get_Count : constant := 1610743808;
   Fields15_uNewEnum  : constant := -4;
   Fields15_Refresh   : constant := 1610743810;
   Fields15_Get_Item  : constant := 0;

   --  Element Index         : 54
   --  Element Name          : _Command
   --  Element Type          : Dispatch

   IID_uCommand : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{0000054E-0000-0010-8000-00AA006D2EA4}");

   type af_uCommand_QueryInterface is access
     function (This   : access uCommand;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_QueryInterface);

   type af_uCommand_AddRef is access
     function (This : access uCommand)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uCommand_AddRef);

   type af_uCommand_Release is access
     function (This : access uCommand)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_uCommand_Release);

   type af_uCommand_GetTypeInfoCount is access
     function (This    : access uCommand;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_GetTypeInfoCount);

   type af_uCommand_GetTypeInfo is access
     function (This    : access uCommand;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_GetTypeInfo);

   type af_uCommand_GetIDsOfNames is access
     function (This      : access uCommand;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_GetIDsOfNames);

   type af_uCommand_Invoke is access
     function (This         : access uCommand;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Invoke);

   type af_uCommand_Get_Properties is access
     function (This      : access uCommand;
               RetVal : Pointer_To_Pointer_To_Properties)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Get_Properties);

   type af_uCommand_Get_ActiveConnection is access
     function (This      : access uCommand;
               RetVal : Pointer_To_Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Get_ActiveConnection);

   type af_uCommand_PutRef_ActiveConnection is access
     function (This      : access uCommand;
               ppvObject : Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_PutRef_ActiveConnection);

   type af_uCommand_Put_ActiveConnection is access
     function (This      : access uCommand;
               ppvObject : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Put_ActiveConnection);

   type af_uCommand_Get_CommandText is access
     function (This  : access uCommand;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Get_CommandText);

   type af_uCommand_Put_CommandText is access
     function (This  : access uCommand;
               pbstr : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Put_CommandText);

   type af_uCommand_Get_CommandTimeout is access
     function (This : access uCommand;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Get_CommandTimeout);

   type af_uCommand_Put_CommandTimeout is access
     function (This : access uCommand;
               pl   : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Put_CommandTimeout);

   type af_uCommand_Get_Prepared is access
     function (This       : access uCommand;
               RetVal : GNATCOM.Types.Pointer_To_VARIANT_BOOL)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Get_Prepared);

   type af_uCommand_Put_Prepared is access
     function (This       : access uCommand;
               pfPrepared : GNATCOM.Types.VARIANT_BOOL)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Put_Prepared);

   type af_uCommand_Execute is access
     function (This            : access uCommand;
               RecordsAffected : access GNATCOM.Types.VARIANT;
               Parameters      : access GNATCOM.Types.VARIANT;
               Options         : Interfaces.C.long;
               RetVal : Pointer_To_Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Execute);

   type af_uCommand_CreateParameter is access
     function (This      : access uCommand;
               Name      : GNATCOM.Types.BSTR;
               uType     : DataTypeEnum;
               Direction : ParameterDirectionEnum;
               Size      : Interfaces.C.long;
               Value     : GNATCOM.Types.VARIANT;
               RetVal : Pointer_To_Pointer_To_uParameter)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_CreateParameter);

   type af_uCommand_Get_Parameters is access
     function (This      : access uCommand;
               RetVal : Pointer_To_Pointer_To_Parameters)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Get_Parameters);

   type af_uCommand_Put_CommandType is access
     function (This      : access uCommand;
               plCmdType : CommandTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Put_CommandType);

   type af_uCommand_Get_CommandType is access
     function (This      : access uCommand;
               RetVal : Pointer_To_CommandTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Get_CommandType);

   type af_uCommand_Get_Name is access
     function (This      : access uCommand;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Get_Name);

   type af_uCommand_Put_Name is access
     function (This      : access uCommand;
               pbstrName : GNATCOM.Types.BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Put_Name);

   type af_uCommand_Get_State is access
     function (This       : access uCommand;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Get_State);

   type af_uCommand_Cancel is access
     function (This : access uCommand)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_uCommand_Cancel);

   type uCommandVtbl;
   type Pointer_To_uCommandVtbl is access all uCommandVtbl;

   type uCommand is
      record
         Vtbl : Pointer_To_uCommandVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, uCommand);

   type uCommandVtbl is
      record
         QueryInterface          : af_uCommand_QueryInterface;
         AddRef                  : af_uCommand_AddRef;
         Release                 : af_uCommand_Release;
         GetTypeInfoCount        : af_uCommand_GetTypeInfoCount;
         GetTypeInfo             : af_uCommand_GetTypeInfo;
         GetIDsOfNames           : af_uCommand_GetIDsOfNames;
         Invoke                  : af_uCommand_Invoke;
         Get_Properties          : af_uCommand_Get_Properties;
         Get_ActiveConnection    : af_uCommand_Get_ActiveConnection;
         PutRef_ActiveConnection : af_uCommand_PutRef_ActiveConnection;
         Put_ActiveConnection    : af_uCommand_Put_ActiveConnection;
         Get_CommandText         : af_uCommand_Get_CommandText;
         Put_CommandText         : af_uCommand_Put_CommandText;
         Get_CommandTimeout      : af_uCommand_Get_CommandTimeout;
         Put_CommandTimeout      : af_uCommand_Put_CommandTimeout;
         Get_Prepared            : af_uCommand_Get_Prepared;
         Put_Prepared            : af_uCommand_Put_Prepared;
         Execute                 : af_uCommand_Execute;
         CreateParameter         : af_uCommand_CreateParameter;
         Get_Parameters          : af_uCommand_Get_Parameters;
         Put_CommandType         : af_uCommand_Put_CommandType;
         Get_CommandType         : af_uCommand_Get_CommandType;
         Get_Name                : af_uCommand_Get_Name;
         Put_Name                : af_uCommand_Put_Name;
         Get_State               : af_uCommand_Get_State;
         Cancel                  : af_uCommand_Cancel;
      end record;
   pragma Convention (C_Pass_By_Copy, uCommandVtbl);

   function To_Pointer_To_uCommand is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_uCommand);

   --  Element Index         : 54
   --  Element Name          : _Command
   --  Element Type          : Dispatch

   uCommand_Get_Properties          : constant := 500;
   uCommand_Get_ActiveConnection    : constant := 1610809344;
   uCommand_PutRef_ActiveConnection : constant := 1610809344;
   uCommand_Put_ActiveConnection    : constant := 1610809344;
   uCommand_Get_CommandText         : constant := 1610809347;
   uCommand_Put_CommandText         : constant := 1610809347;
   uCommand_Get_CommandTimeout      : constant := 1610809349;
   uCommand_Put_CommandTimeout      : constant := 1610809349;
   uCommand_Get_Prepared            : constant := 1610809351;
   uCommand_Put_Prepared            : constant := 1610809351;
   uCommand_Execute                 : constant := 1610809353;
   uCommand_CreateParameter         : constant := 1610809354;
   uCommand_Get_Parameters          : constant := 0;
   uCommand_Put_CommandType         : constant := 1610809356;
   uCommand_Get_CommandType         : constant := 1610809356;
   uCommand_Get_Name                : constant := 1610809358;
   uCommand_Put_Name                : constant := 1610809358;
   uCommand_Get_State               : constant := 1610874880;
   uCommand_Cancel                  : constant := 1610874881;

   --  Element Index         : 55
   --  Element Name          : ConnectionEventsVt
   --  Element Type          : Interface

   IID_ConnectionEventsVt : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000402-0000-0010-8000-00AA006D2EA4}");

   type af_ConnectionEventsVt_QueryInterface is access
     function (This   : access ConnectionEventsVt;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ConnectionEventsVt_QueryInterface);

   type af_ConnectionEventsVt_AddRef is access
     function (This : access ConnectionEventsVt)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_ConnectionEventsVt_AddRef);

   type af_ConnectionEventsVt_Release is access
     function (This : access ConnectionEventsVt)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_ConnectionEventsVt_Release);

   type af_ConnectionEventsVt_InfoMessage is access
     function (This        : access ConnectionEventsVt;
               pError      : Pointer_To_Error;
               adStatus    : Pointer_To_EventStatusEnum;
               pConnection : Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ConnectionEventsVt_InfoMessage);

   type af_ConnectionEventsVt_BeginTransComplete is access
     function (This             : access ConnectionEventsVt;
               TransactionLevel : Interfaces.C.long;
               pError           : Pointer_To_Error;
               adStatus         : Pointer_To_EventStatusEnum;
               pConnection      : Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ConnectionEventsVt_BeginTransComplete);

   type af_ConnectionEventsVt_CommitTransComplete is access
     function (This        : access ConnectionEventsVt;
               pError      : Pointer_To_Error;
               adStatus    : Pointer_To_EventStatusEnum;
               pConnection : Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ConnectionEventsVt_CommitTransComplete);

   type af_ConnectionEventsVt_RollbackTransComplete is access
     function (This        : access ConnectionEventsVt;
               pError      : Pointer_To_Error;
               adStatus    : Pointer_To_EventStatusEnum;
               pConnection : Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ConnectionEventsVt_RollbackTransComplete);

   type af_ConnectionEventsVt_WillExecute is access
     function (This        : access ConnectionEventsVt;
               Source      : GNATCOM.Types.Pointer_To_BSTR;
               CursorType  : Pointer_To_CursorTypeEnum;
               LockType    : Pointer_To_LockTypeEnum;
               Options     : GNATCOM.Types.Pointer_To_long;
               adStatus    : Pointer_To_EventStatusEnum;
               pCommand    : Pointer_To_uCommand;
               pRecordset  : Pointer_To_uRecordset;
               pConnection : Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ConnectionEventsVt_WillExecute);

   type af_ConnectionEventsVt_ExecuteComplete is access
     function (This            : access ConnectionEventsVt;
               RecordsAffected : Interfaces.C.long;
               pError          : Pointer_To_Error;
               adStatus        : Pointer_To_EventStatusEnum;
               pCommand        : Pointer_To_uCommand;
               pRecordset      : Pointer_To_uRecordset;
               pConnection     : Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ConnectionEventsVt_ExecuteComplete);

   type af_ConnectionEventsVt_WillConnect is access
     function (This             : access ConnectionEventsVt;
               ConnectionString : GNATCOM.Types.Pointer_To_BSTR;
               UserID           : GNATCOM.Types.Pointer_To_BSTR;
               Password         : GNATCOM.Types.Pointer_To_BSTR;
               Options          : GNATCOM.Types.Pointer_To_long;
               adStatus         : Pointer_To_EventStatusEnum;
               pConnection      : Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ConnectionEventsVt_WillConnect);

   type af_ConnectionEventsVt_ConnectComplete is access
     function (This        : access ConnectionEventsVt;
               pError      : Pointer_To_Error;
               adStatus    : Pointer_To_EventStatusEnum;
               pConnection : Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ConnectionEventsVt_ConnectComplete);

   type af_ConnectionEventsVt_Disconnect is access
     function (This        : access ConnectionEventsVt;
               adStatus    : Pointer_To_EventStatusEnum;
               pConnection : Pointer_To_uConnection)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ConnectionEventsVt_Disconnect);

   type ConnectionEventsVtVtbl;
   type Pointer_To_ConnectionEventsVtVtbl is access all ConnectionEventsVtVtbl;

   type ConnectionEventsVt is
      record
         Vtbl : Pointer_To_ConnectionEventsVtVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, ConnectionEventsVt);

   type ConnectionEventsVtVtbl is
      record
         QueryInterface        : af_ConnectionEventsVt_QueryInterface;
         AddRef                : af_ConnectionEventsVt_AddRef;
         Release               : af_ConnectionEventsVt_Release;
         InfoMessage           : af_ConnectionEventsVt_InfoMessage;
         BeginTransComplete    : af_ConnectionEventsVt_BeginTransComplete;
         CommitTransComplete   : af_ConnectionEventsVt_CommitTransComplete;
         RollbackTransComplete : af_ConnectionEventsVt_RollbackTransComplete;
         WillExecute           : af_ConnectionEventsVt_WillExecute;
         ExecuteComplete       : af_ConnectionEventsVt_ExecuteComplete;
         WillConnect           : af_ConnectionEventsVt_WillConnect;
         ConnectComplete       : af_ConnectionEventsVt_ConnectComplete;
         Disconnect            : af_ConnectionEventsVt_Disconnect;
      end record;
   pragma Convention (C_Pass_By_Copy, ConnectionEventsVtVtbl);

   function To_Pointer_To_ConnectionEventsVt is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_ConnectionEventsVt);

   --  Element Index         : 56
   --  Element Name          : RecordsetEventsVt
   --  Element Type          : Interface

   IID_RecordsetEventsVt : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000403-0000-0010-8000-00AA006D2EA4}");

   type af_RecordsetEventsVt_QueryInterface is access
     function (This   : access RecordsetEventsVt;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_RecordsetEventsVt_QueryInterface);

   type af_RecordsetEventsVt_AddRef is access
     function (This : access RecordsetEventsVt)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_RecordsetEventsVt_AddRef);

   type af_RecordsetEventsVt_Release is access
     function (This : access RecordsetEventsVt)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_RecordsetEventsVt_Release);

   type af_RecordsetEventsVt_WillChangeField is access
     function (This       : access RecordsetEventsVt;
               cFields    : Interfaces.C.long;
               Fields     : GNATCOM.Types.VARIANT;
               adStatus   : Pointer_To_EventStatusEnum;
               pRecordset : Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_RecordsetEventsVt_WillChangeField);

   type af_RecordsetEventsVt_FieldChangeComplete is access
     function (This       : access RecordsetEventsVt;
               cFields    : Interfaces.C.long;
               Fields     : GNATCOM.Types.VARIANT;
               pError     : Pointer_To_Error;
               adStatus   : Pointer_To_EventStatusEnum;
               pRecordset : Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_RecordsetEventsVt_FieldChangeComplete);

   type af_RecordsetEventsVt_WillChangeRecord is access
     function (This       : access RecordsetEventsVt;
               adReason   : EventReasonEnum;
               cRecords   : Interfaces.C.long;
               adStatus   : Pointer_To_EventStatusEnum;
               pRecordset : Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_RecordsetEventsVt_WillChangeRecord);

   type af_RecordsetEventsVt_RecordChangeComplete is access
     function (This       : access RecordsetEventsVt;
               adReason   : EventReasonEnum;
               cRecords   : Interfaces.C.long;
               pError     : Pointer_To_Error;
               adStatus   : Pointer_To_EventStatusEnum;
               pRecordset : Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_RecordsetEventsVt_RecordChangeComplete);

   type af_RecordsetEventsVt_WillChangeRecordset is access
     function (This       : access RecordsetEventsVt;
               adReason   : EventReasonEnum;
               adStatus   : Pointer_To_EventStatusEnum;
               pRecordset : Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_RecordsetEventsVt_WillChangeRecordset);

   type af_RecordsetEventsVt_RecordsetChangeComplete is access
     function (This       : access RecordsetEventsVt;
               adReason   : EventReasonEnum;
               pError     : Pointer_To_Error;
               adStatus   : Pointer_To_EventStatusEnum;
               pRecordset : Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_RecordsetEventsVt_RecordsetChangeComplete);

   type af_RecordsetEventsVt_WillMove is access
     function (This       : access RecordsetEventsVt;
               adReason   : EventReasonEnum;
               adStatus   : Pointer_To_EventStatusEnum;
               pRecordset : Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_RecordsetEventsVt_WillMove);

   type af_RecordsetEventsVt_MoveComplete is access
     function (This       : access RecordsetEventsVt;
               adReason   : EventReasonEnum;
               pError     : Pointer_To_Error;
               adStatus   : Pointer_To_EventStatusEnum;
               pRecordset : Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_RecordsetEventsVt_MoveComplete);

   type af_RecordsetEventsVt_EndOfRecordset is access
     function (This       : access RecordsetEventsVt;
               fMoreData  : GNATCOM.Types.Pointer_To_VARIANT_BOOL;
               adStatus   : Pointer_To_EventStatusEnum;
               pRecordset : Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_RecordsetEventsVt_EndOfRecordset);

   type af_RecordsetEventsVt_FetchProgress is access
     function (This        : access RecordsetEventsVt;
               Progress    : Interfaces.C.long;
               MaxProgress : Interfaces.C.long;
               adStatus    : Pointer_To_EventStatusEnum;
               pRecordset  : Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_RecordsetEventsVt_FetchProgress);

   type af_RecordsetEventsVt_FetchComplete is access
     function (This       : access RecordsetEventsVt;
               pError     : Pointer_To_Error;
               adStatus   : Pointer_To_EventStatusEnum;
               pRecordset : Pointer_To_uRecordset)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_RecordsetEventsVt_FetchComplete);

   type RecordsetEventsVtVtbl;
   type Pointer_To_RecordsetEventsVtVtbl is access all RecordsetEventsVtVtbl;

   type RecordsetEventsVt is
      record
         Vtbl : Pointer_To_RecordsetEventsVtVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, RecordsetEventsVt);

   type RecordsetEventsVtVtbl is
      record
         QueryInterface          : af_RecordsetEventsVt_QueryInterface;
         AddRef                  : af_RecordsetEventsVt_AddRef;
         Release                 : af_RecordsetEventsVt_Release;
         WillChangeField         : af_RecordsetEventsVt_WillChangeField;
         FieldChangeComplete     : af_RecordsetEventsVt_FieldChangeComplete;
         WillChangeRecord        : af_RecordsetEventsVt_WillChangeRecord;
         RecordChangeComplete    : af_RecordsetEventsVt_RecordChangeComplete;
         WillChangeRecordset     : af_RecordsetEventsVt_WillChangeRecordset;
         RecordsetChangeComplete :
            af_RecordsetEventsVt_RecordsetChangeComplete;
         WillMove                : af_RecordsetEventsVt_WillMove;
         MoveComplete            : af_RecordsetEventsVt_MoveComplete;
         EndOfRecordset          : af_RecordsetEventsVt_EndOfRecordset;
         FetchProgress           : af_RecordsetEventsVt_FetchProgress;
         FetchComplete           : af_RecordsetEventsVt_FetchComplete;
      end record;
   pragma Convention (C_Pass_By_Copy, RecordsetEventsVtVtbl);

   function To_Pointer_To_RecordsetEventsVt is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_RecordsetEventsVt);

   --  Element Index         : 57
   --  Element Name          : ConnectionEvents
   --  Element Type          : Dispatch

   IID_ConnectionEvents : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000400-0000-0010-8000-00AA006D2EA4}");

   ConnectionEvents_InfoMessage           : constant := 0;
   ConnectionEvents_BeginTransComplete    : constant := 1;
   ConnectionEvents_CommitTransComplete   : constant := 3;
   ConnectionEvents_RollbackTransComplete : constant := 2;
   ConnectionEvents_WillExecute           : constant := 4;
   ConnectionEvents_ExecuteComplete       : constant := 5;
   ConnectionEvents_WillConnect           : constant := 6;
   ConnectionEvents_ConnectComplete       : constant := 7;
   ConnectionEvents_Disconnect            : constant := 8;

   --  Element Index         : 58
   --  Element Name          : RecordsetEvents
   --  Element Type          : Dispatch

   IID_RecordsetEvents : aliased GNATCOM.Types.GUID :=
      GNATCOM.GUID.To_GUID ("{00000266-0000-0010-8000-00AA006D2EA4}");

   RecordsetEvents_WillChangeField         : constant := 9;
   RecordsetEvents_FieldChangeComplete     : constant := 10;
   RecordsetEvents_WillChangeRecord        : constant := 11;
   RecordsetEvents_RecordChangeComplete    : constant := 12;
   RecordsetEvents_WillChangeRecordset     : constant := 13;
   RecordsetEvents_RecordsetChangeComplete : constant := 14;
   RecordsetEvents_WillMove                : constant := 15;
   RecordsetEvents_MoveComplete            : constant := 16;
   RecordsetEvents_EndOfRecordset          : constant := 17;
   RecordsetEvents_FetchProgress           : constant := 18;
   RecordsetEvents_FetchComplete           : constant := 19;

   --  Element Index         : 59
   --  Element Name          : ADOConnectionConstruction15
   --  Element Type          : Interface

   IID_ADOConnectionConstruction15 : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000516-0000-0010-8000-00AA006D2EA4}");

   type af_ADOConnectionConstruction15_QueryInterface is access
     function (This   : access ADOConnectionConstruction15;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADOConnectionConstruction15_QueryInterface);

   type af_ADOConnectionConstruction15_AddRef is access
     function (This : access ADOConnectionConstruction15)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_ADOConnectionConstruction15_AddRef);

   type af_ADOConnectionConstruction15_Release is access
     function (This : access ADOConnectionConstruction15)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_ADOConnectionConstruction15_Release);

   type af_ADOConnectionConstruction15_Get_DSO is access
     function (This  : access ADOConnectionConstruction15;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADOConnectionConstruction15_Get_DSO);

   type af_ADOConnectionConstruction15_Get_Session is access
     function (This      : access ADOConnectionConstruction15;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADOConnectionConstruction15_Get_Session);

   type af_ADOConnectionConstruction15_WrapDSOandSession is access
     function (This     : access ADOConnectionConstruction15;
               pDSO     : GNATCOM.Types.Pointer_To_IUnknown;
               pSession : GNATCOM.Types.Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall,
                      af_ADOConnectionConstruction15_WrapDSOandSession);

   type ADOConnectionConstruction15Vtbl;
   type Pointer_To_ADOConnectionConstruction15Vtbl is
          access all ADOConnectionConstruction15Vtbl;

   type ADOConnectionConstruction15 is
      record
         Vtbl : Pointer_To_ADOConnectionConstruction15Vtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, ADOConnectionConstruction15);

   type ADOConnectionConstruction15Vtbl is
      record
         QueryInterface    : af_ADOConnectionConstruction15_QueryInterface;
         AddRef            : af_ADOConnectionConstruction15_AddRef;
         Release           : af_ADOConnectionConstruction15_Release;
         Get_DSO           : af_ADOConnectionConstruction15_Get_DSO;
         Get_Session       : af_ADOConnectionConstruction15_Get_Session;
         WrapDSOandSession : af_ADOConnectionConstruction15_WrapDSOandSession;
      end record;
   pragma Convention (C_Pass_By_Copy, ADOConnectionConstruction15Vtbl);

   function To_Pointer_To_ADOConnectionConstruction15 is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_ADOConnectionConstruction15);

   --  Element Index         : 60
   --  Element Name          : ADOConnectionConstruction
   --  Element Type          : Interface

   IID_ADOConnectionConstruction : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000551-0000-0010-8000-00AA006D2EA4}");

   type af_ADOConnectionConstruction_QueryInterface is access
     function (This   : access ADOConnectionConstruction;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADOConnectionConstruction_QueryInterface);

   type af_ADOConnectionConstruction_AddRef is access
     function (This : access ADOConnectionConstruction)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_ADOConnectionConstruction_AddRef);

   type af_ADOConnectionConstruction_Release is access
     function (This : access ADOConnectionConstruction)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_ADOConnectionConstruction_Release);

   type af_ADOConnectionConstruction_Get_DSO is access
     function (This  : access ADOConnectionConstruction;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADOConnectionConstruction_Get_DSO);

   type af_ADOConnectionConstruction_Get_Session is access
     function (This      : access ADOConnectionConstruction;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADOConnectionConstruction_Get_Session);

   type af_ADOConnectionConstruction_WrapDSOandSession is access
     function (This     : access ADOConnectionConstruction;
               pDSO     : GNATCOM.Types.Pointer_To_IUnknown;
               pSession : GNATCOM.Types.Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADOConnectionConstruction_WrapDSOandSession);

   type ADOConnectionConstructionVtbl;
   type Pointer_To_ADOConnectionConstructionVtbl is
      access all ADOConnectionConstructionVtbl;

   type ADOConnectionConstruction is
      record
         Vtbl : Pointer_To_ADOConnectionConstructionVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, ADOConnectionConstruction);

   type ADOConnectionConstructionVtbl is
      record
         QueryInterface    : af_ADOConnectionConstruction_QueryInterface;
         AddRef            : af_ADOConnectionConstruction_AddRef;
         Release           : af_ADOConnectionConstruction_Release;
         Get_DSO           : af_ADOConnectionConstruction_Get_DSO;
         Get_Session       : af_ADOConnectionConstruction_Get_Session;
         WrapDSOandSession : af_ADOConnectionConstruction_WrapDSOandSession;
      end record;
   pragma Convention (C_Pass_By_Copy, ADOConnectionConstructionVtbl);

   function To_Pointer_To_ADOConnectionConstruction is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_ADOConnectionConstruction);

   --  Element Index         : 61
   --  Element Name          : Connection
   --  Element Type          : CoClass

   CLSID_Connection : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000514-0000-0010-8000-00AA006D2EA4}");

   --  Element Index         : 62
   --  Element Name          : ADOCommandConstruction
   --  Element Type          : Interface

   IID_ADOCommandConstruction : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000517-0000-0010-8000-00AA006D2EA4}");

   type af_ADOCommandConstruction_QueryInterface is access
     function (This   : access ADOCommandConstruction;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADOCommandConstruction_QueryInterface);

   type af_ADOCommandConstruction_AddRef is access
     function (This : access ADOCommandConstruction)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_ADOCommandConstruction_AddRef);

   type af_ADOCommandConstruction_Release is access
     function (This : access ADOCommandConstruction)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_ADOCommandConstruction_Release);

   type af_ADOCommandConstruction_Get_OLEDBCommand is access
     function (This           : access ADOCommandConstruction;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADOCommandConstruction_Get_OLEDBCommand);

   type af_ADOCommandConstruction_Put_OLEDBCommand is access
     function (This           : access ADOCommandConstruction;
               ppOLEDBCommand : GNATCOM.Types.Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADOCommandConstruction_Put_OLEDBCommand);

   type ADOCommandConstructionVtbl;
   type Pointer_To_ADOCommandConstructionVtbl is
      access all ADOCommandConstructionVtbl;

   type ADOCommandConstruction is
      record
         Vtbl : Pointer_To_ADOCommandConstructionVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, ADOCommandConstruction);

   type ADOCommandConstructionVtbl is
      record
         QueryInterface   : af_ADOCommandConstruction_QueryInterface;
         AddRef           : af_ADOCommandConstruction_AddRef;
         Release          : af_ADOCommandConstruction_Release;
         Get_OLEDBCommand : af_ADOCommandConstruction_Get_OLEDBCommand;
         Put_OLEDBCommand : af_ADOCommandConstruction_Put_OLEDBCommand;
      end record;
   pragma Convention (C_Pass_By_Copy, ADOCommandConstructionVtbl);

   function To_Pointer_To_ADOCommandConstruction is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_ADOCommandConstruction);

   --  Element Index         : 63
   --  Element Name          : Command
   --  Element Type          : CoClass

   CLSID_Command : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000507-0000-0010-8000-00AA006D2EA4}");
   --  Element Index         : 64
   --  Element Name          : Recordset
   --  Element Type          : CoClass

   CLSID_Recordset : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000535-0000-0010-8000-00AA006D2EA4}");

   --  Element Index         : 65
   --  Element Name          : ADORecordsetConstruction
   --  Element Type          : Interface

   IID_ADORecordsetConstruction : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000283-0000-0010-8000-00AA006D2EA4}");

   type af_ADORecordsetConstruction_QueryInterface is access
     function (This   : access ADORecordsetConstruction;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADORecordsetConstruction_QueryInterface);

   type af_ADORecordsetConstruction_AddRef is access
     function (This : access ADORecordsetConstruction)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_ADORecordsetConstruction_AddRef);

   type af_ADORecordsetConstruction_Release is access
     function (This : access ADORecordsetConstruction)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_ADORecordsetConstruction_Release);

   type af_ADORecordsetConstruction_GetTypeInfoCount is access
     function (This    : access ADORecordsetConstruction;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADORecordsetConstruction_GetTypeInfoCount);

   type af_ADORecordsetConstruction_GetTypeInfo is access
     function (This    : access ADORecordsetConstruction;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADORecordsetConstruction_GetTypeInfo);

   type af_ADORecordsetConstruction_GetIDsOfNames is access
     function (This      : access ADORecordsetConstruction;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADORecordsetConstruction_GetIDsOfNames);

   type af_ADORecordsetConstruction_Invoke is access
     function (This         : access ADORecordsetConstruction;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADORecordsetConstruction_Invoke);

   type af_ADORecordsetConstruction_Get_Rowset is access
     function (This     : access ADORecordsetConstruction;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADORecordsetConstruction_Get_Rowset);

   type af_ADORecordsetConstruction_Put_Rowset is access
     function (This     : access ADORecordsetConstruction;
               ppRowset : GNATCOM.Types.Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADORecordsetConstruction_Put_Rowset);

   type af_ADORecordsetConstruction_Get_Chapter is access
     function (This      : access ADORecordsetConstruction;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADORecordsetConstruction_Get_Chapter);

   type af_ADORecordsetConstruction_Put_Chapter is access
     function (This      : access ADORecordsetConstruction;
               plChapter : Interfaces.C.long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADORecordsetConstruction_Put_Chapter);

   type af_ADORecordsetConstruction_Get_RowPosition is access
     function (This     : access ADORecordsetConstruction;
               RetVal : GNATCOM.Types.Pointer_To_Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADORecordsetConstruction_Get_RowPosition);

   type af_ADORecordsetConstruction_Put_RowPosition is access
     function (This     : access ADORecordsetConstruction;
               ppRowPos : GNATCOM.Types.Pointer_To_IUnknown)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_ADORecordsetConstruction_Put_RowPosition);

   type ADORecordsetConstructionVtbl;
   type Pointer_To_ADORecordsetConstructionVtbl is
      access all ADORecordsetConstructionVtbl;

   type ADORecordsetConstruction is
      record
         Vtbl : Pointer_To_ADORecordsetConstructionVtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, ADORecordsetConstruction);

   type ADORecordsetConstructionVtbl is
      record
         QueryInterface   : af_ADORecordsetConstruction_QueryInterface;
         AddRef           : af_ADORecordsetConstruction_AddRef;
         Release          : af_ADORecordsetConstruction_Release;
         GetTypeInfoCount : af_ADORecordsetConstruction_GetTypeInfoCount;
         GetTypeInfo      : af_ADORecordsetConstruction_GetTypeInfo;
         GetIDsOfNames    : af_ADORecordsetConstruction_GetIDsOfNames;
         Invoke           : af_ADORecordsetConstruction_Invoke;
         Get_Rowset       : af_ADORecordsetConstruction_Get_Rowset;
         Put_Rowset       : af_ADORecordsetConstruction_Put_Rowset;
         Get_Chapter      : af_ADORecordsetConstruction_Get_Chapter;
         Put_Chapter      : af_ADORecordsetConstruction_Put_Chapter;
         Get_RowPosition  : af_ADORecordsetConstruction_Get_RowPosition;
         Put_RowPosition  : af_ADORecordsetConstruction_Put_RowPosition;
      end record;
   pragma Convention (C_Pass_By_Copy, ADORecordsetConstructionVtbl);

   function To_Pointer_To_ADORecordsetConstruction is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_ADORecordsetConstruction);

   --  Element Index         : 66
   --  Element Name          : Field15
   --  Element Type          : Dispatch

   IID_Field15 : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{00000505-0000-0010-8000-00AA006D2EA4}");

   type af_Field15_QueryInterface is access
     function (This   : access Field15;
               riid   : GNATCOM.Types.Pointer_To_GUID;
               ppvObj : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_QueryInterface);

   type af_Field15_AddRef is access
     function (This : access Field15)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Field15_AddRef);

   type af_Field15_Release is access
     function (This : access Field15)
     return Interfaces.C.unsigned_long;
   pragma Convention (StdCall, af_Field15_Release);

   type af_Field15_GetTypeInfoCount is access
     function (This    : access Field15;
               pctinfo : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_GetTypeInfoCount);

   type af_Field15_GetTypeInfo is access
     function (This    : access Field15;
               itinfo  : Interfaces.C.unsigned;
               lcid    : Interfaces.C.unsigned_long;
               pptinfo : GNATCOM.Types.Pointer_To_Pointer_To_Void)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_GetTypeInfo);

   type af_Field15_GetIDsOfNames is access
     function (This      : access Field15;
               riid      : GNATCOM.Types.Pointer_To_GUID;
               rgszNames : GNATCOM.Types.Pointer_To_Pointer_To_char;
               cNames    : Interfaces.C.unsigned;
               lcid      : Interfaces.C.unsigned_long;
               rgdispid  : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_GetIDsOfNames);

   type af_Field15_Invoke is access
     function (This         : access Field15;
               dispidMember : Interfaces.C.long;
               riid         : GNATCOM.Types.Pointer_To_GUID;
               lcid         : Interfaces.C.unsigned_long;
               wFlags       : Interfaces.C.unsigned_short;
               pdispparams  : GNATCOM.Types.Pointer_To_DISPPARAMS;
               pvarResult   : access GNATCOM.Types.VARIANT;
               pexcepinfo   : GNATCOM.Types.Pointer_To_EXCEPINFO;
               puArgErr     : GNATCOM.Types.Pointer_To_unsigned)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Invoke);

   type af_Field15_Get_Properties is access
     function (This      : access Field15;
               RetVal : Pointer_To_Pointer_To_Properties)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Get_Properties);

   type af_Field15_Get_ActualSize is access
     function (This : access Field15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Get_ActualSize);

   type af_Field15_Get_Attributes is access
     function (This : access Field15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Get_Attributes);

   type af_Field15_Get_DefinedSize is access
     function (This : access Field15;
               RetVal : GNATCOM.Types.Pointer_To_long)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Get_DefinedSize);

   type af_Field15_Get_Name is access
     function (This  : access Field15;
               RetVal : GNATCOM.Types.Pointer_To_BSTR)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Get_Name);

   type af_Field15_Get_Type is access
     function (This      : access Field15;
               RetVal : Pointer_To_DataTypeEnum)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Get_Type);

   type af_Field15_Get_Value is access
     function (This : access Field15;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Get_Value);

   type af_Field15_Put_Value is access
     function (This : access Field15;
               pvar : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Put_Value);

   type af_Field15_Get_Precision is access
     function (This        : access Field15;
               RetVal : Pointer_To_unsigned_char)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Get_Precision);

   type af_Field15_Get_NumericScale is access
     function (This           : access Field15;
               RetVal : Pointer_To_unsigned_char)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Get_NumericScale);

   type af_Field15_AppendChunk is access
     function (This : access Field15;
               Data : GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_AppendChunk);

   type af_Field15_GetChunk is access
     function (This   : access Field15;
               Length : Interfaces.C.long;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_GetChunk);

   type af_Field15_Get_OriginalValue is access
     function (This : access Field15;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Get_OriginalValue);

   type af_Field15_Get_UnderlyingValue is access
     function (This : access Field15;
               RetVal : access GNATCOM.Types.VARIANT)
     return GNATCOM.Types.HRESULT;
   pragma Convention (StdCall, af_Field15_Get_UnderlyingValue);

   type Field15Vtbl;
   type Pointer_To_Field15Vtbl is access all Field15Vtbl;

   type Field15 is
      record
         Vtbl : Pointer_To_Field15Vtbl;
      end record;
   pragma Convention (C_Pass_By_Copy, Field15);

   type Field15Vtbl is
      record
         QueryInterface      : af_Field15_QueryInterface;
         AddRef              : af_Field15_AddRef;
         Release             : af_Field15_Release;
         GetTypeInfoCount    : af_Field15_GetTypeInfoCount;
         GetTypeInfo         : af_Field15_GetTypeInfo;
         GetIDsOfNames       : af_Field15_GetIDsOfNames;
         Invoke              : af_Field15_Invoke;
         Get_Properties      : af_Field15_Get_Properties;
         Get_ActualSize      : af_Field15_Get_ActualSize;
         Get_Attributes      : af_Field15_Get_Attributes;
         Get_DefinedSize     : af_Field15_Get_DefinedSize;
         Get_Name            : af_Field15_Get_Name;
         Get_Type            : af_Field15_Get_Type;
         Get_Value           : af_Field15_Get_Value;
         Put_Value           : af_Field15_Put_Value;
         Get_Precision       : af_Field15_Get_Precision;
         Get_NumericScale    : af_Field15_Get_NumericScale;
         AppendChunk         : af_Field15_AppendChunk;
         GetChunk            : af_Field15_GetChunk;
         Get_OriginalValue   : af_Field15_Get_OriginalValue;
         Get_UnderlyingValue : af_Field15_Get_UnderlyingValue;
      end record;
   pragma Convention (C_Pass_By_Copy, Field15Vtbl);

   function To_Pointer_To_Field15 is
     new Ada.Unchecked_Conversion
     (GNATCOM.Types.Pointer_To_Void, Pointer_To_Field15);

   --  Element Index         : 66
   --  Element Name          : Field15
   --  Element Type          : Dispatch

   Field15_Get_Properties      : constant := 500;
   Field15_Get_ActualSize      : constant := 1109;
   Field15_Get_Attributes      : constant := 1036;
   Field15_Get_DefinedSize     : constant := 1103;
   Field15_Get_Name            : constant := 1100;
   Field15_Get_Type            : constant := 1102;
   Field15_Get_Value           : constant := 0;
   Field15_Put_Value           : constant := 0;
   Field15_Get_Precision       : constant := 1610809351;
   Field15_Get_NumericScale    : constant := 1610809352;
   Field15_AppendChunk         : constant := 1107;
   Field15_GetChunk            : constant := 1108;
   Field15_Get_OriginalValue   : constant := 1104;
   Field15_Get_UnderlyingValue : constant := 1105;

   --  Element Index         : 67
   --  Element Name          : Parameter
   --  Element Type          : CoClass

   CLSID_Parameter : aliased GNATCOM.Types.GUID :=
     GNATCOM.GUID.To_GUID ("{0000050B-0000-0010-8000-00AA006D2EA4}");

end ADO;
