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
|
---|