cmdtre.idl 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. //-----------------------------------------------------------------------------
  2. // File: cmdtre.idl
  3. //
  4. // Copyright: Copyright (c) Microsoft Corporation
  5. //
  6. // Contents: OLE DB interface definition
  7. //
  8. // Comments:
  9. //
  10. //-----------------------------------------------------------------------------
  11. #include "idlmulti.h"
  12. //
  13. LOCAL_INTERFACE(0c733a87-2a1c-11ce-ade5-00aa0044773d)
  14. interface ICommandTree : IUnknown {
  15. typedef DWORD DBCOMMANDREUSE;
  16. enum DBCOMMANDREUSEENUM {
  17. DBCOMMANDREUSE_NONE = 0x00,
  18. DBCOMMANDREUSE_PROPERTIES = 0x01,
  19. DBCOMMANDREUSE_PARAMETERS = 0x02,
  20. };
  21. typedef DWORD DBVALUEKIND;
  22. enum DBVALUEKINDENUM {
  23. DBVALUEKIND_BYGUID = 256,
  24. DBVALUEKIND_COLDESC = DBVALUEKIND_BYGUID + 1,
  25. DBVALUEKIND_ID = DBVALUEKIND_COLDESC + 1,
  26. DBVALUEKIND_CONTENT = DBVALUEKIND_ID + 1,
  27. DBVALUEKIND_CONTENTVECTOR = DBVALUEKIND_CONTENT + 1,
  28. DBVALUEKIND_GROUPINFO = DBVALUEKIND_CONTENTVECTOR + 1,
  29. DBVALUEKIND_PARAMETER = DBVALUEKIND_GROUPINFO + 1,
  30. DBVALUEKIND_PROPERTY = DBVALUEKIND_PARAMETER + 1,
  31. DBVALUEKIND_SETFUNC = DBVALUEKIND_PROPERTY + 1,
  32. DBVALUEKIND_SORTINFO = DBVALUEKIND_SETFUNC + 1,
  33. DBVALUEKIND_TEXT = DBVALUEKIND_SORTINFO + 1,
  34. DBVALUEKIND_COMMAND = DBVALUEKIND_TEXT + 1,
  35. DBVALUEKIND_MONIKER = DBVALUEKIND_COMMAND + 1,
  36. DBVALUEKIND_ROWSET = DBVALUEKIND_MONIKER + 1,
  37. DBVALUEKIND_LIKE = DBVALUEKIND_ROWSET + 1,
  38. DBVALUEKIND_CONTENTPROXIMITY= DBVALUEKIND_LIKE + 1,
  39. DBVALUEKIND_CONTENTSCOPE = DBVALUEKIND_CONTENTPROXIMITY + 1,
  40. DBVALUEKIND_CONTENTTABLE = DBVALUEKIND_CONTENTSCOPE + 1,
  41. DBVALUEKIND_IDISPATCH = 9,
  42. DBVALUEKIND_IUNKNOWN = 13,
  43. DBVALUEKIND_EMPTY = 0,
  44. DBVALUEKIND_NULL = 1,
  45. DBVALUEKIND_I2 = 2,
  46. DBVALUEKIND_I4 = 3,
  47. DBVALUEKIND_R4 = 4,
  48. DBVALUEKIND_R8 = 5,
  49. DBVALUEKIND_CY = 6,
  50. DBVALUEKIND_DATE = 7,
  51. DBVALUEKIND_BSTR = 8,
  52. DBVALUEKIND_ERROR = 10,
  53. DBVALUEKIND_BOOL = 11,
  54. DBVALUEKIND_VARIANT = 12,
  55. DBVALUEKIND_VECTOR = 0x1000,
  56. DBVALUEKIND_ARRAY = 0x2000,
  57. DBVALUEKIND_BYREF = 0x4000,
  58. DBVALUEKIND_I1 = 16,
  59. DBVALUEKIND_UI1 = 17,
  60. DBVALUEKIND_UI2 = 18,
  61. DBVALUEKIND_UI4 = DBVALUEKIND_UI2 + 1,
  62. DBVALUEKIND_I8 = DBVALUEKIND_UI4 + 1,
  63. DBVALUEKIND_UI8 = DBVALUEKIND_I8 + 1,
  64. DBVALUEKIND_GUID = 72,
  65. DBVALUEKIND_BYTES = 128,
  66. DBVALUEKIND_STR = 129,
  67. DBVALUEKIND_WSTR = 130,
  68. DBVALUEKIND_NUMERIC = 131,
  69. DBVALUEKIND_DBDATE = 133,
  70. DBVALUEKIND_DBTIME = 134,
  71. DBVALUEKIND_DBTIMESTAMP = 135,
  72. DBVALUEKIND_PROBABILISTIC = 136,
  73. DBVALUEKIND_RELEVANTDOCUMENT = 137,
  74. };
  75. typedef struct tagDBBYGUID {
  76. [size_is((ULONG)cbInfo)] BYTE * pbInfo;
  77. DBLENGTH cbInfo;
  78. GUID guid;
  79. } DBBYGUID;
  80. cpp_quote("#define GENERATE_METHOD_EXACT ( 0 )")
  81. cpp_quote("#define GENERATE_METHOD_PREFIX ( 1 )")
  82. cpp_quote("#define GENERATE_METHOD_INFLECT ( 2 )")
  83. typedef struct tagDBCONTENT {
  84. LPOLESTR pwszPhrase;
  85. DWORD dwGenerateMethod;
  86. LONG lWeight;
  87. LCID lcid;
  88. } DBCONTENT;
  89. cpp_quote("#define SCOPE_FLAG_MASK ( 0x000000ff )")
  90. cpp_quote("#define SCOPE_FLAG_INCLUDE ( 0x00000001 )")
  91. cpp_quote("#define SCOPE_FLAG_DEEP ( 0x00000002 )")
  92. cpp_quote("#define SCOPE_TYPE_MASK ( 0xffffff00 )")
  93. cpp_quote("#define SCOPE_TYPE_WINPATH ( 0x00000100 )")
  94. cpp_quote("#define SCOPE_TYPE_VPATH ( 0x00000200 )")
  95. typedef struct tagDBCONTENTSCOPE {
  96. DWORD dwFlags;
  97. LPOLESTR * rgpwszTagName;
  98. LPOLESTR pwszElementValue;
  99. } DBCONTENTSCOPE;
  100. typedef struct tagDBCONTENTTABLE {
  101. LPOLESTR pwszMachine;
  102. LPOLESTR pwszCatalog;
  103. } DBCONTENTTABLE;
  104. cpp_quote("#define PROPID_QUERY_RANKVECTOR ( 0x2 )")
  105. cpp_quote("#define PROPID_QUERY_RANK ( 0x3 )")
  106. cpp_quote("#define PROPID_QUERY_HITCOUNT ( 0x4 )")
  107. cpp_quote("#define PROPID_QUERY_ALL ( 0x6 )")
  108. cpp_quote("#define PROPID_STG_CONTENTS ( 0x13 )")
  109. cpp_quote("#define VECTOR_RANK_MIN ( 0 )")
  110. cpp_quote("#define VECTOR_RANK_MAX ( 1 )")
  111. cpp_quote("#define VECTOR_RANK_INNER ( 2 )")
  112. cpp_quote("#define VECTOR_RANK_DICE ( 3 )")
  113. cpp_quote("#define VECTOR_RANK_JACCARD ( 4 )")
  114. typedef struct tagDBCONTENTVECTOR {
  115. LONG lWeight;
  116. DWORD dwRankingMethod;
  117. } DBCONTENTVECTOR;
  118. typedef struct tagDBGROUPINFO {
  119. LCID lcid;
  120. } DBGROUPINFO;
  121. typedef struct tagDBPARAMETER {
  122. LPOLESTR pwszName;
  123. ITypeInfo * pTypeInfo;
  124. DB_NUMERIC * pNum;
  125. DBLENGTH cbMaxLength;
  126. DBPARAMFLAGS dwFlags;
  127. DBTYPE wType;
  128. } DBPARAMETER;
  129. cpp_quote("#define DBSETFUNC_NONE 0x0")
  130. cpp_quote("#define DBSETFUNC_ALL 0x1")
  131. cpp_quote("#define DBSETFUNC_DISTINCT 0x2")
  132. typedef struct tagDBSETFUNC {
  133. DWORD dwSetQuantifier;
  134. } DBSETFUNC;
  135. typedef struct tagDBSORTINFO {
  136. BOOL fDesc;
  137. LCID lcid;
  138. } DBSORTINFO;
  139. typedef struct tagDBTEXT {
  140. LPOLESTR pwszText;
  141. ULONG ulErrorLocator;
  142. ULONG ulTokenLength;
  143. GUID guidDialect;
  144. } DBTEXT;
  145. typedef struct tagDBLIKE {
  146. LONG lWeight;
  147. GUID guidDialect;
  148. } DBLIKE;
  149. cpp_quote("#define PROXIMITY_UNIT_WORD ( 0 )")
  150. cpp_quote("#define PROXIMITY_UNIT_SENTENCE ( 1 )")
  151. cpp_quote("#define PROXIMITY_UNIT_PARAGRAPH ( 2 )")
  152. cpp_quote("#define PROXIMITY_UNIT_CHAPTER ( 3 )")
  153. typedef struct tagDBCONTENTPROXIMITY {
  154. DWORD dwProximityUnit;
  155. ULONG ulProximityDistance;
  156. LONG lWeight;
  157. } DBCONTENTPROXIMITY;
  158. typedef struct tagDBPROBABILISTIC {
  159. LONG lWeight; // Weight of this node in tree
  160. float flK1; // K1 parameter in BM25
  161. float flK2; // K2 parameter in BM25 (must be 0)
  162. float flK3; // K3 parameter in BM25
  163. float flB; // b parameter in BM25
  164. } DBPROBABILISTIC;
  165. typedef struct tagDBRELEVANTDOCUMENT {
  166. LONG lWeight; // Weight of this node in the tree
  167. VARIANT vDocument; // Relevant document
  168. } DBRELEVANTDOCUMENT;
  169. typedef struct tagDBCOMMANDTREE {
  170. DBCOMMANDOP op;
  171. WORD wKind;
  172. struct tagDBCOMMANDTREE * pctFirstChild;
  173. struct tagDBCOMMANDTREE * pctNextSibling;
  174. [switch_type(WORD),switch_is(wKind)] union {
  175. [case(DBVALUEKIND_I8)] __int64 llValue;
  176. [case(DBVALUEKIND_UI8)] unsigned __int64 ullValue;
  177. [case(DBVALUEKIND_BOOL)] BOOL fValue;
  178. [case(DBVALUEKIND_UI1)] unsigned char uchValue;
  179. [case(DBVALUEKIND_I1)] signed char schValue;
  180. [case(DBVALUEKIND_UI2)] unsigned short usValue;
  181. [case(DBVALUEKIND_I2)] short sValue;
  182. [case(DBVALUEKIND_WSTR)] LPOLESTR pwszValue;
  183. [case(DBVALUEKIND_I4)] LONG lValue;
  184. [case(DBVALUEKIND_UI4)] ULONG ulValue;
  185. [case(DBVALUEKIND_R4)] float flValue;
  186. [case(DBVALUEKIND_R8)] double dblValue;
  187. [case(DBVALUEKIND_CY)] CY cyValue;
  188. [case(DBVALUEKIND_DATE)] DATE dateValue;
  189. [case(DBVALUEKIND_DBDATE)] DBDATE dbdateValue;
  190. [case(DBVALUEKIND_DBTIME)] DBTIME dbtimeValue;
  191. [case(DBVALUEKIND_ERROR)] SCODE scodeValue;
  192. [case(DBVALUEKIND_BSTR)] BSTR * pbstrValue;
  193. [case(DBVALUEKIND_COMMAND)] ICommand * pCommand;
  194. [case(DBVALUEKIND_IDISPATCH)] IDispatch * pDispatch;
  195. [case(DBVALUEKIND_MONIKER)] IMoniker * pMoniker;
  196. [case(DBVALUEKIND_ROWSET)] IRowset * pRowset;
  197. [case(DBVALUEKIND_IUNKNOWN)] IUnknown * pUnknown;
  198. [case(DBVALUEKIND_BYGUID)] DBBYGUID * pdbbygdValue;
  199. [case(DBVALUEKIND_COLDESC)] DBCOLUMNDESC * pcoldescValue;
  200. [case(DBVALUEKIND_ID)] DBID * pdbidValue;
  201. [case(DBVALUEKIND_LIKE)] DBLIKE * pdblikeValue;
  202. [case(DBVALUEKIND_CONTENT)] DBCONTENT * pdbcntntValue;
  203. [case(DBVALUEKIND_CONTENTSCOPE)] DBCONTENTSCOPE * pdbcntntscpValue;
  204. [case(DBVALUEKIND_CONTENTTABLE)] DBCONTENTTABLE * pdbcntnttblValue;
  205. [case(DBVALUEKIND_CONTENTVECTOR)] DBCONTENTVECTOR * pdbcntntvcValue;
  206. [case(DBVALUEKIND_CONTENTPROXIMITY)] DBCONTENTPROXIMITY * pdbcntntproxValue;
  207. [case(DBVALUEKIND_GROUPINFO)] DBGROUPINFO * pdbgrpinfValue;
  208. [case(DBVALUEKIND_PARAMETER)] DBPARAMETER * pdbparamValue;
  209. [case(DBVALUEKIND_PROPERTY)] DBPROPSET * pdbpropValue;
  210. [case(DBVALUEKIND_SETFUNC)] DBSETFUNC * pdbstfncValue;
  211. [case(DBVALUEKIND_SORTINFO)] DBSORTINFO * pdbsrtinfValue;
  212. [case(DBVALUEKIND_TEXT)] DBTEXT * pdbtxtValue;
  213. [case(DBVALUEKIND_VECTOR)] DBVECTOR * pdbvectorValue;
  214. [case(DBVALUEKIND_ARRAY)] SAFEARRAY * parrayValue;
  215. [case(DBVALUEKIND_VARIANT)] VARIANT * pvarValue;
  216. [case(DBVALUEKIND_GUID)] GUID * pGuid;
  217. [case(DBVALUEKIND_BYTES)] BYTE * pbValue;
  218. [case(DBVALUEKIND_STR)] char * pzValue;
  219. [case(DBVALUEKIND_NUMERIC)] DB_NUMERIC * pdbnValue;
  220. [case(DBVALUEKIND_DBTIMESTAMP)] DBTIMESTAMP * pdbtsValue;
  221. [case(DBVALUEKIND_BYREF)] void * pvValue;
  222. [case(DBVALUEKIND_PROBABILISTIC)] DBPROBABILISTIC * pdbprobValue;
  223. [case(DBVALUEKIND_RELEVANTDOCUMENT)] DBRELEVANTDOCUMENT * pdbreldocValue;
  224. } value;
  225. HRESULT hrError;
  226. } DBCOMMANDTREE;
  227. HRESULT FindErrorNodes(
  228. [in] const DBCOMMANDTREE * pRoot,
  229. [out] ULONG * pcErrorNodes,
  230. [out] DBCOMMANDTREE *** prgErrorNodes
  231. );
  232. HRESULT FreeCommandTree(
  233. [in] DBCOMMANDTREE ** ppRoot
  234. );
  235. HRESULT GetCommandTree(
  236. [out] DBCOMMANDTREE ** ppRoot
  237. );
  238. HRESULT SetCommandTree(
  239. [in] DBCOMMANDTREE ** ppRoot,
  240. [in] DBCOMMANDREUSE dwCommandReuse,
  241. [in] BOOL fCopy
  242. );
  243. }