icrsint.h 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. #include <olectl.h>
  9. #include <stddef.h>
  10. class CADORecordBinding;
  11. #define classoffset(base,derived) ((DWORD_PTR)(static_cast<base*>((derived*)8))-8)
  12. enum ADOFieldStatusEnum {
  13. adFldOK = 0,adFldBadAccessor = 1,adFldCantConvertValue = 2,adFldNull = 3,adFldTruncated = 4,adFldSignMismatch = 5,adFldDataOverFlow = 6,
  14. adFldCantCreate = 7,adFldUnavailable = 8,adFldPermissionDenied = 9,adFldIntegrityViolation = 10,adFldSchemaViolation = 11,adFldBadStatus = 12,
  15. adFldDefault = 13
  16. };
  17. typedef struct stADO_BINDING_ENTRY {
  18. ULONG_PTR ulOrdinal;
  19. WORD wDataType;
  20. BYTE bPrecision;
  21. BYTE bScale;
  22. ULONG_PTR ulSize;
  23. ULONG_PTR ulBufferOffset;
  24. ULONG_PTR ulStatusOffset;
  25. ULONG_PTR ulLengthOffset;
  26. ULONG_PTR ulADORecordBindingOffSet;
  27. WINBOOL fModify;
  28. } ADO_BINDING_ENTRY;
  29. #define BEGIN_ADO_BINDING(cls) public: typedef cls ADORowClass; \
  30. const ADO_BINDING_ENTRY *WINAPI GetADOBindingEntries() { static const ADO_BINDING_ENTRY rgADOBindingEntries[] = {
  31. #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},
  32. #define ADO_FIXED_LENGTH_ENTRY2(Ordinal,DataType,Buffer,Modify) {Ordinal,DataType,0,0,0,offsetof(ADORowClass,Buffer),0,0,classoffset(CADORecordBinding,ADORowClass),Modify},
  33. #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},
  34. #define ADO_NUMERIC_ENTRY2(Ordinal,DataType,Buffer,Precision,Scale,Modify) {Ordinal,DataType,Precision,Scale,0,offsetof(ADORowClass,Buffer),0,0,classoffset(CADORecordBinding,ADORowClass),Modify},
  35. #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},
  36. #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},
  37. #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},
  38. #define ADO_VARIABLE_LENGTH_ENTRY4(Ordinal,DataType,Buffer,Size,Modify) {Ordinal,DataType,0,0,Size,offsetof(ADORowClass,Buffer),0,0,classoffset(CADORecordBinding,ADORowClass),Modify},
  39. #define END_ADO_BINDING() {0,adEmpty,0,0,0,0,0,0,0,FALSE}}; return rgADOBindingEntries;}
  40. class CADORecordBinding {
  41. public:
  42. STDMETHOD_(const ADO_BINDING_ENTRY*,GetADOBindingEntries) (VOID) PURE;
  43. };
  44. struct __declspec(uuid("00000544-0000-0010-8000-00aa006d2ea4")) IADORecordBinding;
  45. DECLARE_INTERFACE_(IADORecordBinding,IUnknown) {
  46. public:
  47. STDMETHOD(BindToRecordset) (CADORecordBinding *pAdoRecordBinding) PURE;
  48. STDMETHOD(AddNew) (CADORecordBinding *pAdoRecordBinding) PURE;
  49. STDMETHOD(Update) (CADORecordBinding *pAdoRecordBinding) PURE;
  50. };
  51. #endif