| 1 | 
 /** | 
 
 
 
 
 
 | 2 | 
  * This file has no copyright assigned and is placed in the Public Domain. | 
 
 
 
 
 
 | 3 | 
  * This file is part of the mingw-w64 runtime package. | 
 
 
 
 
 
 | 4 | 
  * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
 
 
 
 
 
 | 5 | 
  */ | 
 
 
 
 
 
 | 6 | 
 #ifndef _ICRSINT_H_ | 
 
 
 
 
 
 | 7 | 
 #define _ICRSINT_H_ | 
 
 
 
 
 
 | 8 | 
  | 
 
 
 
 
 
 | 9 | 
 #include <olectl.h> | 
 
 
 
 
 
 | 10 | 
 #include <stddef.h> | 
 
 
 
 
 
 | 11 | 
  | 
 
 
 
 
 
 | 12 | 
 class CADORecordBinding; | 
 
 
 
 
 
 | 13 | 
  | 
 
 
 
 
 
 | 14 | 
 #define classoffset(base,derived) ((DWORD_PTR)(static_cast<base*>((derived*)8))-8) | 
 
 
 
 
 
 | 15 | 
  | 
 
 
 
 
 
 | 16 | 
 enum ADOFieldStatusEnum { | 
 
 
 
 
 
 | 17 | 
   adFldOK = 0,adFldBadAccessor = 1,adFldCantConvertValue = 2,adFldNull = 3,adFldTruncated = 4,adFldSignMismatch = 5,adFldDataOverFlow = 6, | 
 
 
 
 
 
 | 18 | 
   adFldCantCreate = 7,adFldUnavailable = 8,adFldPermissionDenied = 9,adFldIntegrityViolation = 10,adFldSchemaViolation = 11,adFldBadStatus = 12, | 
 
 
 
 
 
 | 19 | 
   adFldDefault = 13 | 
 
 
 
 
 
 | 20 | 
 }; | 
 
 
 
 
 
 | 21 | 
  | 
 
 
 
 
 
 | 22 | 
 typedef struct stADO_BINDING_ENTRY { | 
 
 
 
 
 
 | 23 | 
   ULONG_PTR ulOrdinal; | 
 
 
 
 
 
 | 24 | 
   WORD wDataType; | 
 
 
 
 
 
 | 25 | 
   BYTE bPrecision; | 
 
 
 
 
 
 | 26 | 
   BYTE bScale; | 
 
 
 
 
 
 | 27 | 
   ULONG_PTR ulSize; | 
 
 
 
 
 
 | 28 | 
   ULONG_PTR ulBufferOffset; | 
 
 
 
 
 
 | 29 | 
   ULONG_PTR ulStatusOffset; | 
 
 
 
 
 
 | 30 | 
   ULONG_PTR ulLengthOffset; | 
 
 
 
 
 
 | 31 | 
   ULONG_PTR ulADORecordBindingOffSet; | 
 
 
 
 
 
 | 32 | 
   WINBOOL fModify; | 
 
 
 
 
 
 | 33 | 
 } ADO_BINDING_ENTRY; | 
 
 
 
 
 
 | 34 | 
  | 
 
 
 
 
 
 | 35 | 
 #define BEGIN_ADO_BINDING(cls) public: typedef cls ADORowClass; \ | 
 
 
 
 
 
 | 36 | 
   const ADO_BINDING_ENTRY *WINAPI GetADOBindingEntries() { static const ADO_BINDING_ENTRY rgADOBindingEntries[] = { | 
 
 
 
 
 
 | 37 | 
 #define ADO_FIXED_LENGTH_ENTRY(Ordinal,DataType,Buffer,Status,Modify) {Ordinal,DataType,0,0,0,offsetof(ADORowClass,Buffer),offsetof(ADORowClass,Status),0,classoffset(CADORecordBinding,ADORowClass),Modify}, | 
 
 
 
 
 
 | 38 | 
 #define ADO_FIXED_LENGTH_ENTRY2(Ordinal,DataType,Buffer,Modify) {Ordinal,DataType,0,0,0,offsetof(ADORowClass,Buffer),0,0,classoffset(CADORecordBinding,ADORowClass),Modify}, | 
 
 
 
 
 
 | 39 | 
 #define ADO_NUMERIC_ENTRY(Ordinal,DataType,Buffer,Precision,Scale,Status,Modify) {Ordinal,DataType,Precision,Scale,0,offsetof(ADORowClass,Buffer),offsetof(ADORowClass,Status),0,classoffset(CADORecordBinding,ADORowClass),Modify}, | 
 
 
 
 
 
 | 40 | 
 #define ADO_NUMERIC_ENTRY2(Ordinal,DataType,Buffer,Precision,Scale,Modify) {Ordinal,DataType,Precision,Scale,0,offsetof(ADORowClass,Buffer),0,0,classoffset(CADORecordBinding,ADORowClass),Modify}, | 
 
 
 
 
 
 | 41 | 
 #define ADO_VARIABLE_LENGTH_ENTRY(Ordinal,DataType,Buffer,Size,Status,Length,Modify) {Ordinal,DataType,0,0,Size,offsetof(ADORowClass,Buffer),offsetof(ADORowClass,Status),offsetof(ADORowClass,Length),classoffset(CADORecordBinding,ADORowClass),Modify}, | 
 
 
 
 
 
 | 42 | 
 #define ADO_VARIABLE_LENGTH_ENTRY2(Ordinal,DataType,Buffer,Size,Status,Modify) {Ordinal,DataType,0,0,Size,offsetof(ADORowClass,Buffer),offsetof(ADORowClass,Status),0,classoffset(CADORecordBinding,ADORowClass),Modify}, | 
 
 
 
 
 
 | 43 | 
 #define ADO_VARIABLE_LENGTH_ENTRY3(Ordinal,DataType,Buffer,Size,Length,Modify) {Ordinal,DataType,0,0,Size,offsetof(ADORowClass,Buffer),0,offsetof(ADORowClass,Length),classoffset(CADORecordBinding,ADORowClass),Modify}, | 
 
 
 
 
 
 | 44 | 
 #define ADO_VARIABLE_LENGTH_ENTRY4(Ordinal,DataType,Buffer,Size,Modify) {Ordinal,DataType,0,0,Size,offsetof(ADORowClass,Buffer),0,0,classoffset(CADORecordBinding,ADORowClass),Modify}, | 
 
 
 
 
 
 | 45 | 
 #define END_ADO_BINDING() {0,adEmpty,0,0,0,0,0,0,0,FALSE}}; return rgADOBindingEntries;} | 
 
 
 
 
 
 | 46 | 
  | 
 
 
 
 
 
 | 47 | 
 class CADORecordBinding { | 
 
 
 
 
 
 | 48 | 
 public: | 
 
 
 
 
 
 | 49 | 
   STDMETHOD_(const ADO_BINDING_ENTRY*,GetADOBindingEntries) (VOID) PURE; | 
 
 
 
 
 
 | 50 | 
 }; | 
 
 
 
 
 
 | 51 | 
  | 
 
 
 
 
 
 | 52 | 
 struct __declspec(uuid("00000544-0000-0010-8000-00aa006d2ea4")) IADORecordBinding; | 
 
 
 
 
 
 | 53 | 
 DECLARE_INTERFACE_(IADORecordBinding,IUnknown) { | 
 
 
 
 
 
 | 54 | 
 public: | 
 
 
 
 
 
 | 55 | 
   STDMETHOD(BindToRecordset) (CADORecordBinding *pAdoRecordBinding) PURE; | 
 
 
 
 
 
 | 56 | 
   STDMETHOD(AddNew) (CADORecordBinding *pAdoRecordBinding) PURE; | 
 
 
 
 
 
 | 57 | 
   STDMETHOD(Update) (CADORecordBinding *pAdoRecordBinding) PURE; | 
 
 
 
 
 
 | 58 | 
 }; | 
 
 
 
 
 
 | 59 | 
 #endif |