crxSDK.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. /*
  2. Licensed Materials - Property of IBM
  3. IBM Cognos Products: crx
  4. (C) Copyright IBM Corp. 2003, 2010
  5. US Government Users Restricted Rights - Use, duplication or disclosure
  6. restricted by GSA ADP Schedule Contract with IBM Corp.
  7. */
  8. /* COPYRIGHT_DATA { 'YEAR':[2010, 2009, 2003], 'RELEASE':['colorado_wave1'], 'VISIBLE':'YES', 'COMPONENT':'crx' }*/
  9. /*All lines above the COPYRIGHT_DATA line will be replaced when copyright notices are generated. */
  10. // crxSDK.h
  11. //
  12. //
  13. // Extracted from several Cognos header files.
  14. //
  15. // -----------------------------------------------------------------
  16. // CCL types and definitions used by CRX report functions.
  17. // -----------------------------------------------------------------
  18. //
  19. #if !defined( CRX_SDK_SAMPLE_H )
  20. #define CRX_SDK_SAMPLE_H
  21. #include <stddef.h>
  22. #include <float.h>
  23. #include <limits.h>
  24. #include <stdlib.h>
  25. // ************************************************************************
  26. // * DO NOT Use these CCL types as return types for CRX report functions: *
  27. // ************************************************************************
  28. //
  29. // CCL_byte ;
  30. // CCL_uint8 ;
  31. // CCL_int8 ;
  32. // CCL_uint16 ;
  33. // CCL_int16 ;
  34. // CCL_uint32 ;
  35. // CCL_uint64 ;
  36. // CCL_float32 ;
  37. // CCL_char ;
  38. // CCL_widechar ;
  39. // CCL_strictest ;
  40. //
  41. // ************************************************************************
  42. // * Use instead: CCL_int32, CCL_int64 or CCL_float64 *
  43. // ************************************************************************
  44. //
  45. // -----------------------------------------------------------------
  46. /*
  47. * ---------------------------------------------------------------------------
  48. * ----------------------- Microsoft "C/C++" Compiler ------------------------
  49. * ---------------------------------------------------------------------------
  50. */
  51. #if defined( _MSC_VER )
  52. #include <stddef.h>
  53. #define CCL_TYPES_DEFINED
  54. typedef signed __int64 CCL_int64 ;
  55. typedef unsigned __int64 CCL_uint64 ;
  56. typedef long CCL_strictest ;
  57. #if defined(_WIN64) || defined(WIN64)
  58. typedef signed __int64 CCL_ssize ;
  59. #else
  60. typedef signed int CCL_ssize ;
  61. #endif
  62. #define CCL_INT64_LITERAL( _val ) _val##i64
  63. #define CCL_UINT64_LITERAL( _val ) _val##ui64
  64. #endif /* Microsoft "C/C++" Compiler */
  65. /*
  66. * ---------------------------------------------------------------------------
  67. * ------------------------- HP-UX aCC Complier ------------------------------
  68. * ---------------------------------------------------------------------------
  69. */
  70. #if defined( __hpux )
  71. #define CCL_TYPES_DEFINED
  72. typedef long long CCL_int64 ;
  73. typedef unsigned long long CCL_uint64 ;
  74. typedef double CCL_strictest ;
  75. typedef ssize_t CCL_ssize ;
  76. #endif /* HP-UX aCC Complier */
  77. /*
  78. * ---------------------------------------------------------------------------
  79. * ---------------------------- IBM Compiler ---------------------------------
  80. * ---------------------------------------------------------------------------
  81. */
  82. #if defined( __MVS__ )
  83. #include <sys/types.h>
  84. #endif
  85. #if ( (defined( _AIX ) && ( defined( __IBMCPP__ ) || defined( __IBMC__ ) )) || (defined( __MVS__ ) && ( defined( __IBMCPP__ ) || defined( __IBMC__ ) )))
  86. #define CCL_TYPES_DEFINED
  87. typedef long long CCL_int64 ;
  88. typedef unsigned long long CCL_uint64 ;
  89. typedef double CCL_strictest ;
  90. typedef ssize_t CCL_ssize ;
  91. #endif /* IBM Compiler */
  92. /*
  93. * ---------------------------------------------------------------------------
  94. * ---------------------------- Sun Pro Compiler -----------------------------
  95. * ---------------------------------------------------------------------------
  96. */
  97. #if defined( __sun )
  98. #include <sys/types.h>
  99. #define CCL_TYPES_DEFINED
  100. typedef long long CCL_int64 ;
  101. typedef unsigned long long CCL_uint64 ;
  102. typedef double CCL_strictest ;
  103. typedef ssize_t CCL_ssize ;
  104. #endif /* Sun Pro Compiler */
  105. /*
  106. * ---------------------------------------------------------------------------
  107. * -------------------------------- Tru64 ------------------------------------
  108. * ---------------------------------------------------------------------------
  109. */
  110. #if defined( __osf__ )
  111. #define CCL_TYPES_DEFINED
  112. typedef signed long CCL_int64 ;
  113. typedef unsigned long CCL_uint64 ;
  114. typedef double CCL_strictest ;
  115. typedef ssize_t CCL_ssize ;
  116. #endif /* AXPOSF */
  117. /*
  118. * ---------------------------------------------------------------------------
  119. * ---------------------------- GNU C/C++ Compiler ---------------------------
  120. * ---------------------------------------------------------------------------
  121. */
  122. #if defined( __GNUC__ )
  123. #define CCL_TYPES_DEFINED
  124. /*
  125. * Check __powerpc64__ before __powerpc__ since both are set for 64-bit
  126. */
  127. #if defined( __i386__ ) || defined( __x86_64__ ) || defined( __s390__ )
  128. typedef long long CCL_int64 ;
  129. typedef unsigned long long CCL_uint64 ;
  130. typedef double CCL_strictest ;
  131. typedef ssize_t CCL_ssize ;
  132. #elif defined( __powerpc__ ) || defined( __powerpc64__ )
  133. typedef long long CCL_int64 ;
  134. typedef unsigned long long CCL_uint64 ;
  135. typedef double CCL_strictest ;
  136. typedef ssize_t CCL_ssize ;
  137. #else
  138. # error CCLTypes.h not configured for GNU C/C++ on this platform
  139. #endif /* __i386__ */
  140. #endif /* __GNUC__ */
  141. /*
  142. * ---------------------------------------------------------------------------
  143. * --------------------------- All Platforms ---------------------------------
  144. * ---------------------------------------------------------------------------
  145. */
  146. #ifndef CCL_TYPES_DEFINED
  147. # error CCLTypes.h not configured for this platform
  148. #else
  149. # undef CCL_TYPES_DEFINED
  150. #endif /* CCL_TYPES_DEFINED */
  151. #include <time.h>
  152. typedef unsigned char CCL_byte ;
  153. typedef unsigned char CCL_uint8 ;
  154. typedef signed char CCL_int8 ;
  155. typedef unsigned short CCL_uint16 ;
  156. typedef signed short CCL_int16 ;
  157. typedef unsigned int CCL_uint32 ;
  158. typedef signed int CCL_int32 ;
  159. typedef float CCL_float32 ;
  160. typedef double CCL_float64 ;
  161. typedef char CCL_char ;
  162. typedef wchar_t CCL_widechar ;
  163. typedef signed int CCL_bool ;
  164. typedef size_t CCL_size ;
  165. typedef time_t CCL_time ;
  166. typedef void* CCL_handle;
  167. #if !defined( TRUE )
  168. #define TRUE 1
  169. #endif /* TRUE */
  170. #if !defined( FALSE )
  171. #define FALSE 0
  172. #endif /* FALSE */
  173. #ifndef CCL_INT64_LITERAL
  174. #define CCL_INT64_LITERAL( _val ) _val##LL
  175. #endif
  176. #ifndef CCL_UINT64_LITERAL
  177. #define CCL_UINT64_LITERAL( _val ) _val##ULL
  178. #endif
  179. #if !defined( CCL_size_npos )
  180. #define CCL_size_npos CCL_size(-1)
  181. #endif /* CCL_size_npos */
  182. //
  183. // ------------- CRX report function return value ---------------
  184. //
  185. typedef CCL_uint32 CCLDBColumnState;
  186. //
  187. // ----CCLDBColumnState may take any of these values ------------
  188. //
  189. #define CCL_DB_COLSTATE_OK 0x0000
  190. #define CCL_DB_COLSTATE_NULL 0x0001
  191. #define CCL_DB_COLSTATE_NA 0x0002
  192. #define CCL_DB_COLSTATE_DIVBYZERO 0x0004
  193. #define CCL_DB_COLSTATE_OVERFLOW 0x0008
  194. #define CCL_DB_COLSTATE_SECURITY 0x0010
  195. #define CCL_DB_COLSTATE_ERROR 0x0020
  196. #define CCL_DB_COLSTATE_NEW 0x0040
  197. #define CCL_DB_COLSTATE_SAMPLE 0x0080
  198. #define CCL_DB_COLSTATE_PENDING 0x0100
  199. #define CCL_DB_COLSTATE_DATATYPE_CHANGED 0x0200
  200. #define CCL_DB_CASTING_ERROR 0x0210
  201. #define CCL_DB_COLSTATE_UNKNOWN 0xFFFF
  202. // -----------------------------------------------------------------
  203. // CRX classes and definitions
  204. // -----------------------------------------------------------------
  205. //
  206. // ------------ Class: crxDataI forward declaration -------------
  207. //
  208. class crxDataI;
  209. //
  210. // ------------ CRX report function prototype -------------------
  211. //
  212. typedef CCLDBColumnState (*PF_CallFunction)
  213. ( void* result,
  214. CCL_uint32 resultsize,
  215. const crxDataI* context,
  216. void* arg1,
  217. void* arg2,
  218. void* arg3,
  219. void* arg4,
  220. void* arg5,
  221. void* arg6,
  222. void* arg7,
  223. void* arg8,
  224. void* arg9,
  225. void* arg10,
  226. void* arg11,
  227. void* arg12,
  228. void* arg13,
  229. void* arg14,
  230. void* arg15,
  231. void* arg16 );
  232. // -----------------------------------------------------------------
  233. // Definitions from the Expression Engine
  234. // -----------------------------------------------------------------
  235. //
  236. // ------------ Decimal size ------------------------------------
  237. //
  238. #define CRX_MAX_DECIMAL_BYTES (39)
  239. //
  240. // ------------ String size -------------------------------------
  241. //
  242. #define CRX_MAXIMUM_STR_CODEPOINTS (32767)
  243. /**
  244. * Day-time Precision
  245. */
  246. typedef enum {
  247. CCLIntervalUnknown = 0,
  248. CCLIntervalYear = 1,
  249. CCLIntervalMonth = 2,
  250. CCLIntervalDay = 3,
  251. CCLIntervalHour = 4,
  252. CCLIntervalMinute = 5,
  253. CCLIntervalSecond = 6,
  254. CCLIntervalYearToMonth = 7,
  255. CCLIntervalDayToHour = 8,
  256. CCLIntervalDayToMinute = 9,
  257. CCLIntervalDayToSecond = 10,
  258. CCLIntervalHourToMinute = 11,
  259. CCLIntervalHourToSecond = 12,
  260. CCLIntervalMinuteToSecond = 13,
  261. lastCCLIntervalQualifier
  262. } CCLIntervalQualifier;
  263. // DATE
  264. typedef CCL_uint32 CCLDate;
  265. /**
  266. * DATE2
  267. */
  268. typedef struct {
  269. CCL_uint16 year;
  270. CCL_uint8 month;
  271. CCL_uint8 day;
  272. } CCLDate2;
  273. // Time
  274. typedef CCL_uint32 CCLTime;
  275. /**
  276. * TIME2
  277. */
  278. typedef struct {
  279. CCL_uint8 hour;
  280. CCL_uint8 minute;
  281. CCL_uint8 second;
  282. CCL_uint32 fSecond;
  283. } CCLTime2;
  284. /**
  285. * TIME WITH TIME ZONE
  286. */
  287. typedef struct {
  288. CCL_uint8 hour;
  289. CCL_uint8 minute;
  290. CCL_uint8 second;
  291. CCL_uint32 fSecond;
  292. CCL_int16 displacement;
  293. } CCLTimeTZ;
  294. // Will be deprecated soon
  295. /**
  296. * DATETIME
  297. */
  298. //typedef struct {
  299. // CCLDate date;
  300. // CCLTime time;
  301. //} CCLDateTime;
  302. /**
  303. * TIMESTAMP2
  304. */
  305. typedef struct {
  306. CCL_uint16 year;
  307. CCL_uint8 month;
  308. CCL_uint8 day;
  309. CCL_uint8 hour;
  310. CCL_uint8 minute;
  311. CCL_uint8 second;
  312. CCL_uint32 fSecond;
  313. } CCLTimestamp2;
  314. /**
  315. * TIMESTAMP WITH TIME ZONE
  316. */
  317. typedef struct {
  318. CCL_uint16 year;
  319. CCL_uint8 month;
  320. CCL_uint8 day;
  321. CCL_uint8 hour;
  322. CCL_uint8 minute;
  323. CCL_uint8 second;
  324. CCL_uint32 fSecond;
  325. CCL_int16 displacement;
  326. } CCLTimestampTZ;
  327. /**
  328. * YEAR-MONTH INTERVAL
  329. */
  330. typedef struct {
  331. CCL_bool isNegative;
  332. CCL_uint32 year;
  333. CCL_uint32 month;
  334. } CCLIntervalYM;
  335. // Will be deprecated soon
  336. ///**
  337. // * INTERVAL (DAY-TIME INTERVAL)
  338. // */
  339. //typedef struct CCLInterval {
  340. // CCL_int32 days;
  341. // CCLTime time;
  342. //} CCLInterval;
  343. /**
  344. * INTERVAL2 (DAY-TIME INTERVAL)
  345. */
  346. typedef struct {
  347. CCL_bool isNegative;
  348. CCL_uint32 day;
  349. CCL_uint32 hour;
  350. CCL_uint32 minute;
  351. CCL_uint32 second;
  352. CCL_uint32 fSecond;
  353. } CCLInterval2;
  354. #endif