ORACL.H
上传用户:ynjin1970
上传日期:2014-10-13
资源大小:6438k
文件大小:88k
源码类别:

中间件编程

开发平台:

Visual C++

  1. /* Copyright (c) Oracle Corporation 2000.  All Rights Reserved */
  2. /*
  3.     Please see the online help (oraclec.hlp) 
  4. for documentation of these classes.
  5. */
  6. /*
  7.     Oracle Objects for OLE     C++ Classes
  8.     
  9.     This file is the header for the all classes.  That is, all the
  10.     classes except OBound and OBinder (which use the obound.h header)
  11.                            
  12.     CREATED    ********   11/22/94
  13.     RWOOLARD MODIFIED 03/20/95
  14.      bug# 262914 *ErrorText should return const char *
  15.      262723 Added overloaded OParameter.Add(..., OValue)
  16.     PCHARI      MODIFIED        03/19/98
  17. bug#    624443  *NT 3.5.1 does not support CoInitializeEx
  18. and so this fix to explicitly link with ole32.dll
  19. MLAKSHMI MODIFIED        01/06/99
  20. changed the OTYPE_ROWID value to 104 from 11
  21. PCHARI MODIFIED 06/03/99
  22.      bug# 806756 Added critical section object
  23. CSHAY       MODIFIED    01/12/00
  24.             Oracle 8i support
  25. */
  26. #ifndef ORACL_ORACLE
  27. #define ORACL_ORACLE
  28. // compiler specific defines
  29. #ifdef WIN32
  30.   #define  __huge
  31.   #define OHUGESP
  32.   #ifdef _MSC_VER
  33.   #ifdef OORACLMBUILD
  34.  #define OEXPORT  __declspec(dllexport)
  35.   #else
  36.          #define OEXPORT  __declspec(dllimport)
  37.       #endif      
  38.   #endif   // _MSC_VER
  39.   #ifdef __BORLANDC__
  40.      #define OEXPORT _export
  41.   #endif     // __BORLANDC__
  42. #else     // WIN16
  43.   #define OEXPORT _export
  44.   #define OHUGESP
  45. #endif    //WIN32
  46. #ifndef OEXPORT
  47. #define OEXPORT
  48. #define OHUGESP
  49. #endif
  50. #include "windows.h"
  51. #ifdef WIN32
  52. # ifdef ORAANSI
  53. #  include <ole2.h>
  54. #  include <winnls.h>
  55. # endif
  56. #else
  57. # include <ole2.h>
  58. # include <dispatch.h>
  59. # ifdef _CID_MS15
  60. #  define OLECHAR char
  61. # endif
  62. #endif
  63. // handy boolean type
  64. typedef int oboolean;
  65. // simple success return value
  66. typedef int oresult;
  67. // oresults can have one of the following values
  68. #define OSUCCESS 0
  69. #define OFAILURE 101
  70. // error numbers returned by the ErrorNumber method.
  71. // ----- error numbers
  72. #define OERROR_NONE 0 // there isn't an error
  73. #define OERROR_NOINTER 11 // we couldn't get a needed interface
  74. #define OERROR_MEMORY 12 // memory allocation problem              
  75. #define OERROR_BADERR 13 // error in error handling (!)
  76. #define OERROR_INVPARENT 14 // parent object on open is invalid (not open)
  77. #define OERROR_SYSTEM 15    // some system error
  78. #define OERROR_NOTOPEN 16   // attempt to use unopened object
  79. #define OERROR_BADARG 17    // bad argument to routine
  80. #define OERROR_INVRECORD 18 // the current record is invalid
  81. #define OERROR_BADTYPE 19   // invalid operation on an Oracle data type
  82. #define OERROR_ADVISEULINK 4096 // not an advisory connection
  83. #define OERROR_DBCONNECT 4097 // connection not made
  84. #define OERROR_POSITION 4098 // invalid database position
  85. #define OERROR_NOFIELDNAME 4099 // field not found
  86. #define OERROR_NOFIELDINDEX 4100 // invalid field index
  87. #define OERROR_TRANSIP 4101 // transaction already in progress
  88. #define OERROR_SCHEMAERR 4102 // error retreiving table definition
  89. #define OERROR_ORLONERR 4103 // unable to make connection
  90. #define OERROR_TRANSNIPC 4104 // commit when no transaction 
  91. #define OERROR_TRANSNIPR 4105 // rollback when no transaction
  92. #define OERROR_NODSET 4106     // no such dynaset attached to connection
  93. #define OERROR_INVROWNUM 4108 // invalid row reference
  94. #define OERROR_TEMPFILE 4109 // error creating temporary file
  95. #define OERROR_DUPSESSION 4110 // duplicate session name
  96. #define OERROR_NOSESSION 4111     // no such session on detach
  97. #define OERROR_NOOBJECTN 4112       // no object with specified name
  98. #define OERROR_DUPCONN 4113 // duplicate connection
  99. #define OERROR_NOCONN 4114     // no such connection on detach
  100. #define OERROR_BFINDEX 4115 // invalid field index
  101. #define OERROR_CURNREADY 4116       // cursor not ready
  102. #define OERROR_NOUPDATES 4117       // updates not allowed
  103. #define OERROR_NOTEDITING 4118      // not currently editing
  104. #define OERROR_DATACHANGE 4119 // data has changed since last read
  105. #define OERROR_NOBUFMEM 4120 // no memory for binding buffers
  106. #define OERROR_INVBKMRK 4121     // invalid bookmark
  107. #define OERROR_BNDVNOEN 4122 // bind variable not enabled
  108. #define OERROR_DUPPARAM 4123 // duplicate parameter name
  109. #define OERROR_INVARGVAL 4124 // invalid argument value
  110. #define OERROR_INVFLDTYPE 4125 // invalid field type
  111. #define OERROR_NOTIMPL 4126 // operation not implemented
  112. #define OERROR_TRANSFORUP 4127     // For Update detected, no transaction
  113. #define OERROR_NOTUPFORUP 4128      // For Update detected, not updatable
  114. #define OERROR_TRANSLOCK 4129 // Commit/Rollback, but trans locked
  115. #define OERROR_CACHEPARM 4130 // Invalid cache parameter
  116. #define OERROR_FLDRQROWID 4131    // Field processing requires ROWID
  117. #define OERROR_OUTOFMEMORY 4132     // Out of Memory
  118. #define OERROR_POINTER 4133     // Invalid pointer
  119. #define OERROR_INVNUMBER 4134 // Invalid number
  120. #define OERROR_MAXSIZE 4135     // Maximum size execeeded.
  121. #define OERROR_INVDIMENSION 4136 // Invalid Dimension
  122. #define OERROR_MAXBUFFER 4137 // Maximum buffer exceeds 32512 bytes.
  123. #define OERROR_ARRAYSIZ 4138 // Array elements not same size
  124. // Find Methods parser errors
  125. #define OERROR_STACK_OVER 4496 // Parser : Stack Overflow
  126. #define OERROR_SYNTAX ERROR 4497 // Parser : Syntax Error near
  127. #define OERROR_MISPLACED_PAREN 4498 // Parser : Misplaced parentheses
  128. #define OERROR_MISPLACED_QUOTE 4499 // Parser : Misplaced quotation marks
  129. #define OERROR_MISSING PAREN 4500 // Parser : WARNING - Missing closing Parenthesis
  130. #define OERROR_EXPECTED_PAREN 4501 // Parser : Usually open parentheses expected
  131. #define OERROR_PARSER_UNKNOWN 4502 // Parser : Unknown parser error condition
  132. #define OERROR_INVALID_FUNCTION 4503// Parser : Syntax not supported
  133. #define OERROR_INVALID_COLUMN 4504 // Parser : Invalid Column Name
  134. #define OERROR_MAX_TOKEN 4505 // Parser : Maximum Token size exceeded
  135. #define OERROR_PARSER_DATA_TYPE 4506// Parser : Unsupported data type
  136. #define OERROR_UNEXPECTED_TOKEN 4507// Parser : Unexpected token found
  137. #define OERROR_END_OF_CLAUSE 4508 // Parser : Unexpected end of clause
  138. // Find Methods runtime errors
  139. #define OERROR_INVALID_INSTR 4516 // Runtime : Internal Error : Invalid Instruction
  140. #define OERROR_STACK_ERROR 4517 // Runtime : Internal Error : Stack over/under-flow
  141. #define OERROR_CONVERT_TYPES 4518 // Runtime : Invalid type conversion
  142. #define OERROR_RUNTIME_DATA_TYPE 4519 // Runtime : Invalid datatype
  143. #define OERROR_INVALID_SQL_ARG 4520 // Runtime : SQL function missing argument"
  144. #define OERROR_INVALID_COMPARE 4521 // Runtime : Invalid comparison
  145. #define OERROR_SELECT_DUAL 4522 // Runtime : Select from dual failed
  146. #define OERROR_DUAL_DATATYPE 4523 // Runtime : Invalid datatype in Select from dual
  147. #define OERROR_ECURSOR 8192 // cannot create cursor
  148. #define OERROR_FETCHERR 8193     // error fetching field
  149. #define OERROR_BINDERR 8194 // output data binding error
  150. #define OERROR_SQLERR 8195 // error in SQL statement
  151. #define OERROR_ESQLEXEC 8196     // SQL execution error
  152. #define OERROR_COMERR 8197 // error during commit
  153. #define OERROR_ROLERR 8198 // error during rollback
  154. #define OERROR_OPTERR 8299 // error setting options
  155. #define OERROR_CONNERR 8200 // unable to make connection
  156. #define OERROR_RDBMSVER 8201 // Database version not available
  157. //object and ref errors
  158. #define OERROR_NOOBJECT 4796 //Creating Oracle object instance in client side object cache failed
  159. #define OERROR_OBINDERR 4797 //Binding  Oracle object instance to the SQL statement failed
  160. #define OERROR_NOATTRNAME 4798 //Getting attribute name of Oracle object instance failed
  161. #define OERROR_NOATTRINDEX 4799 //Getting attribute index of Oracle object instance failed
  162. #define OERROR_INVINPOBJECT 4801 //Invalid input object type for binding operation
  163. #define OERROR_BAD_INDICATOR 4802 //Fetched Oracle Object instance comes with invalid indicator structure
  164. #define OERROR_OBJINSTNULL 4803 //Operation on NULL Oracle object instance failed. 
  165. #define OERROR_REFNULL 4804 //Pin Operation on NULL  Ref value failed. 
  166. //lob errors
  167. #define OERROR_INVPOLLPARAMS 4896 //Invalid amount and chunksize specified for LOB read/write operation.
  168. #define OERROR_INVSEEKPARAMS 4897 //Invalid seek value is specified for LOB read/write operation.
  169. #define OERROR_LOBREAD 4898 //Read operation failed
  170. #define OERROR_LOBWRITE 4899 //Write operation failure 
  171. #define OERROR_INVLOBLEN 4902 //Invalid buffer length for LOB write operation
  172. #define OERROR_NOEDIT 4903 //Write,Trim ,Append,Copy operation is allowed outside the dynaset edit
  173. #define OERROR_INVINPUTLOB 4904 //Invalid input LOB for bind operation
  174. #define OERROR_NOEDITONCLONE 4905 //Write,Trim,Append,Copy is not allowed for clone LOB object
  175. #define OERROR_LOBFILEOPEN 4906 //Specified file could not be opened in LOB operation 
  176. #define OERROR_LOBFILEIOERR 4907 //File Read or Write failed in LOB Operation.
  177. #define OERROR_LOBNULL 4908 //Operation on NULL LOB has failed. 
  178. //aq errors
  179. #define OERROR_AQCREATEERR 4996 //Error creating AQ object
  180. #define OERROR_MSGCREATEERR 4997 //Error creating AQMsg object 
  181. #define OERROR_PAYLOADCREATEERR 4998//Error creating Payload object
  182. #define OERROR_MAXAGENTS 4998     //Maximum number of subscribers exceeded. 
  183. #define OERROR_AGENTCREATEERR 5000 //Error creating AQ Agent
  184. //collection errors
  185. #define OERROR_COLLINSTNULL 5196 //Operation on NULL Oracle collection failed. See IsNull property on OraCollection
  186. #define OERROR_NOELEMENT 5197 //Element does not exist for given index
  187. #define OERROR_INVINDEX 5198 //Invalid collection index is specified
  188. #define OERROR_NODELETE 5199 //Delete operation is not supported for VARRAY collection type
  189. // server data types
  190. #define OTYPE_VARCHAR2 1
  191. #define OTYPE_NUMBER 2
  192. #define OTYPE_SINT 3
  193. #define OTYPE_FLOAT 4
  194. #define OTYPE_STRING    5
  195. #define OTYPE_LONG 8
  196. #define OTYPE_VARCHAR 9
  197. #define OTYPE_DATE 12
  198. #define OTYPE_RAW 23
  199. #define OTYPE_LONGRAW 24
  200. #define OTYPE_UINT      68
  201. #define OTYPE_LONGVARRAW 95
  202. #define OTYPE_CHAR 96
  203. #define OTYPE_CHARZ 97
  204. #define OTYPE_CURSOR    102
  205. #define OTYPE_ROWID 104
  206. #define OTYPE_MSLABEL 106
  207. #define OTYPE_OBJECT 108
  208. #define OTYPE_REF 110
  209. #define OTYPE_COLL 122
  210. #define OTYPE_BLOB 113
  211. #define OTYPE_CLOB 112
  212. #define OTYPE_BFILE 114
  213. #define OTYPE_VARRAY 247
  214. #define OTYPE_TABLE 248
  215. #define OTYPE_METADATA 999 
  216. //additional datatypes for object attributes
  217. #define OTYPE_DECIMAL 7               
  218. #define OTYPE_REAL 21
  219. #define OTYPE_DOUBLE 22
  220. #define OTYPE_UNSIGNED8   23  
  221. #define OTYPE_RAW 23 
  222. #define OTYPE_UNSIGNED16  25
  223. #define OTYPE_UNSIGNED32  26  
  224. #define OTYPE_SIGNED8   27
  225. #define OTYPE_SIGNED16   28
  226. #define OTYPE_SIGNED32   29
  227. #define OTYPE_PTR 32        
  228. #define OTYPE_OPAQUE 58 
  229. #define OTYPE_UINT 68
  230. #define OTYPE_LONGVARRAW 95       
  231. #define OTYPE_RSLT 116        
  232. #define OTYPE_SYSFIRST 228
  233. #define OTYPE_SYSLAST 235
  234. #define OTYPE_OCTET 245
  235. #define OTYPE_SMALLINT 246       
  236. #define OTYPE_OTMLAST 320
  237. // edit modes for dynaset
  238. #define ODYNASET_EDIT_NOEDIT 0
  239. #define ODYNASET_EDIT_EDITING 1
  240. #define ODYNASET_EDIT_NEWRECORD 2
  241. // parameter io types
  242. #define OPARAMETER_INVAR 1
  243. #define OPARAMETER_OUTVAR 2
  244. #define OPARAMETER_INOUTVAR 3
  245. // parameter status flags
  246. #define OPARAMETER_STATUS_IN 1
  247. #define OPARAMETER_STATUS_OUT 2
  248. #define OPARAMETER_STATUS_AUTOENABLED 4
  249. #define OPARAMETER_STATUS_ENABLED 8
  250. // Options for creating database
  251. #define ODATABASE_DEFAULT 0
  252. #define ODATABASE_PARTIAL_INSERT 1
  253. #define ODATABASE_ORAMODE 1 // Same as PARTIAL_INSERT 
  254. #define ODATABASE_EDIT_NOWAIT 2
  255. #define ODATABASE_NO_REFETCH 4
  256. #define ODATABASE_NONBLOCK 8
  257. #define ODATABASE_ENLIST_IN_MTS 16
  258. // Options for creating dynaset
  259. #define ODYNASET_DEFAULT 0
  260. #define ODYNASET_NOBIND 1
  261. #define ODYNASET_KEEP_BLANKS 2
  262. #define ODYNASET_READONLY 4
  263. #define ODYNASET_NOCACHE 8
  264. #define ODYNASET_PARTIAL_INSERT 16
  265. #define ODYNASET_ORAMODE 16
  266. #define ODYNASET_NO_REFETCH 32
  267. #define ODYNASET_NO_MOVEFIRST 64
  268. #define ODYNASET_DIRTY_WRITE 128
  269. #define ODYNASET_VIEW_LONG 256 
  270. // Options for creating  SqlStmt object
  271. #define  OSQLSTMT_DEFAULT  0
  272. #define  OSQLSTMT_NOBIND   1
  273. #define OSQLSTMT_FAILEXEC  2
  274. // Threading Model Options
  275. #define OSTARTUP_MULTITHREADED 0
  276. #define OSTARTUP_APARTMENTTHREADED 1
  277. // definitions of actions used in the callback routines
  278. #define OADVISE_MOVE_FIRST 1
  279. #define OADVISE_MOVE_NEXT 2
  280. #define OADVISE_MOVE_PREV 3
  281. #define OADVISE_MOVE_LAST 4
  282. #define OADVISE_FIND_FIRST 5
  283. #define OADVISE_FIND_NEXT 6
  284. #define OADVISE_FIND_PREV 7
  285. #define OADVISE_FIND_LAST 8
  286. #define OADVISE_DELETE 9
  287. #define OADVISE_ADDNEW 10
  288. #define OADVISE_REFRESH 11
  289. #define OADVISE_MOVE_TOMARK 12
  290. #define OADVISE_ROLLBACK 13
  291. #define OADVISE_UPDATE 18
  292. #define OADVISE_MOVE_NEXTN 20
  293. #define OADVISE_MOVE_PREVN 21
  294. #define OADVISE_MOVETO 22
  295. #define OADVISE_FOUNDLAST 151
  296. #define OADVISE_OTHER 99
  297. //Lob 
  298. #define OLOB_ONE_PIECE 0
  299. #define OLOB_FIRST_PIECE 1
  300. #define OLOB_NEXT_PIECE 2
  301. #define OLOB_LAST_PIECE 3
  302. #define OLOB_SUCCESS 0
  303. #define OLOB_NEED_DATA 99
  304. //AQ 
  305. #define OAQ_BOTH 0
  306. #define OAQ_ENQUEUE 1
  307. #define OAQ_DEQUEUE 2
  308. #define OAQ_ENQ_IMMEDIATE 1
  309. #define OAQ_ENQ_ON_COMMIT 2
  310. #define OAQ_NULL_MSGID 0
  311. #define OAQ_DQ_BROWSE 1
  312. #define OAQ_DQ_LOCKED 2
  313. #define OAQ_DQ_REMOVE 3
  314. #define OAQ_DQ_FIRST_MSG 1
  315. #define OAQ_DQ_NEXT_TRANS 2
  316. #define OAQ_DQ_NEXT_MSG 3
  317. #define OAQ_DQ_WAIT_FOREVER -1
  318. #define OAQ_DQ_NOWAIT 0
  319. #define OAQ_MSG_NO_DELAY 0
  320. #define OAQ_MSG_PRIORITY_NORMAL 0
  321. #define OAQ_MSG_PRIORITY_HIGH -10
  322. #define OAQ_MSG_PRIORITY_LOW 10
  323. #define OAQ_MSG_NO_EXPIRE 0
  324. #define OAQ_MAX_AGENTS 10
  325. //Ref
  326. #define OREF_NO_LOCK 1
  327. #define OREF_EXCLUSIVE_LOCK 2
  328. #define OREF_NOWAIT_LOCK 3
  329. #define OREF_READ_ANY 3
  330. #define OREF_READ_RECENT 4
  331. #define OREF_READ_LATEST 5
  332. //MetaData
  333. #define OMD_TABLE 1
  334. #define OMD_VIEW 2
  335. #define OMD_COLUMN 3
  336. #define OMD_COLUMN_LIST 4
  337. #define OMD_TYPE 5
  338. #define OMD_TYPE_ATTR 6
  339. #define OMD_TYPE_ATTR_LIST 7
  340. #define OMD_TYPE_METHOD 8
  341. #define OMD_TYPE_METHOD_LIST 9
  342. #define OMD_TYPE_ARG 10
  343. #define OMD_TYPE_RESULT 11
  344. #define OMD_PROC 12
  345. #define OMD_FUNC 13
  346. #define OMD_ARG 14
  347. #define OMD_ARG_LIST 15
  348. #define OMD_PACKAGE 16
  349. #define OMD_SUBPROG_LIST 17
  350. #define OMD_COLLECTION 18
  351. #define OMD_SYNONYM 19
  352. #define OMD_SEQENCE 20
  353. #define OMD_SCHEMA 21
  354. #define OMD_OBJECT_LIST 22
  355. #define OMD_SCHEMA_LIST 23
  356. #define OMD_DATABASE 24
  357. // definitions for UpdateSource sources
  358. enum updsrcs {SYSDATE, TIMESTAMP, DATESTAMP, FUNCTION, OTHFIELD, STRLITERAL};
  359. // forward references
  360. class OEXPORT OSession;
  361. class OEXPORT OSessionCollection;
  362. class OEXPORT OClient;
  363. class OEXPORT OConnection;
  364. class OEXPORT OConnectionCollection;
  365. class OEXPORT ODatabase;
  366. class OEXPORT ODynaset;
  367. class OEXPORT ODynasetMark;
  368. class OEXPORT OField;
  369. class OEXPORT OFieldCollection;
  370. class OEXPORT OAdvise;
  371. class OEXPORT OParameter;
  372. class OEXPORT OParamArray;
  373. class OEXPORT OParameterCollection;
  374. class OEXPORT OSqlStmt;
  375. class OEXPORT OMDAttribute;
  376. class OEXPORT OMetaData;
  377. class OOLEvar;
  378. class OEXPORT OObject;
  379. class OEXPORT ORef;
  380. class OEXPORT OCollection;
  381. class OEXPORT OBlob;
  382. class OEXPORT OClob;
  383. class OEXPORT OBfile;
  384. class OEXPORT OServer;
  385. class OEXPORT OSnapshotID;
  386. class OEXPORT OValue;
  387. class OEXPORT OAQ;
  388. class OEXPORT OAQMsg;
  389. class OEXPORT OAQAgent;
  390. class OEXPORT OAQCallback;
  391. class OEXPORT OException;
  392. // exception specification not supported by MSVC yet
  393. #pragma warning( disable : 4290 ) 
  394. // ------------------------------------------------------------
  395. // functions that are not class methods
  396. // routine to initialize library.  Should be called once at startup 
  397. // returns TRUE if successful, FALSE if not
  398. oboolean OEXPORT OStartup(int ThreadingModel = OSTARTUP_APARTMENTTHREADED); // Threading Model Options
  399. // routine to close down the library.  Should be called once
  400. // at application shutdown
  401. void OEXPORT OShutdown(void);
  402. class COraCriticalSection 
  403. {
  404. public:
  405. COraCriticalSection()
  406. {
  407. InitializeCriticalSection (&m_CritSect);
  408. }
  409. ~COraCriticalSection()
  410. {
  411. DeleteCriticalSection (&m_CritSect);
  412. }
  413. void Lock()
  414. {
  415. EnterCriticalSection(&m_CritSect);
  416. }
  417. void Unlock()
  418. {
  419. LeaveCriticalSection(&m_CritSect);
  420. }
  421. private:
  422. CRITICAL_SECTION m_CritSect;
  423. };
  424. // ----- OOracleObject -----------------------------------------------
  425. // base object class
  426. //   This class is the base for the OO4W classes.  By itself
  427. //   it provides the error reporting interface and helps with
  428. //   the various copying mechanisms
  429. class OEXPORT OOracleObject
  430. {
  431. friend ORef;
  432. public:
  433.     // constructors & destructors
  434.     OOracleObject(void);
  435.     OOracleObject(const OOracleObject &other);
  436.     virtual ~OOracleObject(void);
  437.     
  438.     // overloaded operators
  439.     OOracleObject &operator=(const OOracleObject &other);
  440.     int operator==(const OOracleObject &other) const;
  441.     int operator!=(const OOracleObject &other) const;
  442.     
  443.     // properties
  444.     virtual oboolean IsOpen(void) const;
  445.     
  446.     // Error handling methods
  447.     long  ErrorNumber(void) const; // return error "number"
  448.     
  449.     const char *LookupErrorText(long errnum) const;  // get error text for given error number
  450.     const char *GetErrorText(void) const;  // get description of last error
  451.     // set error information
  452.     void  ErrorReset(void) const;  // reset error state to "no error"
  453.     // SetOtherError and SetInternalError are for internal use only
  454.     void  SetOtherError(void *otheri) const;
  455.     void  SetInternalError(long errnum) const;
  456.     
  457.     void *Internal(void) const;
  458. void *DInternal() const;
  459.     
  460. protected:
  461.     // copy and cleanup routines (used to implement destructor, constructor, =)
  462.     virtual oresult Copy(const OOracleObject &other);
  463.     virtual oresult Cleanup(void);
  464.     
  465.     // access to object interface
  466. oresult SetObjectInterface(void *obji, oboolean geterror = TRUE);
  467. oresult SetObjectInterface(void *dp, void *id);
  468.     oresult ActionStart(void) const;  // start of most of the methods
  469.     oresult ActionGetStart(const OOracleObject *nobj) const;
  470. OOracleObject(void *dp, void *id);
  471. OOracleObject(void *pImpl);
  472. private:
  473.     void   *m_obji;   // pointer to object interface
  474.     void   *m_erri;   // pointer to error interface of object
  475.     void   *m_errotheri;  // pointer to error interface on other object
  476.     char   *m_lasterrstring;  // last error string we've handled
  477.     
  478.     int     m_errstate;   // where did the error come from (values in implementation)
  479. long    m_errno;  // error number (see below, or negative for internal values)
  480. };
  481. // ----- OOracleCollection -----------------------------------------------
  482. // general set class
  483. // This is a base class used for collections of sessions, connections and fields
  484. // It has no utility on its own.  Routines to get items from the collection are
  485. // in the subclasses
  486. class OEXPORT OOracleCollection : public OOracleObject
  487. {
  488. public:
  489.     // constructors & destructors
  490.     OOracleCollection(void);
  491.     OOracleCollection(const OOracleCollection &other);
  492.     ~OOracleCollection(void);
  493.     
  494.     // Open & Close
  495.     oresult Close(void);   // close the set
  496.     
  497.     // overloaded operators
  498.     OOracleCollection &operator=(const OOracleCollection &other);
  499.     
  500.  // # of items in the set
  501.     long   GetCount(void) const;
  502. protected:
  503.     oresult OpenSetHelper(void *idisp, void *otheri, unsigned char stype);  // finish the work of opening the set
  504.     void  *GetItem(unsigned char stype, int index) const;
  505.     void  *GetItem(oboolean oflag, const char *name) const;
  506. private:
  507.     unsigned char m_settype;
  508.     
  509.  // internal helper routines
  510.     oresult Cleanup(void);
  511. oresult Copy(const OOracleCollection &other);
  512. }                                                       ;
  513. // ----- OSession -----------------------------------------------
  514. class OEXPORT OSession : public OOracleObject
  515. {
  516. public:
  517.     // construction & destruction
  518.     OSession(void);
  519.     OSession(const OSession &other); // copy constructor
  520.     OSession(const char *sname);     // construct & open (NULL sname means open default session)
  521. ~OSession(void);
  522.     
  523.     // open the session
  524.     oresult Open(void);               // open the default session
  525.     oresult Open(const char *sname);  // open a new session with specific name
  526.     oresult Close(void);
  527.     
  528.     // Getting other objects
  529.     OConnectionCollection GetConnections(void) const;
  530.     OClient GetClient(void) const; 
  531.     static OSession GetNamedSession(const char *sname);
  532.     // overloaded operators
  533.     OSession &operator=(const OSession &other);
  534. oresult CreateDatabasePool
  535.     (long initSize, long maxSize, long timeOut, 
  536.  const char *dbname, const char *username, 
  537.  const char *pwd,long options = ODATABASE_DEFAULT);
  538. ODatabase OSession::GetDatabaseFromPool(long waitTime);
  539. oresult OSession::GetUserPwd(const char *username, const char *pwd, char **retname);
  540. oresult OSession::DestroyDatabasePool();
  541. long OSession::GetDbPoolMaxSize() const;
  542. long OSession::GetDbPoolCurrentSize() const; 
  543. long OSession::GetDbPoolInitialSize() const;
  544. long OSession::GetDbPoolUsedCount() const;
  545.     // error handling
  546.     long ServerErrorNumber(void) const;
  547.     const char *GetServerErrorText(void) const;
  548.     oresult ServerErrorReset(void);
  549.     
  550.     // get properties
  551.     const char       *GetName(void) const;   // returns session name 
  552.     const char       *GetVersion(void) const;  // returns version of Oracle Objects
  553.     
  554.     // transaction operations
  555.     oresult  BeginTransaction(void);  // start a transaction
  556.     oresult  Commit(oboolean startnew = FALSE);   // commit (may start new transaction)
  557.     oresult  Rollback(oboolean startnew = FALSE); // rolls back transaction (may start new transaction)
  558.     oresult  ResetTransaction(void);  // unconditionally rollback (no advisories)
  559.    
  560. //new to 8.1.6
  561. oresult OSession::ChangePassword(const char *dbalias, const char *username, const char *current_pass, const char *new_pass) const;
  562.     
  563. // function used by other classes to construct OSession objects (don't call this!)
  564.     oresult OpenHelper(void *idisp, void *otheri);
  565.     // Memory Management Routines
  566.     oresult  MemoryManager (int flags = -1);
  567.     oresult  MemoryLog (int flags = -1);
  568. private:
  569. char      *m_name;
  570. char      *m_errtext;
  571.     char      *m_version;
  572.     
  573.     // internal helper routines
  574.     oresult Cleanup(void);
  575.     oresult Copy(const OSession &other);
  576.     
  577. };
  578. // ----- OSessionCollection -----------------------------------------------
  579. class OEXPORT OSessionCollection : public OOracleCollection
  580. {
  581. public:
  582.     OSession GetSession(int index) const;
  583.     // function used by other classes to construct OSessionCollection objects (don't call this!)
  584.     oresult OpenHelper(void *idisp, void *otheri);  // finish the work of opening the set
  585. };
  586. // ----- ODatabase -----------------------------------------------
  587. class OEXPORT ODatabase : public OOracleObject
  588. {
  589. public:
  590.     // construction & destruction
  591.     ODatabase(void);
  592.     ODatabase(const ODatabase &other);
  593.     ~ODatabase(void); 
  594.     
  595.     // construct & open
  596.  ODatabase(const OSession &dbsess, const char *dbname, const char *username,
  597. const char *pwd, long options = ODATABASE_DEFAULT);
  598.  ODatabase(const char *dbname, const char *username, const char *pwd,
  599. long options = ODATABASE_DEFAULT);
  600.  ODatabase(const OServer &server, const char *username, const char *pwd,
  601. long options = ODATABASE_DEFAULT);
  602.  // for the Open calls, if pwd is NULL it is assumed that username contains username/password
  603.  // open a database on a new session (implicitly creates a session)
  604.  oresult Open(const char *dbname, const char *username, const char *pwd,
  605. long options = ODATABASE_DEFAULT);
  606.  // open a database on an existing session
  607.  oresult Open(const OSession &dbsess, const char *dbname,
  608. const char *username, const char *pwd,
  609. long options = ODATABASE_DEFAULT);
  610.  oresult Open(const OServer &server, const char *username, const char *pwd,
  611. long options = ODATABASE_DEFAULT);
  612.  oresult Close(void);
  613.  // getting other objects
  614.  OSession GetSession(void) const;
  615.  OConnection GetConnection(void) const;
  616.  OParameterCollection GetParameters(void) const;
  617.     // overloaded operators
  618.     ODatabase &operator=(const ODatabase &other);
  619.     
  620.     // execute an arbitrary SQL statement
  621.     oresult ExecuteSQL(const char *sqlstmt) const;
  622.     long GetRowsProcessed(void) const;
  623. oresult RemoveFromPool(void) const;
  624.     //new methods in 8.1.6
  625. OMetaData Describe(const char *SchemaObjectName) throw(OException);
  626. oresult BeginTrans(void) const;
  627. oresult CommitTrans(void) const;
  628. oresult Rollback(void) const;
  629.  // properties
  630.     const char *GetName(void) const;     // return database name (from the connection)
  631.     const char *GetConnectString(void) const;  // return connect string (without password)
  632. const char *GetRdbmsVersion(void) const; // returns RDBMS Version
  633. long        GetOptions(void) const;
  634.     
  635.     // error handling
  636.     long ServerErrorNumber(void) const;
  637.     const char *GetServerErrorText(void) const;
  638.     oresult ServerErrorReset(void);
  639.     int ServerErrorSQLPos(void) const;
  640.     
  641. //new properties in 8.1.6
  642. bool GetAutoCommit(void);
  643. oresult SetAutoCommit(bool autocommit);
  644.     void SetCacheMaximumSize(long maxsize) throw(OException);
  645.     void SetCacheOptimalSize(long size) throw(OException);
  646.     // function used by other classes to construct ODatabase objects (don't call this!)
  647.     oresult OpenHelper(void *idisp, void *otheri);
  648. private:
  649.     long m_numrows;
  650.     char    *m_dbname;
  651.     char    *m_dbconnect;
  652. char    *m_errtext;
  653. char *m_version;
  654.     
  655.     // internal helper routines
  656.     oresult Cleanup(void);
  657.     oresult Copy(const ODatabase &other);
  658.  oresult GetUserPwd(const char *username, const char *pwd, char **retname);
  659. };
  660. class OEXPORT OValue
  661. {
  662. public:
  663. // construction & destruction
  664.     OValue(void);
  665.     OValue(int intval);       // allows OValue val = 3
  666.     OValue(long longval);     // allows OValue val = 99L;
  667.     OValue(double doubleval); // allows initialization with a double
  668.     OValue(const char *tval); // allows initialization with a string
  669.     OValue(const OValue &other); // copy constructor
  670. OValue(short *intval); // Added for ARRAYINSERT
  671. OValue(int *intval); // Added for ARRAYINSERT
  672. OValue(long *longval); // Added for ARRAYINSERT
  673. OValue(double *doubleval);// Added for ARRAYINSERT
  674. OValue(char **tval); // Added for ARRAYINSERT
  675. OValue(const OBlob &val) throw(OException);
  676. OValue(const OClob &val) throw(OException);
  677. OValue(const OBfile &val) throw(OException);
  678. OValue(const OObject &val) throw(OException);
  679. OValue(const ORef &val) throw(OException);
  680. OValue(const OCollection &val) throw(OException);
  681. OValue(const OMetaData &val) throw(OException);
  682. OValue(void* dp, int type); 
  683. ~OValue(void);
  684.    
  685. OValue &operator=(const OValue &other);
  686.     int operator==(const OValue &other) const;
  687.     int operator!=(const OValue &other) const;
  688.     
  689.     // setting the data & type
  690.     oresult Clear(void);    // clear the values
  691.     oresult SetValue(const OValue &val);
  692.     oresult SetValue(const char *val); // sets string value (copies text)
  693.     oresult SetValue(int val);     // sets to int value
  694.     oresult SetValue(long val);
  695.     oresult SetValue(double dval); // sets to double value 
  696.     // oresult SetValue(const void *longval, long len);  // set to long value (not implemented)
  697. oresult SetValue(char **val); // Added for ARRAYINSERT
  698. oresult SetValue(short *val); // Added for ARRAYINSERT
  699. oresult SetValue(int *val); // Added for ARRAYINSERT
  700. oresult SetValue(long *val); // Added for ARRAYINSERT
  701. oresult SetValue(double *dval); // Added for ARRAYINSERT
  702. oresult SetValue(const OBlob &val);
  703. oresult SetValue(const OClob &val);
  704. oresult SetValue(const OBfile &val);
  705. oresult SetValue(const OObject &val);
  706. oresult SetValue(const ORef &val);
  707. oresult SetValue(const OCollection &val);
  708. oresult SetValue(const OMetaData &val);
  709. oresult SetValue(void* raw, int type);
  710. oresult SetEmpty(void); //sets to "empty" object
  711.     oboolean IsNull(void) const;  // returns TRUE if value is NULL (which includes uninitialized)
  712.     long GetObjType(void) const;
  713.     // getting data (overloaded cast operators)
  714.     operator int() const;
  715.     operator long() const;
  716.     operator const char *() const; // returns 0 if instance isn't string (no allocation)
  717.     operator double() const;
  718.     
  719. operator OBlob () const throw(OException);
  720. operator OClob () const throw(OException);
  721. operator OBfile () const throw(OException);
  722. operator OObject () const throw(OException);
  723. operator ORef () const throw(OException);
  724. operator OCollection () const throw(OException);
  725. operator OMetaData () const throw(OException);
  726.     // conversions to implementation-specific representations (used by OField)
  727.     oresult FromLocalType(void *localv, int type=0);
  728.     // helper routine for implementation of other classes
  729.     void *Internal(void) const;  
  730. int IsEqual(const OValue &other) const;
  731. private:
  732.     OOLEvar  *m_value;  // pointer to data representation 
  733.     // helper routines
  734.     oresult Copy(const OValue &other);
  735.     oresult Cleanup(void);
  736. };
  737. // ----- ODynaset -----------------------------------------------
  738. class OEXPORT ODynaset : public OOracleObject
  739. {
  740. public:
  741.     // construction & destruction
  742.     ODynaset(void);
  743. ODynaset(const ODynaset &other);
  744. ODynaset(const ODatabase &odb, const char *sql_statement,
  745. long options = ODYNASET_DEFAULT, OSnapshotID *snapID = NULL);  // construct & open
  746. // Added for custom dynaset
  747. ODynaset(const ODatabase &odb, const char *sql_statement,
  748. unsigned int slicesize, unsigned int perblock,
  749. unsigned int blocks, unsigned int fetchlimit,
  750. unsigned int fetchsize, long options = ODYNASET_DEFAULT,
  751. OSnapshotID *snapID = NULL);
  752. ~ODynaset(void);
  753. // Open takes an SQL query as an argument.  This constructs a set of records which can
  754. //    then be accessed.
  755. oresult Open(const ODatabase &odb, const char *sql_statement,
  756. long options = ODYNASET_DEFAULT, OSnapshotID *snapID = NULL);  // creates a dynaset object
  757. // Added for custom dynaset
  758. oresult Open(const ODatabase &odb, const char *sql_statement,
  759. unsigned int slicesize, unsigned int perblock,
  760. unsigned int blocks, unsigned int fetchlimit,
  761. unsigned int fetchsize, long options = ODYNASET_DEFAULT,
  762. OSnapshotID *snapID = NULL);
  763.  // The clone of a dynaset is looking at the original data, but has a different navigational
  764.     //    position.  Useful if you want to navigate through a set of data without side-effects
  765.     oresult Close(void);
  766.     // getting other objects
  767.     ODynaset Clone(void) const;  // clone a dynaset
  768. ODatabase GetDatabase(void) const;
  769.     OFieldCollection GetFields(void) const;
  770.     OSession GetSession(void) const;
  771. OField GetField(int index) const;
  772.     OField GetField(const char *fieldname) const;
  773. int GetFieldOriginalNameIndex(const char *fieldname) const;
  774.     OConnection GetConnection(void) const;
  775. ODynasetMark GetMark(void) const;  // bookmark at current position
  776.     ODynasetMark GetLastModifiedMark(void) const;  // get bookmark at last modified record 
  777.     
  778.  // overloaded operators
  779.     ODynaset &operator=(const ODynaset &other);
  780.     
  781.  // the sql statement of the dynaset
  782.     oresult SetSQL(const char *sql_statement);  // sets new sql statement for the dynaset
  783.     const char *GetSQL(void) const;  // gets sql statement
  784. oresult Refresh(void);  // refresh dynaset with current sql statement
  785.     // navigation methods
  786. oresult MoveFirst(void);   // go to first record in the set
  787.     oresult MoveLast(void);    // go to last record in the set.  Note that this requires that all the records
  788.                             //    in the query be downloaded from the server.  Can be expensive.
  789.  // MovePrev and MoveNext take a "gopast" argument.  If it is TRUE we can navigate to an
  790.  //   invalid record before the first or after the last.  If "gopast" is FALSE, then we won't
  791.     //   go before the first or after the last record.  
  792.  oresult MovePrev(oboolean gopast = TRUE);    // go to previous record
  793.  oresult MoveNext(oboolean gopast = TRUE);    // go to next record - the most frequently used
  794. // extra move methods
  795.  oresult MovePrevN(long rows, oboolean gopast = TRUE);    // go to previous (n) record
  796.  oresult MoveNextN(long rows, oboolean gopast = TRUE);    // go to next (n) record
  797.  oresult MoveRel(long rows, oboolean gopast = TRUE);    // go to relative record (n)
  798.  oresult MoveTo(long rownum, oboolean gopast = TRUE);    // go to record (n)
  799.  oresult MoveToMark(const ODynasetMark &odmark);  // repositions to mark (see ODynasetMark class)
  800.      oboolean IsEOF(void) const;  // true if at end of dynaset.  Set to TRUE when you have tried to go
  801.                                 //     beyond the end
  802.  oboolean IsBOF(void) const;  // true if at begin of dynaset
  803.      oboolean IsValidRecord(void) const;  // true if current row is valid
  804.     
  805.  // editing
  806.      oboolean CanTransact(void) const;  // returns TRUE if transaction processing is enabled 
  807.      oboolean CanUpdate(void) const;  // returns TRUE if this dynaset is updatable
  808.  int GetEditMode(void) const;  // returns current edit mode: ODYNASET_EDIT_*
  809.  oresult StartEdit(void);  // starts edit operation
  810.  oresult CancelEdit(void); // cancels edit operation
  811.      oresult Update(void);     // finishes editing
  812.  oresult DuplicateRecord(void);  // copy the current record, adds a new record, sets field to copied values
  813.  // Find methods
  814.  oresult FindFirst(const char *sql);
  815.  oresult FindNext(const char *sql = 0);
  816.  oresult FindPrevious(const char *sql = 0);
  817.  oresult FindLast(const char *sql);
  818.  oboolean NoMatch(void); // TRUE if find failed
  819.  // Tunable cache and fetch parameters
  820.  unsigned int GetCacheSliceSize (void);
  821.  unsigned int GetCacheSlicePerBlock (void);
  822.  unsigned int GetCacheBlocks (void);
  823.  unsigned int GetFetchLimit (void);
  824.  unsigned int GetFetchSize (void);
  825.  void SetCacheSliceSize (unsigned int slice);
  826.  void SetCacheSlicePerBlock (unsigned int perblock);
  827.  void SetCacheBlocks (unsigned int blocks);
  828.  void SetFetchLimit (unsigned int flimit);
  829.  void SetFetchSize (unsigned int fsize);
  830.  oboolean IsCacheChanged(void); // TRUE if cache or fetch parameters changed
  831.  // paste to clipboard functions
  832.  oresult PlsqlOpen(const ODatabase &odb, const char *sqlst, 
  833. const char *CursorName, long options);
  834.  oresult PlsqlOpen(const ODatabase &odb, const char *sqlst, const char *CursorName, 
  835. unsigned int slicesize, unsigned int perblock,
  836. unsigned int blocks, unsigned int fetchlimit,
  837. unsigned int fetchsize, long options);
  838.  // others
  839. oboolean CanRefresh(void) const;  // our dynasets can always requery
  840.     oboolean CanScroll(void) const;    // always scrollable
  841. oboolean CanMark(void) const;
  842.     
  843.     long GetOptions(void) const;
  844.     // record manipulation
  845.     oresult AddNewRecord(void);
  846. oresult DeleteRecord(void);
  847.     
  848.     // record access
  849. int GetFieldCount(void) const;  // returns # of fields in a record
  850.     long GetRecordCount(void) const;  // (dangerous!) gets total number of records in dynaset
  851.                          // this routine downloads the entire dynaset to the client   
  852. int GetFieldIndex(const char *fieldname) const;  // gets the index of a field by name
  853.  // all the Get and Set methods can refer to a column either by index (column position in the
  854.     //    query) or by fieldname (the name of the column as specified in the query).  GetFieldIndex
  855.  //    can be used to find the index of columns - which is more efficient
  856.     short GetFieldServerType(int index) const;
  857.     short GetFieldServerType(const char *fieldname) const;
  858. short GetFieldPrecision(int index) const;
  859.     short GetFieldPrecision(const char *fieldname) const;
  860.     short GetFieldScale(int index) const;
  861. short GetFieldScale(const char *fieldname) const;
  862.     oboolean IsFieldNullOK(int index) const;
  863.     oboolean IsFieldNullOK(const char *fieldname) const;
  864.     long GetFieldSize(int index) const;
  865.     long GetFieldSize(const char *fieldname) const;
  866. long GetFieldServerSize(int index) const;
  867.     long GetFieldServerSize(const char *fieldname) const;
  868. oboolean IsFieldTruncated(int index) const;
  869. oboolean IsFieldTruncated(const char *fieldname) const;
  870.     
  871.  // get data from a field, either by name or index
  872.     oresult GetFieldValue(int index, OValue *val) const;
  873. oresult GetFieldValue(const char *fieldname, OValue *val) const;
  874.     oresult GetFieldValue(int index, int *val) const;
  875. oresult GetFieldValue(const char *fieldname, int *val) const;
  876.     oresult GetFieldValue(int index, long *val) const;
  877. oresult GetFieldValue(const char *fieldname, long *val) const;
  878.     oresult GetFieldValue(int index, double *val) const;
  879. oresult GetFieldValue(const char *fieldname, double *val) const;
  880. oresult GetFieldValue(int index, char *val, unsigned short maxlen) const;
  881. oresult GetFieldValue(const char *fieldname, char *val, unsigned short maxlen) const;
  882. oresult GetFieldValue(int index, void __huge *longval, long len, long *readlen) const;
  883. oresult GetFieldValue(const char *fieldname, void __huge *longval, long len, long *readlen) const;
  884. oresult GetFieldValue(int index, OBlob  *val) const;
  885. oresult GetFieldValue(int index, OClob  *val) const;
  886. oresult GetFieldValue(int index, OBfile *val) const;
  887. oresult GetFieldValue(int index, ORef   *val) const;
  888. oresult GetFieldValue(int index, OObject *val) const;
  889. oresult GetFieldValue(int index, OCollection *val) const;
  890. oresult GetFieldValue(const char *fieldname, OBlob  *val) const;
  891. oresult GetFieldValue(const char *fieldname, OClob  *val) const;
  892. oresult GetFieldValue(const char *fieldname, OBfile *val) const;
  893. oresult GetFieldValue(const char *fieldname, ORef   *val) const;
  894. oresult GetFieldValue(const char *fieldname, OObject *val) const;
  895. oresult GetFieldValue(const char *fieldname, OCollection *val) const;
  896. oresult GetFieldChunk(int index, void *chunkp, long offset, unsigned short len) const;
  897. oresult GetFieldChunk(const char *fieldname, void *chunkp, long offset,
  898. unsigned short len) const;
  899. oresult GetFieldChunk(int index, void *chunkp, long offset,
  900. unsigned short len, unsigned short *bytesread) const;
  901. oresult GetFieldChunk(const char *fieldname, void *chunkp, long offset,
  902. unsigned short len, unsigned short *bytesread) const;
  903. // set data in a field, either by name or index
  904. oresult SetFieldValue(int index, const OValue &val);
  905. oresult SetFieldValue(const char *fieldname, const OValue &val);
  906. oresult SetFieldValue(int index, int val);
  907. oresult SetFieldValue(const char *fieldname, int val);
  908. oresult SetFieldValue(int index, long val);
  909. oresult SetFieldValue(const char *fieldname, long val);
  910. oresult SetFieldValue(int index, double val);
  911. oresult SetFieldValue(const char *fieldname, double val);
  912. oresult SetFieldValue(int index, const char *val);
  913. oresult SetFieldValue(const char *fieldname, const char *val);
  914. oresult SetFieldValue(int index, const void __huge *longval, long len);
  915. oresult SetFieldValue(const char *fieldname, const void __huge *longval, long len);
  916. oresult SetFieldValue(int index, const OBlob  &val);
  917. oresult SetFieldValue(int index, const OClob  &val);
  918. oresult SetFieldValue(int index, const OBfile &val);
  919. oresult SetFieldValue(int index, const ORef   &val);
  920. oresult SetFieldValue(int index, const OObject &val);
  921. oresult SetFieldValue(int index, const OCollection &val);
  922. oresult SetFieldValue(const char *fieldname, const OBlob  &val);
  923. oresult SetFieldValue(const char *fieldname, const OClob  &val);
  924. oresult SetFieldValue(const char *fieldname, const OBfile &val);
  925. oresult SetFieldValue(const char *fieldname, const ORef   &val);
  926. oresult SetFieldValue(const char *fieldname, const OObject &val);
  927. oresult SetFieldValue(const char *fieldname, const OCollection &val);
  928. oresult AppendFieldChunk(int index, const void *chunkp, unsigned short len);
  929. oresult AppendFieldChunk(const char *fieldname, const void *chunkp, unsigned short len);
  930. // function used by other classes to construct ODynaset objects (don't call this!)
  931. oresult OpenHelper(void *idisp, void *otheri);
  932. oboolean IsFirst(void) const;
  933. oboolean IsLast(void) const;
  934.     oboolean IsFieldUpdatable(int index) const;
  935.     oboolean IsFieldUpdatable(const char *fieldname) const;
  936.     oresult SetFieldUpdatable(int index, oboolean update) const;
  937.     oresult SetFieldUpdatable(const char *fieldname, oboolean update) const;
  938. // Original Column name and update source
  939. oresult GetOrigFieldIndex(const char *fieldname) const;
  940. const char * GetFieldName(int index) const;
  941. const char * GetFieldOriginalName(int index) const;
  942.   oresult UpdateSource(int index, updsrcs updsrc, const char *source=NULL);
  943. oresult UpdateSource(const char *fieldname, updsrcs updsrc, const char *source=NULL);
  944. oresult CopyToClipboard(long NumOfRows);
  945. oresult CopyToClipboard(long NumOfRows, char colsep, char rowsep);
  946. oboolean get_CurrentRowModified( void) const;
  947. OSnapshotID GetSnapshot(void) const throw(OException);
  948. void SetSnapshot(OSnapshotID* snapID) const throw(OException);
  949. private:
  950.  char *m_sqlstmt;  // the sql statement that creates the dynaset
  951.  // internal helper routines
  952.  oresult Copy(const ODynaset &other);
  953.  oresult Cleanup(void);
  954. };
  955. // ----- ODynasetMark -----------------------------------------------
  956. class OEXPORT ODynasetMark : public OOracleObject
  957. {
  958. public:
  959.  // construction & destruction
  960.     ODynasetMark(void); 
  961.  ODynasetMark(const ODynasetMark &other);
  962.  ~ODynasetMark(void);
  963.     
  964.     // overloaded operators
  965.  ODynasetMark &operator=(const ODynasetMark &other);
  966.  int operator==(const ODynasetMark &other) const;
  967.     int operator!=(const ODynasetMark &other) const;
  968.     
  969.     oresult Close(void);
  970.     oboolean IsOpen(void) const;
  971.     
  972.     // function used by other classes to construct ODynasetMark objects (don't call this!)
  973.     oresult OpenHelper(void *idisp, void *otheri);
  974.     
  975.     char *Internal(void) const;
  976. private:
  977.     char  *m_markdata;  // holds data for bookmark
  978.     
  979.     oresult Cleanup(void);
  980. };
  981. // ----- OField -----------------------------------------------
  982. class OEXPORT OField : public OOracleObject
  983. {
  984. public:
  985.     // construction & destruction
  986.     OField(void);
  987.     OField(const OField &other);
  988.     ~OField(void);              
  989.     
  990.     oresult Close(void);
  991.     
  992.     // overloaded operators
  993.     OField &operator=(const OField &other);
  994.     
  995.     // other objects
  996.     ODynaset GetDynaset(void) const;
  997.     
  998.     // properties
  999.     const char *GetName(void) const; // returns name of field (user doesn't need to free)
  1000.     long GetSize(void) const;  // returns length of field
  1001.     long GetServerSize(void) const;  // returns length of a field (in server)
  1002.     short GetServerType(void) const;
  1003.     short GetPrecision(void) const;
  1004.     short GetScale(void) const;
  1005.     oboolean IsNullOK(void) const;
  1006.  oboolean IsTruncated(void) const;
  1007.  
  1008.  oboolean IsUpdatable(void) const;
  1009.  oresult SetUpdatable(oboolean upd = TRUE);
  1010.     // field value
  1011.     oresult GetValue(OValue *val) const;  // returns value of field in val
  1012.     oresult GetValue(int *val) const;
  1013.     oresult GetValue(long *val) const;
  1014.     oresult GetValue(double *val) const;
  1015.     oresult GetValue(const char **val) const;
  1016.     oresult GetValue(void __huge *longval, long len, long *readlen) const;
  1017.     oresult SetValue(const OValue &val);  // sets the field to new value
  1018.     oresult SetValue(int val);
  1019.     oresult SetValue(long val);
  1020.     oresult SetValue(double val);
  1021.     oresult SetValue(const char *val);
  1022.     oresult SetValue(const void __huge *longval, long len); 
  1023. oresult GetValue(OBlob *val) const;
  1024. oresult GetValue(OClob *val) const;
  1025. oresult GetValue(OBfile *val) const;
  1026. oresult GetValue(ORef *val) const;
  1027. oresult GetValue(OObject *val) const;
  1028. oresult GetValue(OCollection *val) const;
  1029. oresult SetValue(const OBlob &val);
  1030. oresult SetValue(const OClob &val);
  1031. oresult SetValue(const OBfile &val);
  1032. oresult SetValue(const ORef &val);
  1033. oresult SetValue(const OObject &val);
  1034. oresult SetValue(const OCollection &val);
  1035.     
  1036.     // for long fields
  1037.     oresult AppendChunk(const void *chunkp, unsigned short numbytes);
  1038. oresult GetChunk(const char **chunkp, long offset, unsigned short numbytes) const;
  1039. oresult GetChunk(const char **chunkp, long offset, unsigned short numbytes,
  1040. unsigned short *bytesread) const;
  1041. // Added for testing
  1042. oresult GetChunk(const void **chunkp, long offset, unsigned short numbytes,
  1043. unsigned short *bytesread) const;
  1044. oresult AppendChunk(const char *chunkp, unsigned short numbytes);
  1045.     // getting data (overloaded cast operators)
  1046.     operator int() const;
  1047.     operator long() const;
  1048.     operator double() const;
  1049.     operator const char *() const;
  1050. operator OBlob () const throw(OException);
  1051. operator OClob () const throw(OException);
  1052. operator OBfile () const throw(OException);
  1053. operator OObject () const throw(OException);
  1054. operator ORef () const throw(OException);
  1055. operator OCollection () const throw(OException);
  1056.     // function used by other classes to construct OField objects (don't call this!)
  1057.     oresult OpenHelper(void *idisp, void *otheri);
  1058. // V2.1 dev - Original field name
  1059. const char *GetOriginalName (void) const;
  1060. int GetIndex () {return m_index;}
  1061. oresult UpdateSource(updsrcs updsrc, const char *source=NULL);
  1062. private:
  1063.     short  m_index;
  1064.     char  *m_name;
  1065.     char  *m_data;
  1066.     // internal helper routines
  1067.     oresult Copy(const OField &other);
  1068.     oresult Cleanup(void);   
  1069. };
  1070. // ----- OFieldCollection -----------------------------------------------
  1071. class OEXPORT OFieldCollection : public OOracleCollection
  1072. {
  1073. public:
  1074.     OField GetField(int index) const;
  1075. OField GetField(const char *name) const;
  1076. OField GetFieldOname(const char *oname) const;
  1077.      OField GetFieldByOriginalName(const char *oname) const;
  1078.     // function used by other classes to construct OFieldCollection objects (don't call this!)
  1079.     oresult OpenHelper(void *idisp, void *otheri);  // finish the work of opening the set
  1080. };
  1081. // ----- OClient -----------------------------------------------
  1082. class OEXPORT OClient : public OOracleObject
  1083. {
  1084. public:
  1085.     // construction & destruction
  1086.     OClient(void);
  1087.     OClient(const OClient &other);
  1088.     ~OClient(void);
  1089.     
  1090.     // use OSession::GetClient to open a client object
  1091.     oresult Close(void);
  1092.     // Getting other objects
  1093.     OSessionCollection GetSessions(void) const;  // get set of sessions
  1094.     // overloaded operators
  1095.     OClient &operator=(const OClient &other);
  1096.     
  1097.     // get properties
  1098.     const char        *GetName(void) const;        // returns client name.
  1099.     
  1100.     // function used by other classes to construct OSession objects (don't call this!)
  1101.     oresult OpenHelper(void *idisp, void *otheri);
  1102. private:
  1103.     char *m_name;
  1104.     // internal helper routines
  1105.     oresult Copy(const OClient &other);
  1106.     oresult Cleanup(void);   
  1107. };
  1108. // ----- OConnection -----------------------------------------------
  1109. class OEXPORT OConnection : public OOracleObject
  1110. {
  1111. public:
  1112.     // construction & destruction
  1113.     OConnection(void);
  1114.     OConnection(const OConnection &other);
  1115.     ~OConnection(void);
  1116.     
  1117.     oresult Close(void);
  1118.     
  1119.     // getting other objects
  1120.     OSession GetSession(void) const;   
  1121.     // overloaded operators
  1122.     OConnection &operator=(const OConnection &other);
  1123.     
  1124.     // properties
  1125.     const char  *GetConnectString(void) const;  // returns connect string
  1126.     const char  *GetDatabaseName(void) const;  // returns database name for this connection
  1127.   // transactions on database
  1128. oresult  BeginTransaction(void);  // start a transaction
  1129.     oresult  Commit(oboolean startnew = FALSE);   // commit (may start new transaction)
  1130.     oresult  Rollback(oboolean startnew = FALSE); // rolls back transaction (may start new transaction)
  1131.     oresult  ResetTransaction(void);  // unconditionally rollback (no advisories)
  1132.     
  1133.     // function used by other classes to construct OConnection objects (don't call this!)
  1134.     oresult OpenHelper(void *idisp, void *otheri);
  1135. private:
  1136.     char *m_dbname;
  1137.     char *m_dbconnect;
  1138.     // internal helper routines
  1139.     oresult Copy(const OConnection &other);
  1140.     oresult Cleanup(void);   
  1141. };
  1142.  
  1143. // ----- OConnectionCollection -----------------------------------------------
  1144. class OEXPORT OConnectionCollection : public OOracleCollection
  1145. {
  1146. public:
  1147.     OConnection GetConnection(int index) const;
  1148.     // function used by other classes to construct OConnectionCollection objects (don't call this!)
  1149.     oresult OpenHelper(void *idisp, void *otheri);  // finish the work of opening the set
  1150. };
  1151. // ----- OAdvise -----------------------------------------------
  1152.  
  1153. class OEXPORT OAdvise : public OOracleObject
  1154. {
  1155. public:
  1156.     OAdvise(void);
  1157.     OAdvise(const OAdvise &other);
  1158.     OAdvise(const ODynaset &odyn);  // construct & open
  1159.     virtual ~OAdvise(void);
  1160.     
  1161.     virtual oresult Open(const ODynaset &odyn);
  1162.     virtual oresult Close(void);  // stop the advisory sink
  1163.     
  1164.     // getting other objects
  1165.     ODynaset GetDynaset(void) const;
  1166.     
  1167.     // overloaded operators
  1168.     OAdvise &operator=(const OAdvise &other);
  1169.     
  1170.     // called before an action takes place
  1171.     virtual oboolean ActionRequest(int movekind);  // returns TRUE if action is allowed, FALSE to cancel
  1172.     
  1173.     // routines called to to notify that action occured
  1174.     virtual void ActionNotify(int movekind); 
  1175.     
  1176.     // routine called on status change
  1177.     virtual void StatusChange(int statuskind);
  1178.     
  1179. private:
  1180.     ODynaset  m_oDyn;    // the dynaset we're getting notices from
  1181.     
  1182.     // private helper routines
  1183.     oresult Cleanup(void);
  1184.  oresult Copy(const OAdvise &other);
  1185. };
  1186. // ----- OParameter -----------------------------------------------
  1187. class OEXPORT OParameter : public OOracleObject
  1188. {
  1189. public:
  1190.     OParameter(void);
  1191.     OParameter(const OParameter &other);
  1192.     ~OParameter(void);
  1193.     
  1194.     oresult Close(void);
  1195.     
  1196.     // overloaded operators
  1197.     OParameter &operator=(const OParameter &other);
  1198.     
  1199.     // parameter name
  1200.     const char *GetName(void) const;
  1201.     short GetServerType(void) const;    
  1202.     const char *GetLastErrorText(void ) ;
  1203.     
  1204.     // parameter value
  1205.  oresult GetValue(OValue *val) const;
  1206.  oresult GetValue(int *val) const;
  1207.  oresult GetValue(long *val) const;
  1208.  oresult GetValue(double *val) const;
  1209.  oresult GetValue(const char **val) const;
  1210.  oresult GetValue(OBlob *val) const;
  1211.  oresult GetValue(OClob *val) const;
  1212.  oresult GetValue(OBfile *val) const;
  1213.  oresult GetValue(OObject *val) const;
  1214.  oresult GetValue(ORef *val) const;
  1215.  oresult GetValue(OCollection *val) const;
  1216.  //multiple cursor return
  1217. oresult GetValue(ODynaset *odyn) const;
  1218.     int     Count (void);
  1219.     
  1220.     oresult Clear(void);
  1221. oresult SetValue(const OValue &val);
  1222. oresult SetValue(int val);
  1223. oresult SetValue(long val);
  1224. oresult SetValue(double val);
  1225. oresult SetValue(const char *val);
  1226. oresult SetValue(const OBlob &val);
  1227. oresult SetValue(const OClob &val);
  1228. oresult SetValue(const OBfile &val);
  1229. oresult SetValue(const OObject &val);
  1230. oresult SetValue(const ORef &val);
  1231. oresult SetValue(const OCollection &val);
  1232.     oresult MinimumSize (long size);
  1233.     long    MinimumSize (void);
  1234.     // getting data (overloaded cast operators)
  1235.     operator int() const;
  1236.     operator long() const;
  1237.     operator double() const;
  1238.     operator const char *() const;
  1239. operator OBlob () const throw(OException);
  1240. operator OClob () const throw(OException);
  1241. operator OBfile () const throw(OException);
  1242. operator OObject () const throw(OException);
  1243. operator ORef () const throw(OException);
  1244. operator OCollection () const throw(OException);
  1245.     // other status information
  1246.     int GetStatus(void) const;
  1247.     
  1248.     // enabling
  1249.     oresult AutoEnable(oboolean enable);
  1250.     // function used by other classes to construct OParameter objects (don't call this!)
  1251.     oresult OpenHelper(void *idisp, void *otheri);  // finish the work of opening the object
  1252. // PL/SQL cursor return options
  1253. void SetDynasetOption(long options);
  1254. void SetDynasetCacheParams(long SliceSize, long perblock, long Blocks, long FetchLimit, long FetchSize) ;
  1255. private:
  1256.     char *m_name; 
  1257.     char *m_data;
  1258.     // internal helper routines
  1259.     oresult Copy(const OParameter &other);
  1260. oresult Cleanup(void);
  1261. oresult HelpGetValue(OOLEvar *tempv) const;
  1262. };
  1263. // ----- OParameterCollection -----------------------------------------------
  1264. class OEXPORT OParameterCollection : public OOracleObject
  1265. {
  1266. public:
  1267.     OParameterCollection(void);
  1268.     OParameterCollection(const OParameterCollection &other);
  1269.     ~OParameterCollection(void);
  1270.     
  1271.     oresult Close(void);
  1272.     
  1273.     // overloaded operators
  1274.     OParameterCollection &operator=(const OParameterCollection &other);
  1275.     
  1276.     // getting other objects
  1277.     OParameter GetParameter(int index) const;
  1278.     OParameter GetParameter(const char *pname) const;
  1279. OParamArray GetParamArray(int index) const;
  1280. OParamArray GetParamArray(const char *pname) const;
  1281.     // adding a new parameter
  1282.     OParameter Add(const char *name, int value, int iotype, int serverType, char* object_name = NULL);
  1283.     OParameter Add(const char *name, long value, int iotype, int serverType, char* object_name = NULL);
  1284.     OParameter Add(const char *name, double value, int iotype, int serverType, char* object_name = NULL);
  1285.     OParameter Add(const char *name, const char *value, int iotype, int serverType, char* object_name = NULL);     
  1286. OParameter Add(const char *name, const OBlob &value, int iotype, int servertype);
  1287. OParameter Add(const char *name, const OClob &value, int iotype, int servertype);
  1288. OParameter Add(const char *name, const OBfile &value, int iotype, int servertype);
  1289. OParameter Add(const char *name, const OObject &value, int iotype, int servertype, char* object_name);
  1290. OParameter Add(const char *name, const ORef &value, int iotype, int servertype, char* object_name = NULL);
  1291. OParameter Add(const char *name, const OCollection &value, int iotype, int servertype, char* object_name);
  1292.     OParameter Add(const char *name, const OValue &value, int iotype, int serverType, char* object_name = NULL);     
  1293. // array binding
  1294. OParamArray AddTable(const char *name, int iotype, int serverType, int Dimension, int Size=0, char* object_name = NULL);
  1295.     
  1296.     // removing a parameter
  1297.     oresult Remove(int index);
  1298.     oresult Remove(const char *name);
  1299.     // getting # of parameters
  1300. long GetCount(void) const;
  1301.     // function used by other classes to construct OParameterCollection objects (don't call this!)
  1302.     oresult OpenHelper(void *idisp, void *otheri);  // finish the work of opening the set
  1303. private:
  1304.     // internal helper routines
  1305. int m_arraysize ; // ARRAYINSERT
  1306. oresult Copy(const OParameterCollection &other);
  1307.     oresult Cleanup(void);   
  1308. OParameter AddHelp(const char *name, const OValue &val, int iotype, int serverType, char* object_name = NULL);
  1309. };
  1310. // ----- OSqlStmt -----------------------------------------------
  1311. class OEXPORT OSqlStmt : public OOracleObject
  1312. {
  1313. public:
  1314.     // construction & destruction
  1315.  OSqlStmt(void);
  1316.  OSqlStmt(const OSqlStmt &other);
  1317.  OSqlStmt(const ODatabase &odb, const char *sql_statement,
  1318. long options = OSQLSTMT_DEFAULT);  // construct & open
  1319.  ~OSqlStmt(void);
  1320.  // Open takes an SQL query as an argument.  This constructs a set of records which can
  1321.  //    then be accessed.
  1322.  oresult Open(const ODatabase &odb, const char *sql_statement,
  1323. long options = OSQLSTMT_DEFAULT);  // creates a dynaset object
  1324.  oresult Close(void);
  1325.     // getting other objects
  1326.  ODatabase GetDatabase(void) const;
  1327.  OSession GetSession(void) const;
  1328.  OConnection GetConnection(void) const;
  1329.  // overloaded operators
  1330.  OSqlStmt &operator=(const OSqlStmt &other);
  1331.     
  1332.  // the sql statement of the object
  1333.  oresult SetSQL(const char *sql_statement);  // sets new sql statement
  1334.      const char *GetSQL(void) const;  // gets sql statement
  1335.  oresult Refresh(void);  // refresh with current sql statement
  1336.  // editing
  1337.  oboolean CanTransact(void) const;  // returns TRUE if transaction processing is enabled
  1338.  // others
  1339.  oboolean CanRefresh(void) const;  // our sql statement can always requery
  1340.  long GetOptions(void) const;
  1341.  long GetRecordCount(void) const;
  1342.  // function used by other classes to construct ODynaset objects (don't call this!)
  1343.  oresult OpenHelper(void *idisp, void *otheri);
  1344. private:
  1345.  char *m_sqlstmt;  // the sql statement that creates the dynaset
  1346.  // internal helper routines
  1347.  oresult Copy(const OSqlStmt &other);
  1348.  oresult Cleanup(void);
  1349. };
  1350. // ----- OParamArray -----------------------------------------------
  1351. class OEXPORT OParamArray : public OOracleObject
  1352. {
  1353. public:
  1354.  OParamArray(void);
  1355.  OParamArray(const OParamArray &other);
  1356.  ~OParamArray(void);
  1357.     
  1358.     oresult Close(void);
  1359.     
  1360.     // overloaded operators
  1361. OParamArray &operator=(const OParamArray &other);
  1362.     
  1363.     // parameter name
  1364.     const char *GetName(void) const;
  1365.     short GetServerType(void) const;    
  1366. const char *GetLastErrorText(void ) ;
  1367.     
  1368.     // parameter value
  1369. oresult GetValue(OValue *val, int index) const;
  1370. oresult GetValue(int *val, int index) const;
  1371. oresult GetValue(long *val, int index) const;
  1372. oresult GetValue(double *val, int index) const;
  1373. oresult GetValue(const char **val, int index) const;
  1374. oresult GetValue(OBlob *val, int index) const;
  1375. oresult GetValue(OClob *val, int index) const;
  1376. oresult GetValue(OBfile *val, int index) const;
  1377. oresult GetValue(ORef *val, int index) const;
  1378. oresult GetValue(OObject *val, int index) const;
  1379. oresult GetValue(OCollection *val, int index) const;
  1380. oresult Clear(void);
  1381. oresult SetValue(const OValue &val, int index);
  1382. oresult SetValue(int val, int index);
  1383. oresult SetValue(long val, int index);
  1384. oresult SetValue(double val, int index);
  1385. oresult SetValue(const char *val, int index);
  1386. oresult SetValue(const OBlob &val, int index);
  1387. oresult SetValue(const OClob &val, int index);
  1388. oresult SetValue(const OBfile &val, int index);
  1389. oresult SetValue(const ORef &val, int index);
  1390. oresult SetValue(const OObject &val, int index);
  1391. oresult SetValue(const OCollection &val, int index);
  1392.     oresult MinimumSize (long size);
  1393.     long    MinimumSize (void);
  1394.     // other status information
  1395.     int GetStatus(void) const;
  1396. const char *GetLastError(void);
  1397. int GetArraySize(void);
  1398.  // enabling
  1399.     oresult AutoEnable(oboolean enable);
  1400.     // function used by other classes to construct OParameter objects (don't call this!)
  1401.     oresult OpenHelper(void *idisp, void *otheri);  // finish the work of opening the object
  1402. private:
  1403. char *m_name; 
  1404.     char **m_data;
  1405.     char *m_errtext;
  1406.     // internal helper routines
  1407. oresult Copy(const OParamArray &other);
  1408.     oresult Cleanup(void);
  1409. oresult HelpGetValue(OOLEvar *tempv, unsigned int index) const;
  1410. };
  1411. // ----- ODatabaseCollection -----------------------------------------------
  1412. class OEXPORT ODatabaseCollection : public OOracleCollection
  1413. {
  1414. public:
  1415.     ODatabase GetDatabase(int index) const;
  1416.     // function used by other classes to construct OConnectionCollection objects (don't call this!)
  1417.     oresult OpenHelper(void *idisp, void *otheri);  // finish the work of opening the set
  1418. };
  1419. // ----- OException ---------------------------------------------------------
  1420. //
  1421. //   Oracle Exception Class
  1422. //
  1423. //   This exception object is thrown by new methods (ver >= 8.1.6) when 
  1424. //   error conditions occur. 
  1425. class OEXPORT OException
  1426. {
  1427. public:
  1428.     // constructors & destructors
  1429. OException(const OException &other);
  1430. virtual ~OException(void);
  1431. //these two constructors for internal use only
  1432.     OException(const char *methodName, const OOracleObject *other);
  1433.     OException(const char *methodName, int arg, const OOracleObject *other);
  1434.     
  1435. OException &operator=(const OException &other);
  1436. //public methods
  1437. virtual const char *GetErrorText(void) const; //OIP error text when available
  1438. virtual long  GetErrorNumber(void) const;     //Error Number
  1439. virtual const char *GetFailedMethodName(void) const; //id of exception source
  1440.     
  1441. //internal use
  1442. virtual void SetFailedMethodName(const char *method);
  1443. protected:
  1444. virtual void Copy(const OException &other);
  1445. virtual void Cleanup(void);
  1446. private:
  1447.     char *m_methodname;
  1448. char *m_oiperrtxt;
  1449.     long m_errnum;
  1450. int m_arg;
  1451. void HelpInit(void);
  1452. void HelpInit(const char *methodName, int arg, const OOracleObject *other);
  1453. };
  1454. // ----- OServer -----------------------------------------------
  1455. class OEXPORT OServer : public OOracleObject
  1456. {
  1457. public:
  1458. // construction & destruction
  1459. OServer(void) throw(OException); 
  1460. OServer(const OServer& other) throw(OException);
  1461.     OServer(const char *server_alias) throw(OException);
  1462. OServer(void *dp);
  1463. ~OServer(void); 
  1464. OServer &operator=(const OServer &other);
  1465. //methods
  1466. void ChangePassword(const char *username, const char *current_pass, const char *new_pass) const throw(OException);
  1467. void Open(const char *server_alias) throw(OException);
  1468. void Close(void) throw(OException);
  1469. //properties
  1470. const char* GetName(void) throw(OException);
  1471. OSession GetSession(void) const throw(OException);
  1472. ODatabaseCollection GetDatabases(void) const throw(OException);
  1473. private:
  1474. char *m_name;
  1475. void HelpInit(void);
  1476. oresult Copy(const OServer &other);
  1477.     oresult Cleanup(void);
  1478. };
  1479. // ----- OObject --------------------------------------------------
  1480. class OEXPORT OObject : public OOracleObject
  1481. {
  1482. public:
  1483.     // construction & destruction
  1484. OObject(void) throw(OException);
  1485. OObject(const OObject& other) throw(OException);
  1486. OObject(ODatabase& odb, const char *type_name) throw(OException);
  1487.     virtual ~OObject(void);
  1488. OObject(void *dp);
  1489.  
  1490. OObject &operator=(const OObject &other);
  1491. //methods
  1492. void Open(ODatabase& odb, const char *type_name) throw(OException);
  1493. virtual void Close(void) throw(OException);
  1494. OObject Clone(void) const throw(OException);
  1495. void Clone(OObject *clone) const throw(OException);
  1496. OValue GetAttrValue(int index) const throw(OException);
  1497. OValue GetAttrValue(const char *attrname) const throw(OException);
  1498. void GetAttrValue(int index, OValue *value) const throw(OException);
  1499. void GetAttrValue(int index, int *val) const throw(OException);
  1500. void GetAttrValue(int index, long *val) const throw(OException);
  1501. void GetAttrValue(int index, double *val) const throw(OException);
  1502. void GetAttrValue(int index, char *val, unsigned short maxlen) const throw(OException);
  1503. void GetAttrValue(int index, OBlob *val) const throw(OException);
  1504. void GetAttrValue(int index, OClob *val) const throw(OException);
  1505. void GetAttrValue(int index, OBfile *val) const throw(OException);
  1506. void GetAttrValue(int index, ORef *val) const throw(OException);
  1507. void GetAttrValue(int index, OObject *val) const throw(OException);
  1508. void GetAttrValue(int index, OCollection *val) const throw(OException);
  1509. void GetAttrValue(const char *attrname, OValue *value) const throw(OException);
  1510. void GetAttrValue(const char *attrname, int *val) const throw(OException);
  1511. void GetAttrValue(const char *attrname, long *val) const throw(OException);
  1512. void GetAttrValue(const char *attrname, double *val) const throw(OException);
  1513. void GetAttrValue(const char *attrname, char *val, unsigned short maxlen) const throw(OException);
  1514. void GetAttrValue(const char *attrname, OBlob *val) const throw(OException);
  1515. void GetAttrValue(const char *attrname, OClob *val) const throw(OException);
  1516. void GetAttrValue(const char *attrname, OBfile *val) const throw(OException);
  1517. void GetAttrValue(const char *attrname, ORef *val) const throw(OException);
  1518. void GetAttrValue(const char *attrname, OObject *val) const throw(OException);
  1519. void GetAttrValue(const char *attrname, OCollection *val) const throw(OException);
  1520. void SetAttrValue(int index, const OValue& val) const throw(OException);
  1521. void SetAttrValue(int index, int val) const throw(OException);
  1522. void SetAttrValue(int index, long val) const throw(OException);
  1523. void SetAttrValue(int index, double val) const throw(OException);
  1524. void SetAttrValue(int index, const char *val) const throw(OException);
  1525. void SetAttrValue(int index, const OBlob  &val) const throw(OException);
  1526. void SetAttrValue(int index, const OClob  &val) const throw(OException);
  1527. void SetAttrValue(int index, const OBfile &val) const throw(OException);
  1528. void SetAttrValue(int index, const ORef   &val) const throw(OException);
  1529. void SetAttrValue(int index, const OObject &val) const throw(OException);
  1530. void SetAttrValue(int index, const OCollection &val) const throw(OException);
  1531. void SetAttrValue(const char *attrname, const OValue& val) const throw(OException);
  1532. void SetAttrValue(const char *attrname, int val) const throw(OException);
  1533. void SetAttrValue(const char *attrname, long val) const throw(OException);
  1534. void SetAttrValue(const char *attrname, double val) const throw(OException);
  1535. void SetAttrValue(const char *attrname, const char *val) const throw(OException);
  1536. void SetAttrValue(const char *attrname, const OBlob  &val) const throw(OException);
  1537. void SetAttrValue(const char *attrname, const OClob  &val) const throw(OException);
  1538. void SetAttrValue(const char *attrname, const OBfile &val) const throw(OException);
  1539. void SetAttrValue(const char *attrname, const ORef   &val) const throw(OException);
  1540. void SetAttrValue(const char *attrname, const OObject &val) const throw(OException);
  1541. void SetAttrValue(const char *attrname, const OCollection &val) const throw(OException);
  1542. const char* GetAttrName(int index) throw(OException);
  1543. int GetAttrType(int index) const throw(OException);
  1544. int GetAttrType(const char *attrname) const throw(OException);
  1545.     // properties
  1546. int GetCount(void) const throw(OException);
  1547. bool IsNull(void) const throw(OException);
  1548. const char* GetTypeName(void) throw(OException);
  1549. const char* GetVersion(void) throw(OException);
  1550. virtual oboolean IsOpen(void) const;
  1551. protected:
  1552. virtual oresult Copy(const OObject &other);
  1553.     virtual oresult Cleanup(void);
  1554. private:
  1555. char *m_typename;
  1556. char *m_attrname;
  1557. char *m_version;
  1558. void HelpInit(void);
  1559. };
  1560. // ----- ORef --------------------------------------------------
  1561. //
  1562. // Note: ORef derives from OObject
  1563. //
  1564.  
  1565. class OEXPORT ORef : public OObject
  1566. {
  1567. public:
  1568.     // construction & destruction
  1569. ORef(void) throw(OException); 
  1570. ORef(const ORef& other) throw(OException);
  1571. ORef(ODatabase& odb, const char *type_name, const char *tablename) throw(OException);
  1572.     ~ORef(void); 
  1573. ORef(void *dp);
  1574.     ORef &operator=(const ORef &other);
  1575. //methods
  1576. void Open(ODatabase& odb, const char *type_name, const char *tablename) throw(OException);
  1577. void Close(void) throw(OException);
  1578. void CancelEdit(void) const throw(OException);
  1579. ORef Clone(void) const throw(OException);
  1580. void Clone(ORef *clone) const throw(OException);
  1581. void Delete(void) const throw(OException);
  1582. void Edit(void) const throw(OException);
  1583. void Refresh(void) const throw(OException);
  1584. void Update(void) const throw(OException);
  1585. //properties
  1586. void SetEditOption(int option) const throw(OException);
  1587. int GetEditOption(void) const throw(OException);
  1588. bool IsRefNull(void) const throw(OException);
  1589. void SetPinOption(int option) const throw(OException);
  1590. int GetPinOption(void) const throw(OException);
  1591. const char* GetTableName(void) throw(OException);
  1592. oboolean IsOpen(void) const;
  1593. void *DInternal() const;
  1594. private:
  1595. OOracleObject m_oracleobject;
  1596. char *m_tablename;
  1597. void HelpInit(void);
  1598. oresult Copy(const ORef &other);
  1599.     oresult Cleanup(void);
  1600. };
  1601. // ----- OCollection --------------------------------------------------
  1602. class OEXPORT OCollection : public OOracleObject
  1603. {
  1604. public:
  1605.     // construction & destruction
  1606. OCollection(void) throw(OException);
  1607. OCollection(ODatabase& odb, const char *type_name) throw(OException);
  1608.     ~OCollection(void);
  1609. OCollection(void *dp);
  1610. OCollection &operator=(const OCollection &other);
  1611.     // methods
  1612. void Open(ODatabase& odb, const char *type_name) throw(OException);
  1613. void Close(void) throw(OException);
  1614. void Append(OValue& var) const throw(OException); 
  1615.     OCollection Clone(void) const throw(OException);
  1616. void Clone(OCollection *clone) const throw(OException);
  1617. void CreateIterator(void) const throw(OException);
  1618.     void Delete(int index) const throw(OException);  
  1619. void DeleteIterator(void) const throw(OException);
  1620.     bool Exist(int index) const throw(OException); 
  1621. OValue GetCurrIterValue(void) const throw(OException);
  1622. void GetCurrIterValue(OValue *val) const throw(OException);
  1623. void GetCurrIterValue(int *val) const throw(OException);
  1624. void GetCurrIterValue(long *val) const throw(OException);
  1625. void GetCurrIterValue(double *val) const throw(OException);
  1626. void GetCurrIterValue(char *val, unsigned short maxlen) const throw(OException);
  1627. void GetCurrIterValue(OObject *val) const throw(OException);
  1628. void GetCurrIterValue(ORef *val) const throw(OException);
  1629. OValue GetValue(int index) const throw(OException);
  1630. void GetValue(int index, OValue *val) const throw(OException);
  1631. void GetValue(int index, int *val) const throw(OException);
  1632. void GetValue(int index, long *val) const throw(OException);
  1633. void GetValue(int index, double *val) const throw(OException);
  1634. void GetValue(int index, char *val, unsigned short maxlen) const throw(OException);
  1635. void GetValue(int index, OObject *val) const throw(OException);
  1636. void GetValue(int index, ORef *val) const throw(OException);
  1637. void InitIterator(void) const throw(OException);
  1638. void IterNext(void) const throw(OException);
  1639. void IterPrev(void) const throw(OException);
  1640. void SetValue(int index, const OValue& val) const throw(OException);
  1641. void SetValue(int index, int val) const throw(OException);
  1642. void SetValue(int index, long val) const throw(OException);
  1643. void SetValue(int index, double val) const throw(OException);
  1644. void SetValue(int index, const char *val) const throw(OException);
  1645. void SetValue(int index, const OObject& val) const throw(OException);
  1646. void SetValue(int index, const ORef& val) const throw(OException);
  1647.     void Trim(int size) const throw(OException);
  1648. //properties
  1649. bool BOC(void) const throw(OException);
  1650. int GetElementType(void) const throw(OException);
  1651. bool EOC(void) const throw(OException);
  1652. bool IsLocator(void) const throw(OException);
  1653. bool IsNull(void) const throw(OException);
  1654. int GetMaxSize(void) const throw(OException);
  1655. int GetSize(void) const throw(OException);
  1656. int GetTableSize(void) const throw(OException);
  1657. int GetType(void) const throw(OException);
  1658. private:
  1659. void HelpInit(void);
  1660. oresult Copy(const OCollection &other);
  1661.     oresult Cleanup(void);
  1662. };
  1663. // ----- OMetaData --------------------------------------------------
  1664. class OEXPORT OMetaData : public OOracleObject
  1665. {
  1666. public:
  1667.     // construction & destruction
  1668. OMetaData(void) throw(OException);
  1669. OMetaData(const OMetaData& other) throw(OException);
  1670. OMetaData(ODatabase& db, const char *SchemaObjectName) throw(OException);
  1671. ~OMetaData(void);
  1672. OMetaData(void *dp);
  1673. OMetaData &operator=(const OMetaData &other);
  1674. //methods
  1675. void Open(ODatabase& db, const char *SchemaObjectName) throw(OException);
  1676. void Close(void) throw(OException);
  1677. OMDAttribute GetAttribute(int index) const throw(OException);
  1678. OMDAttribute GetAttribute(const char *index) const throw(OException);
  1679. OValue GetAttrValue(int index) const throw(OException);
  1680. OValue GetAttrValue(const char *attrname) const throw(OException);
  1681. void GetAttrValue(int index, OValue *value) const throw(OException);
  1682. void GetAttrValue(const char *attrname, OValue *value) const throw(OException);
  1683.     // properties
  1684.     int GetType(void) const throw(OException);  
  1685. int GetCount(void) const throw(OException);
  1686. const char* GetAttrName(int index) throw(OException);
  1687. private:
  1688. char *m_name;
  1689. void HelpInit(void);
  1690. oresult Copy(const OMetaData &other);
  1691.     oresult Cleanup(void);
  1692. };
  1693. // ----- OMDAttribute --------------------------------------------------
  1694. class OEXPORT OMDAttribute : public OOracleObject
  1695. {
  1696. public:
  1697.     // construction & destruction
  1698. OMDAttribute(void) throw(OException);
  1699. OMDAttribute(const OMDAttribute& other) throw(OException);
  1700. ~OMDAttribute(void);
  1701. OMDAttribute(void *dp);
  1702. OMDAttribute &operator=(const OMDAttribute &other);
  1703. void Close(void) throw(OException);
  1704.     // properties
  1705.     const char* GetName(void) throw(OException);  
  1706. bool IsMDObject(void) const throw(OException);
  1707. OValue GetValue(void) const throw(OException);
  1708. void GetValue(OValue *value) const throw(OException); 
  1709. private:
  1710. char *m_name;
  1711. void HelpInit(void);
  1712. oresult Copy(const OMDAttribute &other);
  1713.     oresult Cleanup(void);
  1714. };
  1715. // ----- OBlob --------------------------------------------------
  1716. class OEXPORT OBlob : public OOracleObject
  1717. {
  1718. public:
  1719. // construction & destruction
  1720. OBlob(void) throw(OException);
  1721.     ~OBlob(void);
  1722. OBlob(void *dp);
  1723. OBlob &operator=(const OBlob &other);
  1724. void Close(void) throw(OException);
  1725. //methods
  1726. void Append(const OBlob& other) const throw(OException);
  1727. OBlob Clone(void) const throw(OException);
  1728. void Clone(OBlob* dest) const throw(OException);
  1729. bool Compare(const OBlob& src_lob, unsigned long amount, unsigned long dst_offset = 1,
  1730. unsigned long src_offset = 1) const throw(OException);
  1731. void CopyFromBlob(const OBlob& src_lob, unsigned long amount, unsigned long dst_offset =1,
  1732. unsigned long src_offset = 1) const throw(OException);
  1733. void CopyFromBfile(const OBfile& src_bfile, unsigned long amount, unsigned long dst_offset = 1,
  1734. unsigned long src_offset = 1) const throw(OException);
  1735. void CopyFromFile(const char *filename, unsigned long amount = 0, unsigned long chunksize = 0, 
  1736. unsigned long offset = 1) const throw(OException);
  1737. void CopyToFile(const char *filename, unsigned long amount, unsigned long chunksize,
  1738. unsigned long offset = 1) const throw(OException);
  1739. void DisableBuffering(void) const throw(OException);
  1740. void EnableBuffering(void) const throw(OException);
  1741. void Erase(unsigned long amount, unsigned long offset) const throw(OException);
  1742. void FlushBuffer(void) const throw(OException);
  1743. unsigned long MatchPos(const char *pattern, unsigned long bufsize, unsigned long offset,
  1744. unsigned long nth) const throw(OException);
  1745. unsigned long Read(unsigned char *buffer, unsigned long buffersize,
  1746. unsigned long offset = 0) const throw(OException);
  1747. unsigned long Read(short *status, unsigned char *buffer, unsigned long buffersize,
  1748. unsigned long offset = 0) const throw(OException);
  1749. void Trim(unsigned long newlen) const throw(OException);
  1750. unsigned long Write(short *status, unsigned char *buffer, unsigned long buffersize,
  1751. unsigned char piecetype = OLOB_ONE_PIECE,
  1752. unsigned long offset = 0) const throw(OException);
  1753. unsigned long Write(unsigned char *buffer, unsigned long buffersize,
  1754. unsigned char piecetype = OLOB_ONE_PIECE,
  1755. unsigned long offset = 0) const throw(OException);
  1756. void EnableStreaming(unsigned long totalamount, unsigned long initialoffset = 1) const throw(OException);
  1757. void DisableStreaming(void) const throw(OException);
  1758. unsigned long GetOptimumChunkSize(void) const throw(OException);
  1759. //properties
  1760. bool IsNull(void) const throw(OException);
  1761. unsigned long GetSize(void) const throw(OException);  
  1762. private:
  1763. void HelpInit(void);
  1764. oresult Copy(const OBlob &other);
  1765.     oresult Cleanup(void);
  1766. };
  1767. // ----- OClob --------------------------------------------------
  1768. class OEXPORT OClob : public OOracleObject
  1769. {
  1770. public:
  1771. // construction & destruction 
  1772. OClob(void) throw(OException);
  1773.     ~OClob(void);
  1774. OClob(void *dp);
  1775. OClob &operator=(const OClob &other);
  1776. void Close(void) throw(OException);
  1777. //methods
  1778. void Append(const OClob& pOther) const throw(OException);
  1779. OClob Clone(void) const throw(OException);
  1780. void Clone(OClob* dest) const throw(OException);
  1781. bool Compare(const OClob& src_lob, unsigned long amount, unsigned long dst_offset = 1, 
  1782. unsigned long src_offset = 1) const throw(OException);
  1783. void CopyFromClob(const OClob& src_lob, unsigned long amount, 
  1784. unsigned long dst_offset = 1, unsigned long src_offset = 1) const throw(OException);
  1785. void CopyFromBfile(const OBfile& src_bfile, unsigned long amount,
  1786. unsigned long dst_offset = 1, unsigned long src_offset = 1) const throw(OException);
  1787. void CopyFromFile(const char *filename, unsigned long amount = 0, unsigned long chunksize = 0, 
  1788. unsigned long offset = 1) const throw(OException);
  1789. void CopyToFile(const char *filename, unsigned long amount, unsigned long chunksize,
  1790. unsigned long offset = 1) const throw(OException);
  1791. void DisableBuffering(void) const throw(OException);
  1792. void EnableBuffering(void) const throw(OException);
  1793. void Erase(unsigned long amount, unsigned long offset) const throw(OException);
  1794. void FlushBuffer(void) const throw(OException);
  1795. unsigned long MatchPos(const char *pattern, unsigned long bufsize, unsigned long offset,
  1796. unsigned long nth) const throw(OException);
  1797. unsigned long Read(unsigned char *buffer, unsigned long buffersize, unsigned long offset = 0) const throw(OException);
  1798. unsigned long Read(short *status, unsigned char *buffer, unsigned long buffersize,
  1799. unsigned long offset = 0) const throw(OException);
  1800. void Trim(unsigned long newlen) const throw(OException);
  1801. unsigned long Write(short *status, unsigned char *buffer, unsigned long buffersize,
  1802. unsigned char piecetype = OLOB_ONE_PIECE, unsigned long offset = 0) const throw(OException);
  1803. unsigned long Write(unsigned char *buffer, unsigned long buffersize, 
  1804. unsigned char piecetype = OLOB_ONE_PIECE, unsigned long offset = 0) const throw(OException);
  1805. void EnableStreaming(unsigned long totalamount, unsigned long initialoffset = 1) const throw(OException);
  1806. void DisableStreaming(void) const throw(OException);
  1807. unsigned long GetOptimumChunkSize(void) const throw(OException);
  1808. //properties
  1809. bool IsNull(void) const throw(OException);       
  1810. unsigned long GetSize(void) const throw(OException);
  1811. private:
  1812. void HelpInit(void);
  1813. oresult Copy(const OClob &other);
  1814.     oresult Cleanup(void);
  1815. };
  1816. // ----- OBfile --------------------------------------------------
  1817. class OEXPORT OBfile : public OOracleObject
  1818. {
  1819. public:
  1820. // construction & destruction
  1821.     OBfile(void) throw(OException);
  1822. OBfile(const OBfile& other) throw(OException);
  1823.     ~OBfile(void); 
  1824. OBfile(void *dp);
  1825. OBfile &operator=(const OBfile &other);
  1826. void Close(void) throw(OException);
  1827. //methods
  1828. OBfile Clone(void) const throw(OException);
  1829. void Clone(OBfile* dest) const throw(OException);
  1830. void CloseBfile(void) const throw(OException);
  1831. void CloseAll(void) const throw(OException);
  1832. bool Compare(const OBfile& src_lob, unsigned long amount, unsigned long dst_offset = 1,
  1833. unsigned long src_offset = 1) const throw(OException);
  1834. void CopyToFile(const char *filename, unsigned long amount, unsigned long chunksize,
  1835. unsigned long offset = 1) const throw(OException);
  1836. unsigned long MatchPos(const char *pattern, unsigned long bufsize, unsigned long offset,
  1837. unsigned long nth) const throw(OException);
  1838. void OpenBfile(void) const throw(OException);
  1839. unsigned long Read(unsigned char *buffer, unsigned long buffersize,
  1840. unsigned long offset = 0) const throw(OException);
  1841. unsigned long Read(short *status, unsigned char *buffer, unsigned long buffersize,
  1842. unsigned long offset = 0) const throw(OException);
  1843. void EnableStreaming(unsigned long totalamount, unsigned long initialoffset = 1) const throw(OException);
  1844. void DisableStreaming(void) const throw(OException);
  1845. //properties
  1846. const char* GetDirectoryName(void) throw(OException);
  1847. void SetDirectoryName(const char *dirname) const throw(OException);
  1848. const char* GetFileName(void) throw(OException);
  1849. void SetFileName(const char *filename) const throw(OException);
  1850. void GetFileName(const char **dirname, const char **filename) throw(OException);
  1851. void SetFileName(const char *dirname, const char *filename) throw(OException);
  1852. bool Exists(void) const throw(OException);
  1853. bool IsNull(void) const throw(OException); 
  1854. bool IsBfileOpen(void) const throw(OException);
  1855. unsigned long GetSize(void) const throw(OException);         
  1856. private:
  1857. char *m_filename;
  1858. char *m_dirname;
  1859. void HelpInit(void);
  1860. oresult Copy(const OBfile &other);
  1861.     oresult Cleanup(void);
  1862. };
  1863. // ----- OSnapshotID --------------------------------------------------
  1864. class OEXPORT OSnapshotID : public OOracleObject
  1865. {
  1866. public:
  1867.     // construction & destruction
  1868. OSnapshotID(void) throw(OException);
  1869. OSnapshotID(const OSnapshotID& other) throw(OException);
  1870. OSnapshotID(ODynaset& dyn) throw(OException);
  1871. ~OSnapshotID(void);
  1872. OSnapshotID(void *dp); 
  1873. OSnapshotID &operator=(const OSnapshotID &other);
  1874. //methods
  1875. void Open(ODynaset& dyn) throw(OException);
  1876. void Close(void) throw(OException);
  1877. private:
  1878. void HelpInit(void);
  1879. oresult Copy(const OSnapshotID &other);
  1880.     oresult Cleanup(void);
  1881. };
  1882. // ----- OAQ --------------------------------------------------
  1883. class OEXPORT OAQ : public OOracleObject
  1884. {
  1885. public:
  1886. // constructors
  1887. OAQ(void) throw(OException);
  1888. OAQ(const OAQ& other) throw(OException);
  1889. OAQ(const ODatabase& odb, const char *queuename) throw(OException);
  1890. ~OAQ(void);
  1891. OAQ(void *dp);
  1892. OAQ &operator=(const OAQ &other);
  1893.     //methods
  1894. void Open(const ODatabase& odb, const char *queuename) throw(OException);
  1895. void Close(void) throw(OException);
  1896. const char* Dequeue(void) throw(OException);
  1897.     const char* Enqueue(void) throw(OException);
  1898. // properties
  1899. void SetVisibility(int val) const throw(OException);
  1900. int GetVisibility(void) const throw(OException);
  1901. void SetRelMsgID(const char *msgid) const throw(OException);
  1902. const char* GetRelMsgID(void) throw(OException);
  1903. void SetConsumer(const char *name) const throw(OException);
  1904. const char* GetConsumer(void) throw(OException);
  1905. void SetDequeueMode(int mode) const throw(OException);
  1906. int GetDequeueMode(void) const throw(OException);
  1907. void SetNavigation(int position) const throw(OException);
  1908. int GetNavigation(void) const throw(OException);
  1909. void SetWait(int duration) const throw(OException);
  1910. int GetWait(void) const throw(OException);
  1911. void SetCorrelate(const char *identifier) const throw(OException);
  1912. const char* GetCorrelate(void) throw(OException);
  1913. void SetDequeueMsgID(const char *msg_id) const throw(OException);
  1914. const char* GetDequeueMsgID(void) throw(OException);
  1915. private:
  1916. char *m_initenqmsgid;
  1917. char *m_initdeqmsgid;
  1918. char *m_relmsgid;
  1919. char *m_consumername;
  1920. char *m_correlateid;
  1921. char *m_deqmsgid;
  1922. void HelpInit(void);
  1923. oresult Copy(const OAQ &other);
  1924.     oresult Cleanup(void);
  1925. };
  1926. // ----- OAQMsg -----------------------------------------------
  1927. class OEXPORT OAQMsg : public OOracleObject
  1928. {
  1929. public:
  1930.     // constructors
  1931. OAQMsg(void) throw(OException);
  1932. OAQMsg(const OAQMsg& other) throw(OException);
  1933. OAQMsg(OAQ& aq, int msgtype = OTYPE_RAW, const char *tname = NULL, const char *schema= NULL) throw(OException);
  1934. ~OAQMsg(void);
  1935. OAQMsg(void *dp);
  1936. OAQMsg &operator=(const OAQMsg &other);
  1937. //methods
  1938. void Open(OAQ& aq, int msgtype=OTYPE_RAW, const char *tname = NULL, const char *schema = NULL) throw(OException);
  1939. void Close(void) throw(OException);
  1940.     
  1941. // properties
  1942. long GetValue(char *val, unsigned short maxlen) const throw(OException);       
  1943. void GetValue(OValue *val) const throw(OException);
  1944. void GetValue(OObject *val) const throw(OException);
  1945. void SetValue(OValue& val) const throw(OException);
  1946. int GetDelay(void) const throw(OException);
  1947. void SetDelay(int delay) const throw(OException);
  1948. const char* GetExceptionQueue(void) throw(OException);
  1949. void SetExceptionQueue(const char *qname) const throw(OException);
  1950. int GetPriority(void) const throw(OException);
  1951. void SetPriority(int priority) const throw(OException);
  1952. const char* GetCorrelation(void) throw(OException);
  1953. void SetCorrelation(const char *corr) const throw(OException);
  1954.     int GetExpiration(void) const throw(OException);
  1955. void SetExpiration(int expiretime) const throw(OException);
  1956. private:
  1957. char *m_qname;
  1958. char *m_corr;
  1959. char *m_value;
  1960. void HelpInit(void);
  1961. oresult Copy(const OAQMsg &other);
  1962.     oresult Cleanup(void);
  1963. };
  1964. // ----- OAQAgent -----------------------------------------------
  1965. class OEXPORT OAQAgent : public OOracleObject
  1966. {
  1967. public:
  1968.     // constructors
  1969. OAQAgent(void) throw(OException);
  1970. OAQAgent(const OAQAgent& other) throw(OException);
  1971. OAQAgent(OAQMsg &msg, const char *name, const char *addr) throw(OException);
  1972. ~OAQAgent(void);
  1973. OAQAgent(void *dp);
  1974. OAQAgent &operator=(const OAQAgent &other);
  1975. //methods
  1976. void Open(OAQMsg &msg, const char *name, const char *addr) throw(OException);
  1977. void Close(void) throw(OException);
  1978. // properties
  1979.     const char* GetName(void) throw(OException);
  1980. void SetName(const char *name) const throw(OException);
  1981. const char* GetAddress(void) throw(OException);
  1982. void SetAddress(const char *address) const throw(OException);
  1983. private:
  1984. char *m_name;
  1985. char *m_address;
  1986. void HelpInit(void);
  1987. oresult Copy(const OAQAgent &other);
  1988.     oresult Cleanup(void);
  1989. };
  1990. #ifdef ORAANSI
  1991. typedef char FAR* BSTRA;
  1992. typedef BSTRA * LPBSTRA;
  1993. typedef struct FARSTRUCT tagVARIANTA  VARIANTA;
  1994. typedef struct FARSTRUCT tagVARIANTA FAR * LPVARIANTA;
  1995. typedef struct FARSTRUCT tagVARIANTA VARIANTARGA;
  1996. typedef struct FARSTRUCT tagVARIANTA FAR * LPVARIANTARGA;
  1997. struct FARSTRUCT tagVARIANTA{
  1998. VARTYPE vt;
  1999. unsigned short wReserved1;
  2000. unsigned short wReserved2;
  2001. unsigned short wReserved3;
  2002. union {
  2003.   unsigned char bVal;              /* VT_UI1                */
  2004.   short    iVal;              /* VT_I2                */
  2005.   long     lVal;              /* VT_I4                */
  2006.   float    fltVal;            /* VT_R4                */
  2007.   double       dblVal;            /* VT_R8                */
  2008.   VARIANT_BOOL boolvar;              /* VT_BOOL              */
  2009.   SCODE    scode;             /* VT_ERROR             */
  2010.   CY       cyVal;             /* VT_CY                */
  2011.   DATE     date;              /* VT_DATE              */
  2012.   BSTRA    bstrVal;           /* VT_BSTR              */
  2013.   IUnknown     FAR* punkVal;      /* VT_UNKNOWN           */
  2014.   IDispatch  FAR* pdispVal;     /* VT_DISPATCH          */
  2015.   SAFEARRAY   FAR* parray;       /* VT_ARRAY|*           */
  2016.   unsigned char    FAR* pbVal;        /* VT_BYREF|VT_UI1       */
  2017.   short    FAR* piVal;        /* VT_BYREF|VT_I2       */
  2018.   long     FAR* plVal;        /* VT_BYREF|VT_I4       */
  2019.   float    FAR* pfltVal;      /* VT_BYREF|VT_R4       */
  2020.   double       FAR* pdblVal;      /* VT_BYREF|VT_R8       */
  2021.   VARIANT_BOOL FAR* pbool;        /* VT_BYREF|VT_BOOL     */
  2022.   SCODE    FAR* pscode;       /* VT_BYREF|VT_ERROR    */
  2023.   CY       FAR* pcyVal;       /* VT_BYREF|VT_CY       */
  2024.   DATE     FAR* pdate;        /* VT_BYREF|VT_DATE     */
  2025.   BSTRA    FAR* pbstrVal;     /* VT_BYREF|VT_BSTR     */
  2026.   IUnknown   FAR* FAR* ppunkVal;  /* VT_BYREF|VT_UNKNOWN  */
  2027.   IDispatch FAR* FAR* ppdispVal; /* VT_BYREF|VT_DISPATCH */
  2028.   SAFEARRAY FAR* FAR* pparray;   /* VT_BYREF|VT_ARRAY|*  */
  2029.   VARIANT    FAR* pvarVal;      /* VT_BYREF|VT_VARIANT  */
  2030.   void     FAR* byref;        /* Generic ByRef        */
  2031. }
  2032. #if defined(NONAMELESSUNION) || (defined(_MAC) && !defined(__cplusplus) && !defined(_CID_MS20))
  2033. u
  2034. #endif
  2035. ;
  2036. };
  2037. STDAPI_(BSTRA) SysAllocStringA(const char FAR*);
  2038. #define SysAllocStringLenA SysAllocStringByteLen
  2039. inline void SysFreeStringA(BSTRA bstr) { SysFreeString((BSTR)bstr); }
  2040. STDAPI_(int)   SysReAllocStringLenA(BSTRA FAR*, const char FAR*, unsigned int);
  2041. HRESULT ConvertVariantToA(LPVARIANTA);
  2042. HRESULT ConvertVariantToW(LPVARIANT);
  2043. STDAPI  VariantChangeTypeA( VARIANTARGA FAR* pvargDest,VARIANTARGA FAR* pvarSrc,unsigned short wFlags,VARTYPE vt);
  2044. #endif // WRAPPER
  2045. #endif // ORACL_ORACLE