| /* Copyright (c) 2000, 2009, Oracle and/or its affiliates. |
| All rights reserved. */ |
| |
| /* |
| NAME |
| occiData.h - header file for OCCI data classes |
| |
| DESCRIPTION |
| Class definitions for Stream, Blob, Clob ,Bfile, |
| Number, Date, IntervalYM, IntervalDS, Time, |
| Timestamp |
| |
| RELATED DOCUMENTS |
| <note any documents related to this facility> |
| |
| EXPORT FUNCTION(S) |
| <external functions declared for use outside package - |
| one-line descriptions> |
| |
| INTERNAL FUNCTION(S) |
| <other external functions declared - one-line descriptions> |
| |
| EXAMPLES |
| |
| NOTES |
| <other useful comments, qualifications, etc.> |
| |
| MODIFIED (MM/DD/YY) |
| kkverma 11/23/09 - Replace OCIEnv* type ocienv member to Environment type |
| slynn 03/18/08 - Add get/setContentType. |
| slynn 09/14/06 - Remove string.clear() |
| slynn 07/28/06 - Migrate to new 11g LOB terminology |
| slynn 06/21/06 - Add LobRegion |
| slynn 05/25/06 - New NG Lob Functionality. |
| cparampa 09/06/04 - Date changes |
| shiyer 10/31/03 - Timestamp constructors issue |
| rvallam 10/07/03 - bug 3089939 - add private method in Date to compute |
| hour and min component in daysBetween to be passed |
| to set method of IntervalDS. |
| cparampa 08/21/03 - added toCopy to IntervalDS and IntervalYM |
| cparampa 07/14/03 - make SubscriptionImpl friend of Bytes class. |
| rvallam 02/12/03 - modified BFloat/BDouble interface - BFloat/BDouble |
| type is now a struct |
| cparampa 01/20/03 - made ProducerImpl friend of Bytes class |
| rvallam 11/19/02 - objects support for interval class |
| shiyer 11/15/02 - Add UTF16 support to IntervalYM & IntervalDS |
| cparampa 12/11/02 - removed references to class Payload |
| cparampa 10/12/02 - AQ additions |
| shiyer 10/12/02 - Added UTF16 version of get/set CharsetId in Clob |
| shiyer 09/06/02 - OCCI globalization support |
| aahluwal 06/04/02 - bug 2360115 |
| vvinay 02/21/02 - operator= added for Bytes |
| gayyappa 10/23/01 - fix bug 2073327 , use string instead of |
| enum CharSet |
| vvinay 12/21/01 - signed char constructor and cast operator |
| (bug 2073334) |
| binary operator methods not friends any more |
| gayyappa 15/10/01 - add parameter toCopy to Lob/Timestamp private |
| constructors |
| rvallam 04/09/01 - change private constructor in Number to pass |
| parameter by reference and made it const |
| chliang 03/05/01 - disable olint |
| rvallam 01/27/02 - remove #include <ostream> |
| gayyappa 01/17/01 - add methods/operators to Interval and |
| timestamp classes.. |
| gayyappa 12/15/00 - interface changes in set methods |
| rvallam 11/29/00 - change method signature in Bytes |
| added 3 new methods in Number |
| rvallam 10/20/00 - change method signatures in Date |
| rvallam 09/15/00 - make StmtImpl/ResultSetImpl friend to |
| interval classes |
| gayyappa 08/21/00 - modified timestamp, interval headers. |
| add OCIEnv to constructor of Bytes., |
| removed getOCIRaw from Bytes. |
| add const to setVector mthds of anydata. |
| add void* data member to Timestamp/Interval. |
| rvallam 08/10/00 - modified CORE class headers to add friends , |
| added private constructor in Bytes |
| slari 08/02/00 - comment out Stream |
| rratnam 08/04/00 - updated the LOB stream interface |
| rkasamse 08/07/00 - make getVector friend of Time |
| slari 07/31/00 - add const to Bytes methods |
| slari 07/25/00 - disable Bytes(Bytes *) |
| slari 07/23/00 - add Bytes |
| gayyappa 07/26/00 - update Timestamp, IntervalYM, IntervalDS. |
| gayyappa 07/04/00 - for fixing a problem in occiNumber |
| rratnam 06/13/00 - Updated LOB class headers |
| kmohan 05/31/00 - Change Environment to Environment * in |
| Date constructor |
| kmohan 05/29/00 - No string |
| rkasamse 04/25/00 - Added string class header |
| etucker 04/19/00 - Added CORE class headers |
| kmohan 04/11/00 - Creation |
| |
| */ |
| |
| #ifndef _olint /* disable olint check */ |
| |
| #ifndef OCCIDATA_ORACLE |
| # define OCCIDATA_ORACLE |
| |
| #ifndef OCCICOMMON_ORACLE |
| #include <occiCommon.h> |
| #endif |
| |
| #ifndef OCCICONTROL_ORACLE |
| #include <occiControl.h> |
| #endif |
| |
| namespace oracle { |
| namespace occi { |
| class Bytes |
| { |
| |
| public: |
| |
| Bytes(const Environment *env = NULL); // default constructor |
| |
| Bytes(unsigned char *value, unsigned int count, |
| unsigned int offset = 0, const Environment *env = NULL); |
| |
| Bytes(const Bytes &e); // copy constructor |
| |
| |
| // public methods |
| |
| void getBytes(unsigned char *dst, unsigned int count, |
| unsigned int srcBegin = 0, |
| unsigned int dstBegin = 0) const; |
| |
| unsigned int length() const; |
| |
| unsigned char byteAt(unsigned int index) const; |
| |
| bool isNull() const; |
| |
| void setNull(); |
| |
| void operator=(const Bytes &other); |
| |
| ~Bytes(); |
| |
| private: |
| // private data members |
| Bytes(OCIEnv *,OCIRaw *) ; |
| Bytes(Ptr<BytesImpl> bytesPtr) ; |
| Ptr<BytesImpl> ptr_; |
| friend class AnyDataImpl; |
| friend class aq::MessageImpl; |
| friend class aq::ProducerImpl; |
| friend class aq::SubscriptionImpl; |
| friend void getVector(const AnyData &any, |
| OCCI_STD_NAMESPACE::vector<Bytes> &vect) ; |
| friend void setVector(AnyData &any, |
| const OCCI_STD_NAMESPACE::vector<Bytes> &vect) ; |
| |
| }; |
| |
| class Bfile |
| { |
| public : |
| |
| Bfile(); |
| Bfile(const Connection *connectionp) ; |
| Bfile(const Bfile &srcBfile) ; |
| ~Bfile(); |
| unsigned int length() const ; |
| OCCI_STD_NAMESPACE::string getDirAlias() const ; |
| UString getUStringDirAlias() const ; |
| OCCI_STD_NAMESPACE::string getFileName() const ; |
| UString getUStringFileName() const ; |
| void setName(const OCCI_STD_NAMESPACE::string &dirAlias, |
| const OCCI_STD_NAMESPACE::string &fileName) ; |
| void setName(const UString &dirAlias, const UString &fileName) ; |
| bool fileExists() const ; |
| Bfile& operator =(const Bfile &srcBfile) ; |
| bool operator ==(const Bfile &srcBfile) const ; |
| bool operator !=(const Bfile &srcBfile) const ; |
| void setNull() ; |
| bool isNull() const ; |
| bool isInitialized() const; |
| void open() ; |
| void close() ; |
| bool isOpen() const ; |
| unsigned int read(unsigned int amt, unsigned char *buffer, |
| unsigned int bufsize, unsigned int offset = 1) const ; |
| Stream* getStream(unsigned int offset = 1, |
| unsigned int amount =0) ; |
| void closeStream(Stream *stream); |
| |
| private: |
| |
| //Data Members: |
| |
| // pointer to the FILE locator |
| OCIBFileLocator *filep; |
| |
| // pointer to the ConnectionImpl instance |
| const ConnectionImpl *connp; |
| |
| // pointer to the LobStreamImpl instance obtained from this FILE |
| LobStreamImpl *streamp; |
| |
| void *bfileExt; |
| |
| //Enumerations: |
| enum {MAXDIRNAMELEN = 32, MAXFILENAMELEN = 256}; |
| |
| //Constructor: |
| Bfile(const Connection *connectionp, |
| OCIBFileLocator *locatorp, bool toCopy = true) ; |
| |
| //Methods: |
| OCIBFileLocator* getLocator() const; |
| void do_getDirAlias( void * dirAlias, ub2 * dirAliasLen) const ; |
| void do_getFileName( void * fileName, ub2 * fileNameLen) const ; |
| void do_setName( void * alias, ub2 aliasLen, |
| void *fileName, ub2 fileNameLen); |
| // Friends |
| friend class AnyDataImpl; |
| friend class StatementImpl; |
| friend class ResultSetImpl; |
| friend class Blob; |
| friend class Clob; |
| friend class aq::MessageImpl; |
| |
| friend void getVector(const AnyData&, OCCI_STD_NAMESPACE::vector<Bfile>&) ; |
| friend void getVector(Statement*, unsigned int, |
| OCCI_STD_NAMESPACE::vector<Bfile>&) ; |
| friend void getVector(ResultSet*, unsigned int , |
| OCCI_STD_NAMESPACE::vector<Bfile>&) ; |
| friend void setVector(AnyData&, const OCCI_STD_NAMESPACE::vector<Bfile>&) ; |
| friend void do_setVectorOfBfile(Statement*, unsigned int, |
| const OCCI_STD_NAMESPACE::vector<Bfile>&, void *, unsigned int, |
| void *, unsigned int ) ; |
| |
| #ifdef ORAXB8_DEFINED |
| friend void readVectorOfBfiles(const Connection *conn, |
| OCCI_STD_NAMESPACE::vector<Bfile> &vec, |
| oraub8 *byte_amts, oraub8 *offsets, |
| unsigned char *buffers[], oraub8 *buffer_lens); |
| #endif |
| }; |
| |
| |
| #ifdef ORAXB8_DEFINED |
| // See the end of this file for implementation of LobRegion |
| template < typename lobType > class LobRegion |
| { |
| private: |
| lobType *_primary; |
| oraub8 _primaryOffset; |
| oraub8 _offset; |
| oraub8 _length; |
| OCCI_STD_NAMESPACE::string _mimeType; |
| |
| void setPrimary(const ConnectionImpl *connp, |
| OCILobLocator *locator); |
| |
| public: |
| LobRegion(); |
| ~LobRegion(); |
| lobType *getPrimary(); |
| oraub8 getPrimaryOffset(); |
| oraub8 getOffset(); |
| oraub8 getLength(); |
| OCCI_STD_NAMESPACE::string getMimeType(); |
| |
| friend class Blob; |
| friend class Clob; |
| }; |
| |
| typedef LobRegion<Blob> BlobRegion; |
| typedef LobRegion<Clob> ClobRegion; |
| #endif |
| |
| |
| class Blob |
| { |
| public: |
| |
| Blob(); |
| Blob(const Connection *connectionp) ; |
| Blob(const Blob &srcBlob) ; |
| ~Blob(); |
| unsigned int getChunkSize() const ; |
| unsigned int length() const ; |
| Blob& operator =(const Blob &srcBlob) ; |
| bool operator ==(const Blob &srcBlob) const ; |
| bool operator !=(const Blob &srcBlob) const ; |
| void setNull() ; |
| bool isNull() const ; |
| void setEmpty() ; |
| void setEmpty(const Connection *connectionp) ; |
| bool isInitialized() const; |
| void open(LobOpenMode mode=OCCI_LOB_READWRITE) ; |
| void close() ; |
| bool isOpen() const ; |
| void copy(const Blob &srcBlob, unsigned int numBytes, |
| unsigned int dstOffset =1, unsigned int srcOffset =1) ; |
| void copy(const Bfile &srcBfile, unsigned int numBytes, |
| unsigned int dstOffset =1, unsigned int srcOffset =1) ; |
| void append(const Blob &srcBlob) ; |
| unsigned int read(unsigned int amt, unsigned char *buffer, |
| unsigned int bufsize, unsigned int offset = 1) const ; |
| unsigned int write(unsigned int amt, unsigned char *buffer, |
| unsigned int bufsize, unsigned int offset = 1) ; |
| unsigned int writeChunk(unsigned int amt, unsigned char *buffer, |
| unsigned int bufsize, unsigned int offset = 1) ; |
| void trim(unsigned int newlen) ; |
| Stream* getStream(unsigned int offset = 1, |
| unsigned int amount =0) ; |
| void closeStream(Stream *stream); |
| LobOptionValue getOptions(LobOptionType optType); |
| void setOptions(LobOptionType optType, LobOptionValue value); |
| OCCI_STD_NAMESPACE::string getContentType(void); |
| void setContentType(const OCCI_STD_NAMESPACE::string contentType); |
| |
| void getDeduplicateRegions(OCCI_STD_NAMESPACE::vector<BlobRegion> ®ions); |
| private: |
| |
| //Data Members: |
| |
| // pointer to the BLOB locator |
| OCIBlobLocator *lobp; |
| |
| // pointer to the ConnectionImpl instance |
| const ConnectionImpl *connp; |
| |
| // pointer to the LobStreamImpl instance obtained from this LOB |
| LobStreamImpl *streamp; |
| |
| //for future use ! |
| void *blobExt; |
| |
| //Constructor: |
| Blob(const Connection *connectionp, |
| OCIBlobLocator *locatorp, bool toCopy=true) ; |
| |
| //Methods: |
| OCIBlobLocator* getLocator() const; |
| |
| // Friends |
| friend class AnyDataImpl; |
| friend class StatementImpl; |
| friend class ResultSetImpl; |
| |
| #ifdef ORAXB8_DEFINED |
| friend void |
| LobRegion<Blob>::setPrimary(const ConnectionImpl *connp, |
| OCILobLocator *locator); |
| #endif |
| friend void getVector(const AnyData&, OCCI_STD_NAMESPACE::vector<Blob>&) ; |
| friend void getVector(Statement*, unsigned int, |
| OCCI_STD_NAMESPACE::vector<Blob>&) ; |
| friend void getVector(ResultSet*, unsigned int, |
| OCCI_STD_NAMESPACE::vector<Blob>&) ; |
| friend void setVector(AnyData&, const OCCI_STD_NAMESPACE::vector<Blob>&) ; |
| friend void do_setVectorOfBlob(Statement*, unsigned int, |
| const OCCI_STD_NAMESPACE::vector<Blob>&, void *, |
| unsigned int, void *, unsigned int ) ; |
| #ifdef ORAXB8_DEFINED |
| friend void readVectorOfBlobs(const Connection *conn, |
| OCCI_STD_NAMESPACE::vector<Blob> &vec, |
| oraub8 *byte_amts, oraub8 *offsets, |
| unsigned char *buffers[], oraub8 *buffer_lens); |
| friend void writeVectorOfBlobs(const Connection *conn, |
| OCCI_STD_NAMESPACE::vector<Blob> &vec, |
| oraub8 *byte_amts, oraub8 *offsets, |
| unsigned char *buffers[], oraub8 *buffer_lens); |
| #endif |
| }; |
| |
| class Clob |
| { |
| public: |
| |
| Clob(); |
| Clob(const Connection *connectionp) ; |
| Clob(const Clob &srcClob) ; |
| ~Clob(); |
| unsigned int getChunkSize() const ; |
| unsigned int length() const ; |
| OCCI_STD_NAMESPACE::string getCharSetId() const; |
| CharSetForm getCharSetForm() const; |
| void setCharSetId( const OCCI_STD_NAMESPACE::string &charset) ; |
| void setCharSetForm( CharSetForm csfrm) ; |
| Clob& operator =(const Clob &srcClob) ; |
| bool operator ==(const Clob &srcClob) const ; |
| bool operator !=(const Clob &srcClob) const ; |
| void setNull() ; |
| bool isNull() const ; |
| void setEmpty() ; |
| void setEmpty(const Connection *connectionp) ; |
| bool isInitialized() const; |
| void open(LobOpenMode mode=OCCI_LOB_READWRITE) ; |
| void close() ; |
| bool isOpen() const ; |
| void copy(const Clob &srcClob, unsigned int numBytes, |
| unsigned int dstOffset = 1, unsigned int srcOffset = 1) ; |
| void copy(const Bfile &srcBfile, unsigned int numBytes, |
| unsigned int dstOffset = 1, unsigned int srcOffset = 1) ; |
| void append(const Clob &srcClob) ; |
| unsigned int read(unsigned int amt, unsigned char *buffer, |
| unsigned int bufsize, unsigned int offset = 1) const; |
| unsigned int read(unsigned int amt, utext *buffer, |
| unsigned int bufsize, unsigned int offset = 1) const; |
| unsigned int write(unsigned int amt, unsigned char *buffer, |
| unsigned int bufsize, unsigned int offset = 1 ); |
| unsigned int write(unsigned int amt, utext *buffer, |
| unsigned int bufsize, unsigned int offset = 1 ); |
| unsigned int writeChunk(unsigned int amt, unsigned char *buffer, |
| unsigned int bufsize, unsigned int offset = 1 ); |
| unsigned int writeChunk(unsigned int amt, utext *buffer, |
| unsigned int bufsize, unsigned int offset = 1 ); |
| void trim(unsigned int newlen) ; |
| Stream* getStream(unsigned int offset = 1, |
| unsigned int amount =0 ); |
| void closeStream(Stream *stream); |
| LobOptionValue getOptions(LobOptionType optType); |
| void setOptions(LobOptionType optType, LobOptionValue value); |
| OCCI_STD_NAMESPACE::string getContentType(void); |
| void setContentType(const OCCI_STD_NAMESPACE::string contentType); |
| |
| UString getCharSetIdUString() const; |
| void setCharSetIdUString( const UString &charset) ; |
| |
| void getDeduplicateRegions(OCCI_STD_NAMESPACE::vector<ClobRegion> ®ions); |
| |
| private: |
| |
| //Data Members: |
| |
| // pointer to the CLOB locator |
| OCIClobLocator *lobp; |
| |
| // pointer to the ConnectionImpl instance |
| const ConnectionImpl *connp; |
| |
| // pointer to the LobStreamImpl instance obtained from this LOB |
| LobStreamImpl *streamp; |
| |
| //charset id |
| ub2 charsetId; |
| |
| //charset form |
| CharSetForm charsetForm; |
| |
| //for future use ! |
| void *clobExt; |
| |
| //Constructor: |
| Clob(const Connection *connectionp, |
| OCIClobLocator *locatorp, bool toCopy =true ) ; |
| |
| //Methods: |
| OCIClobLocator* getLocator() const; |
| unsigned int do_read( unsigned int amt, void *buffer, |
| unsigned int bufsize, unsigned int offset) const; |
| unsigned int do_write( unsigned int amt, void *buffer, |
| unsigned int bufsize, unsigned int offset) ; |
| unsigned int do_writeChunk( unsigned int amt, void *buffer, |
| unsigned int bufsize, unsigned int offset) ; |
| |
| // Friends |
| friend class AnyDataImpl; |
| friend class StatementImpl; |
| friend class ResultSetImpl; |
| |
| #ifdef ORAXB8_DEFINED |
| friend void |
| LobRegion<Clob>::setPrimary(const ConnectionImpl *connp, |
| OCILobLocator *locator); |
| #endif |
| friend void getVector(const AnyData&, OCCI_STD_NAMESPACE::vector<Clob>&) ; |
| friend void getVector(Statement*, unsigned int, |
| OCCI_STD_NAMESPACE::vector<Clob>&) ; |
| friend void getVector(ResultSet*, unsigned int, |
| OCCI_STD_NAMESPACE::vector<Clob>&) ; |
| friend void setVector(AnyData&, const OCCI_STD_NAMESPACE::vector<Clob>&) ; |
| friend void do_setVectorOfClob(Statement*, unsigned int, |
| const OCCI_STD_NAMESPACE::vector<Clob>&, void *, |
| unsigned int, void *, unsigned int ) ; |
| #ifdef ORAXB8_DEFINED |
| friend void readVectorOfClobs(const Connection *conn, |
| OCCI_STD_NAMESPACE::vector<Clob> &vec, |
| oraub8 *byte_amts, oraub8 *char_amts, oraub8 *offsets, |
| unsigned char *buffers[], oraub8 *buffer_lens); |
| friend void writeVectorOfClobs(const Connection *conn, |
| OCCI_STD_NAMESPACE::vector<Clob> &vec, |
| oraub8 *byte_amts, oraub8 *char_amts, oraub8 *offsets, |
| unsigned char *buffers[], oraub8 *buffer_lens); |
| friend void readVectorOfClobs(const Connection *conn, |
| OCCI_STD_NAMESPACE::vector<Clob> &vec, |
| oraub8 *byte_amts, oraub8 *char_amts, oraub8 *offsets, |
| utext *buffers[], oraub8 *buffer_lens); |
| friend void writeVectorOfClobs(const Connection *conn, |
| OCCI_STD_NAMESPACE::vector<Clob> &vec, |
| oraub8 *byte_amts, oraub8 *char_amts, oraub8 *offsets, |
| utext *buffers[], oraub8 *buffer_lens); |
| #endif |
| }; |
| |
| class Number |
| { |
| |
| public: |
| |
| // Constructors |
| /* default constructor added */ |
| Number(); |
| Number(const Number &srcNum); |
| Number(long double val) ; |
| Number(double val) ; |
| Number(float val) ; |
| Number(long val) ; |
| Number(int val) ; |
| Number(short val) ; |
| Number(char val) ; |
| Number(signed char val); |
| Number(unsigned long val) ; |
| Number(unsigned int val) ; |
| Number(unsigned short val) ; |
| Number(unsigned char val) ; |
| |
| ~Number(); |
| // Methods |
| const Number abs() const ; |
| // unary negate |
| const Number operator-() ; |
| // unary increment |
| Number& operator++() ; |
| const Number operator++(int) ; |
| // unary decrement |
| Number& operator--() ; |
| const Number operator--(int) ; |
| // assigment operator |
| Number& operator=(const Number &a); |
| // add and assign |
| Number& operator+=(const Number &a) ; |
| // subtract and assign |
| Number& operator-=(const Number &a) ; |
| // Mulitply an assign |
| Number& operator*=(const Number &a) ; |
| // divide and assign |
| Number& operator/=(const Number &a) ; |
| // Modulo and assign |
| Number& operator%=(const Number &a) ; |
| // casting operators |
| operator long() const; |
| operator int() const; |
| operator short() const; |
| operator char() const; |
| operator signed char() const; |
| operator unsigned long() const; |
| operator unsigned int() const; |
| operator unsigned short() const; |
| operator unsigned char() const; |
| operator long double() const; |
| operator double() const; |
| operator float() const; |
| // Decimal shift |
| const Number shift(int val) const ; |
| // Integer Power |
| const Number intPower(int val) const ; |
| const Number ceil() const ; |
| const Number floor() const ; |
| const Number squareroot() const ; |
| int sign() const ; |
| // conversion routines |
| // Format Number and return as a OCCI_STD_NAMESPACE::string |
| OCCI_STD_NAMESPACE::string toText(const Environment *envp, |
| const OCCI_STD_NAMESPACE::string &fmt, |
| const OCCI_STD_NAMESPACE::string &nlsParam="") const |
| ; |
| UString toText(const Environment *envp, |
| const UString &fmt,const UString &nlsParam) const |
| ; |
| // Create an Number from formatted text |
| void fromText(const Environment *envp, |
| const OCCI_STD_NAMESPACE::string &number, |
| const OCCI_STD_NAMESPACE::string &fmt, |
| const OCCI_STD_NAMESPACE::string &nlsParam = "") |
| ; |
| void fromText(const Environment *envp, |
| const UString &number, |
| const UString &fmt, const UString &nlsParam); |
| void fromBytes(const Bytes &s) ; |
| Bytes toBytes() const; |
| // truncate digits |
| const Number trunc(int decplace) const ; |
| // round to the decplace place. |
| const Number round(int decplace) const ; |
| // returns an Number with digits decimal digits |
| const Number prec(int digits) const ; |
| const Number sin() const ; |
| const Number cos() const ; |
| const Number tan() const ; |
| const Number hypSin() const ; |
| const Number hypCos() const ; |
| const Number hypTan() const ; |
| const Number arcSin() const ; |
| const Number arcCos() const ; |
| const Number arcTan() const ; |
| const Number arcTan2(const Number &val) const; |
| const Number power(const Number &val) const; |
| const Number exp() const ; |
| const Number ln() const ; |
| const Number log(const Number &val) const; |
| bool isNull() const; |
| void setNull(); |
| private: |
| /* Private constructor for constructing number from methods inside */ |
| Number(const OCINumber &result); |
| OCINumber getOCINumber() const; |
| |
| OCINumber data; |
| /* a flag to indicate if the Number is null */ |
| bool numberIsNull; |
| void *numberExt; |
| |
| // a >= b |
| friend bool operator>=(const Number &a, const Number &b); |
| // a < = b |
| friend bool operator<=(const Number &a, const Number &b); |
| // a > b |
| friend bool operator>(const Number &a, const Number &b); |
| // a < b |
| friend bool operator<(const Number &a, const Number &b); |
| |
| friend class IntervalDS; |
| friend class IntervalYM; |
| friend const IntervalYM operator*(const IntervalYM &a, |
| const Number& factor) ; |
| friend const IntervalDS operator*(const IntervalDS &a, |
| const Number& factor) ; |
| friend const IntervalYM operator/(const IntervalYM &a, |
| const Number &factor) ; |
| friend const IntervalDS operator/(const IntervalDS &a, |
| const Number &factor) ; |
| friend class ResultSetImpl; |
| friend class StatementImpl; |
| friend class AnyDataImpl; |
| friend void getVector(const AnyData &any, |
| OCCI_STD_NAMESPACE::vector<Number> &vect); |
| friend void setVector(AnyData &any, |
| const OCCI_STD_NAMESPACE::vector<Number> &vect) ; |
| friend Number MetaData::getNumber(MetaData::AttrId attrid) const ; |
| friend void getVector(Statement *stmt, unsigned int paramIndex, |
| OCCI_STD_NAMESPACE::vector<Number> &vect) ; |
| friend void do_setVectorOfNumber(Statement *stmt, unsigned int paramIndex, |
| const OCCI_STD_NAMESPACE::vector<Number> &vect, void *schemaName, |
| unsigned int schemaNameLen, |
| void *typeName, unsigned int typeNameLen); |
| friend void getVector(ResultSet *rs, unsigned int colIndex, |
| OCCI_STD_NAMESPACE::vector<Number> &vect); |
| |
| }; |
| |
| class Date |
| { |
| public: |
| |
| // Constructors |
| Date(); |
| Date(const Date &a); |
| Date(const Environment *envp,int year = 1,unsigned int month = 1, |
| unsigned int day = 1,unsigned int hour = 0, |
| unsigned int minute = 0, unsigned int seconds = 0); |
| ~Date(); |
| // Methods |
| |
| void setDate(int year = 1,unsigned int month = 1,unsigned int day = 1, |
| unsigned int hour = 0,unsigned int minute = 0, |
| unsigned int seconds = 0); |
| void getDate(int &year,unsigned int &month,unsigned int &day, |
| unsigned int &hour ,unsigned int &min ,unsigned int &sec) const; |
| Bytes toBytes() const ; |
| void fromBytes(const Bytes &byteStream, |
| const Environment *envp = NULL); |
| OCCI_STD_NAMESPACE::string toText( |
| const OCCI_STD_NAMESPACE::string &fmt = "", |
| const OCCI_STD_NAMESPACE::string &nlsParam = "") const; |
| UString toText( |
| const UString &fmt , |
| const UString &nlsParam ) const; |
| void fromText(const OCCI_STD_NAMESPACE::string &datestr, |
| const OCCI_STD_NAMESPACE::string &fmt = "", |
| const OCCI_STD_NAMESPACE::string &nlsParam = "", |
| const Environment *envp = NULL); |
| void fromText(const UString &datestr, |
| const UString &fmt , const UString &nlsParam , |
| const Environment *envp = NULL); |
| Date toZone(const OCCI_STD_NAMESPACE::string &zone1, |
| const OCCI_STD_NAMESPACE::string &zone2) const; |
| Date& operator=(const Date &d); |
| Date addMonths(int i) const; |
| Date addDays(int i) const ; |
| Date lastDay() const ; |
| IntervalDS daysBetween(const Date &d) const; |
| Date nextDay(const OCCI_STD_NAMESPACE::string &dow) const; |
| Date nextDay(const UString &dow) const; |
| bool isNull() const; |
| void setNull(); |
| static Date getSystemDate(const Environment *envp) ; |
| |
| private: |
| OCIDate date; |
| const EnvironmentImpl *envp; |
| bool dateIsNull; |
| void *dateExt; |
| |
| /* private constructor */ |
| Date(const Environment *env,OCIDate dateval); |
| OCIDate getOCIDate() const; |
| void constructHourAndMinute(sb4 &seconds, sb4 &hours, sb4 &minutes) const; |
| friend bool operator==(const Date &a,const Date &b); |
| friend bool operator>(const Date &a,const Date &b); |
| friend bool operator<(const Date &a,const Date &b); |
| friend bool operator!=(const Date &a,const Date &b); |
| friend bool operator>=(const Date &a,const Date &b); |
| friend bool operator<=(const Date &a,const Date &b); |
| friend class ResultSetImpl; |
| friend class StatementImpl; |
| friend class AnyDataImpl; |
| friend class aq::MessageImpl; |
| friend void getVector(const AnyData &any, |
| OCCI_STD_NAMESPACE::vector<Date> &vect) ; |
| friend void setVector(AnyData &any, |
| const OCCI_STD_NAMESPACE::vector<Date> &vect); |
| friend void getVector(Statement *stmt, unsigned int paramIndex, |
| OCCI_STD_NAMESPACE::vector<Date> &vect) ; |
| friend void do_setVectorOfDate(Statement *stmt, unsigned int paramIndex, |
| const OCCI_STD_NAMESPACE::vector<Date> &vect, void *schemaName, |
| unsigned int schemaNameLen,void *typeName, unsigned int typeNameLen) ; |
| friend void getVector(ResultSet *rs, unsigned int colIndex, |
| OCCI_STD_NAMESPACE::vector<Date> &vect) ; |
| |
| }; //class Date |
| |
| class Timestamp |
| { |
| public: |
| Timestamp() ; |
| |
| Timestamp( const Environment *env, int year=1, |
| unsigned int month=1, unsigned int day=1, unsigned int hour=0, |
| unsigned int min=0 ,unsigned int sec=0, unsigned int fs=0, |
| int tzhour=0, int tzmin=0) ; |
| Timestamp( const Environment *env, int year, |
| unsigned int month, unsigned int day, unsigned int hour, |
| unsigned int min ,unsigned int sec, unsigned int fs, |
| const OCCI_STD_NAMESPACE::string &timezone); |
| Timestamp( const Environment *env, int year, |
| unsigned int month, unsigned int day, unsigned int hour, |
| unsigned int min ,unsigned int sec, unsigned int fs, |
| const UString &timezone); |
| Timestamp( const Timestamp &src) ; |
| ~Timestamp(); |
| |
| void getTimeZoneOffset( int &hour, int &minute) const ; |
| void getTime( unsigned int &hour, unsigned int &minute, |
| unsigned int &second, unsigned int &fs) const ; |
| void getDate( int &year, unsigned int &month, unsigned int &day )const ; |
| OCCI_STD_NAMESPACE::string toText(const OCCI_STD_NAMESPACE::string &fmt, |
| unsigned int fsprec, |
| const OCCI_STD_NAMESPACE::string &nlsParam ="") const ; |
| UString toText(const UString &fmt, |
| unsigned int fsprec, const UString &nlsParam ) const ; |
| void setTimeZoneOffset( int hour, int minute) ; |
| void setTime( unsigned int hour, unsigned int minute, |
| unsigned int second, unsigned int fs) ; |
| void setDate( int year, unsigned int month, unsigned int day ) ; |
| void setNull() ; |
| void fromText( const OCCI_STD_NAMESPACE::string ×tmpStr, |
| const OCCI_STD_NAMESPACE::string &fmt , |
| const OCCI_STD_NAMESPACE::string &nlsParam= "", |
| const Environment *env =NULL); |
| void fromText( const UString ×tmpStr, |
| const UString &fmt , const UString &nlsParam, |
| const Environment *env =NULL); |
| bool isNull() const; |
| Timestamp & operator =( const Timestamp &src) ; |
| const IntervalYM subYM(const Timestamp& val) const ; |
| const IntervalDS subDS(const Timestamp& val) const ; |
| const Timestamp intervalAdd(const IntervalDS& val) const ; |
| const Timestamp intervalSub(const IntervalDS& val) const ; |
| const Timestamp intervalAdd(const IntervalYM& val) const ; |
| const Timestamp intervalSub(const IntervalYM& val) const ; |
| |
| friend bool operator==(const Timestamp &a,const Timestamp &b); |
| friend bool operator>(const Timestamp &a,const Timestamp &b); |
| friend bool operator<(const Timestamp &a,const Timestamp &b); |
| friend bool operator !=(const Timestamp &a,const Timestamp &b); |
| friend bool operator >=(const Timestamp &a,const Timestamp &b); |
| friend bool operator <=(const Timestamp &a,const Timestamp &b); |
| |
| friend class ResultSetImpl; |
| friend class StatementImpl; |
| friend class AnyDataImpl; |
| |
| private: |
| OCIDateTime *ocidatetime; |
| Environment *env_; |
| void *timestampExt; |
| |
| OCIDateTime *getOCIDateTime() const; |
| void getTZString( OraText *TimeZone, int th, int tm ); |
| Timestamp( Environment *env, OCIDateTime *dt, bool toCopy = true) ; |
| void allocateDataMembers( Environment *env) ; |
| void do_TimestampConstruct( const Environment *env, int year, |
| unsigned int month, unsigned int day, unsigned int hour, unsigned int min, |
| unsigned int sec, unsigned int fs, void *tz, int tsize); |
| |
| friend void getVector(const AnyData &any, |
| OCCI_STD_NAMESPACE::vector<Timestamp> &vect); |
| friend void setVector(AnyData &any, |
| const OCCI_STD_NAMESPACE::vector<Timestamp> &vect) ; |
| friend Timestamp MetaData::getTimestamp( |
| MetaData::AttrId attrid) const ; |
| friend void getVector(ResultSet *rs, unsigned int, |
| OCCI_STD_NAMESPACE::vector<Timestamp> &vect) ; |
| friend void getVector(Statement *rs, unsigned int, |
| OCCI_STD_NAMESPACE::vector<Timestamp> &vect) ; |
| friend void do_setVectorOfTimestamp(Statement *stmt, |
| unsigned int paramIndex, |
| const OCCI_STD_NAMESPACE::vector<Timestamp> &vect, |
| void *schemaName, unsigned int schemaNameLen, |
| void *typeName, unsigned int typeNameLen) ; |
| }; // class Timestamp |
| |
| class IntervalDS |
| { |
| |
| public: |
| IntervalDS() ; |
| IntervalDS( const Environment *env,int day=0, |
| int hour=0, int minute=0, int second=0, |
| int fs=0) ; |
| IntervalDS( const IntervalDS &src) ; |
| |
| ~IntervalDS(); |
| |
| int getDay () const ; |
| int getHour () const ; |
| int getMinute () const ; |
| int getSecond() const ; |
| int getFracSec () const ; |
| void set( int day, int hour, int minute, int second, int fracsec) ; |
| void setNull() ; |
| void fromText( const OCCI_STD_NAMESPACE::string &inpstr, |
| const OCCI_STD_NAMESPACE::string &nlsParam ="", |
| const Environment *env=NULL) ; |
| OCCI_STD_NAMESPACE::string toText( unsigned int lfprec, unsigned int fsprec, |
| const OCCI_STD_NAMESPACE::string &nlsParam="") const ; |
| bool isNull() const; |
| IntervalDS& operator =( const IntervalDS &src) ; |
| IntervalDS& operator +=( const IntervalDS &a); |
| IntervalDS& operator -=( const IntervalDS &a); |
| IntervalDS& operator *=( const Number &factor); |
| IntervalDS& operator /=( const Number &factor); |
| |
| friend bool operator>(const IntervalDS &a, |
| const IntervalDS &b) ; |
| friend bool operator<(const IntervalDS &a, |
| const IntervalDS &b) ; |
| friend bool operator >=( const IntervalDS &a, |
| const IntervalDS &b); |
| friend bool operator <=( const IntervalDS &a, |
| const IntervalDS &b); |
| |
| //UTF16 support |
| void fromUText( const UString &inpstr, const Environment *env=NULL ); |
| UString toUText( unsigned int lfprec, unsigned int fsprec) const; |
| |
| private: |
| OCIInterval *ociinter; |
| OCIEnv *ocienv; |
| void *intervalDSExt; |
| |
| IntervalDS( OCIEnv *env, OCIInterval *inter, bool toCopy = true) ; |
| OCIInterval * getOCIInterval() const; |
| |
| void allocateDataMembers( OCIEnv *env) ; |
| friend const IntervalDS Timestamp::subDS( |
| const Timestamp& val) const ; |
| friend const Timestamp Timestamp::intervalAdd( |
| const IntervalDS& val) const ; |
| friend const Timestamp Timestamp::intervalSub( |
| const IntervalDS& val) const ; |
| friend class Date; |
| friend void getVector(ResultSet *rs, unsigned int, |
| OCCI_STD_NAMESPACE::vector<IntervalDS> &vect) ; |
| friend void getVector(Statement *rs, unsigned int, |
| OCCI_STD_NAMESPACE::vector<IntervalDS> &vect) ; |
| friend void do_setVectorOfIntervalDS(Statement *stmt, |
| unsigned int paramIndex, |
| const OCCI_STD_NAMESPACE::vector<IntervalDS> &vect, |
| void *schemaName, unsigned int schemaNameLen, |
| void *typeName, unsigned int typeNameLen) ; |
| friend class StatementImpl; |
| friend class ResultSetImpl; |
| friend class AnyDataImpl; |
| friend void getVector(const AnyData &any, |
| OCCI_STD_NAMESPACE::vector<IntervalDS> &vect); |
| friend void setVector(AnyData &any, |
| const OCCI_STD_NAMESPACE::vector<IntervalDS> &vect) ; |
| |
| |
| }; //class IntervalDS |
| |
| class IntervalYM |
| { |
| |
| public: |
| IntervalYM() ; |
| IntervalYM( const Environment *env,int year=0, int month=0) ; |
| IntervalYM( const IntervalYM &src) ; |
| ~IntervalYM(); |
| |
| int getYear() const ; |
| int getMonth() const ; |
| |
| void set( int year, int month) ; |
| void setNull() ; |
| void fromText( const OCCI_STD_NAMESPACE::string &inpstr, |
| const OCCI_STD_NAMESPACE::string &nlsParam="", |
| const Environment *env=NULL) ; |
| OCCI_STD_NAMESPACE::string toText( unsigned int lfprec, |
| const OCCI_STD_NAMESPACE::string &nlsParam="") const; |
| bool isNull() const; |
| IntervalYM & operator =( const IntervalYM &src) ; |
| IntervalYM& operator +=( const IntervalYM &a); |
| IntervalYM& operator -=( const IntervalYM &a); |
| IntervalYM& operator *=( const Number &factor); |
| IntervalYM& operator /=( const Number &factor); |
| |
| friend bool operator>(const IntervalYM &a, const IntervalYM &b) ; |
| friend bool operator<( const IntervalYM &a, const IntervalYM &b) ; |
| friend bool operator >=(const IntervalYM &a, const IntervalYM &b); |
| friend bool operator <=(const IntervalYM &a, const IntervalYM &b); |
| |
| //UTF16 support |
| void fromUText( const UString &inpstr, const Environment *env=NULL ); |
| UString toUText( unsigned int lfprec ) const; |
| |
| private: |
| OCIInterval *ociinter; |
| OCIEnv *ocienv; |
| void *intervalYMExt; |
| |
| IntervalYM( OCIEnv *env, OCIInterval *inter, bool toCopy = true) ; |
| OCIInterval *getOCIInterval() const; |
| void allocateDataMembers( OCIEnv *env) ; |
| friend const IntervalYM Timestamp :: subYM( |
| const Timestamp& val) const ; |
| friend const Timestamp Timestamp::intervalAdd( |
| const IntervalYM &val) const ; |
| friend const Timestamp Timestamp::intervalSub( |
| const IntervalYM &val) const ; |
| |
| friend void getVector(ResultSet *rs, unsigned int, |
| OCCI_STD_NAMESPACE::vector<IntervalYM> &vect) ; |
| friend void getVector(Statement *rs, unsigned int, |
| OCCI_STD_NAMESPACE::vector<IntervalYM> &vect) ; |
| friend void do_setVectorOfIntervalYM(Statement *stmt, |
| unsigned int paramIndex, |
| const OCCI_STD_NAMESPACE::vector<IntervalYM> &vect, |
| void *schemaName, unsigned int schemaNameLen, |
| void *typeName, unsigned int typeNameLen) ; |
| |
| friend class StatementImpl; |
| friend class ResultSetImpl; |
| friend class AnyDataImpl; |
| friend void getVector(const AnyData &any, |
| OCCI_STD_NAMESPACE::vector<IntervalYM> &vect); |
| friend void setVector(AnyData &any, |
| const OCCI_STD_NAMESPACE::vector<IntervalYM> &vect) ; |
| |
| }; //class IntervalYM |
| |
| |
| Number operator+(const Number &a, const Number &b) ; |
| Number operator/(const Number ÷nd, const Number &divisor) ; |
| Number operator*(const Number &a, const Number &b) ; |
| Number operator%(const Number &a, const Number &b) ; |
| Number operator-(const Number &subtrahend, const Number &subtractor) ; |
| bool operator==(const Number &a, const Number &b); |
| bool operator!=(const Number &a, const Number &b); |
| |
| const IntervalYM operator+(const IntervalYM &a, const IntervalYM &b) ; |
| const IntervalYM operator-(const IntervalYM &a, const IntervalYM &b) ; |
| const IntervalYM operator*(const IntervalYM &a, const Number& factor); |
| const IntervalYM operator/(const IntervalYM &a, const Number &factor); |
| bool operator==(const IntervalYM &a, const IntervalYM &b) ; |
| bool operator!=(const IntervalYM &a, const IntervalYM &b) ; |
| |
| const IntervalDS operator+(const IntervalDS &a, const IntervalDS &b) ; |
| const IntervalDS operator-(const IntervalDS &a, const IntervalDS &b) ; |
| const IntervalDS operator*(const IntervalDS &a, const Number& factor); |
| const IntervalDS operator/(const IntervalDS &a, const Number &factor); |
| bool operator==(const IntervalDS &a, const IntervalDS &b) ; |
| bool operator!=(const IntervalDS &a, const IntervalDS &b) ; |
| |
| |
| typedef struct BFloat |
| { |
| float value; |
| bool isNull; |
| |
| BFloat() |
| { |
| isNull = false; |
| value = 0.; |
| } |
| } BFloat; |
| |
| typedef struct BDouble |
| { |
| double value; |
| bool isNull; |
| |
| BDouble() |
| { |
| isNull = false; |
| value = 0.; |
| } |
| } BDouble; |
| |
| /*--------------------------------------------------------------------------- |
| EXPORT FUNCTIONS |
| ---------------------------------------------------------------------------*/ |
| |
| |
| /*--------------------------------------------------------------------------- |
| INTERNAL FUNCTIONS |
| ---------------------------------------------------------------------------*/ |
| |
| |
| #ifdef ORAXB8_DEFINED |
| /* |
| NAME |
| Lob Region class |
| |
| DESCRIPTION |
| Contains the implementation of the Lob Region template Class. |
| This class is the underlying implementation for the BlobRegion and |
| ClobRegion classes. |
| |
| RELATED DOCUMENTS |
| Functional/Design Specifications: |
| 18209 - Next Generation LOBs: API |
| 18206 - Next Generation LOBs: Comb. Storage, Compressio & Encryption |
| |
| EXPORT FUNCTION(S) |
| LobRegion() - constructors |
| ~LobRegion() - destructor |
| getPrimary() - Get the Primary Lob object |
| getPrimaryOffset() - Get the offset of this region in the Primary Lob. |
| getOffset() - Get the offset of this region in this lob. |
| getLength() - Get the length of this region |
| getMimeType() - Get the mime type of this region |
| |
| PUBLIC IMPLEMENTATION FUNCTION(S) |
| |
| INTERNAL FUNCTION(S) |
| none |
| |
| EXAMPLES |
| |
| NOTES |
| */ |
| |
| /*------------------------------ LobRegion ------------------*/ |
| /* |
| NAME |
| LobRegion - constructor for the class |
| |
| PARAMETERS |
| none |
| |
| DESCRIPTION |
| default constructor |
| |
| RETURNS |
| Nothing |
| |
| NOTES |
| */ |
| template <typename lobType> |
| LobRegion<lobType>::LobRegion() |
| { |
| _primary = (lobType *)0; |
| _primaryOffset = 0; |
| _offset = 0; |
| _length = 0; |
| } |
| |
| /*------------------------------ ~LobRegion ------------------*/ |
| /* |
| NAME |
| ~LobRegion - destructor for the class |
| |
| PARAMETERS |
| none |
| |
| DESCRIPTION |
| default constructor |
| |
| RETURNS |
| Nothing |
| |
| NOTES |
| */ |
| template <typename lobType> |
| LobRegion<lobType>::~LobRegion() |
| { |
| if (_primary != (lobType *)0) |
| { |
| delete _primary; |
| } |
| } |
| |
| template <typename lobType> |
| lobType *LobRegion<lobType>::getPrimary() |
| { |
| return _primary; |
| } |
| |
| template <typename lobType> |
| oraub8 LobRegion<lobType>::getPrimaryOffset() |
| { |
| return _primaryOffset; |
| } |
| |
| template <typename lobType> |
| oraub8 LobRegion<lobType>::getOffset() |
| { |
| return _offset; |
| } |
| |
| template <typename lobType> |
| oraub8 LobRegion<lobType>::getLength() |
| { |
| return _length; |
| } |
| |
| template <typename lobType> |
| OCCI_STD_NAMESPACE::string LobRegion<lobType>::getMimeType() |
| { |
| return _mimeType; |
| } |
| |
| template <typename lobType> |
| void LobRegion<lobType>::setPrimary(const ConnectionImpl *connp, |
| OCILobLocator *locator) |
| { |
| if (locator != (OCILobLocator *)0) |
| { |
| _primary = new lobType(connp, locator, true); |
| } |
| } |
| |
| #endif /* ORAXB8_DEFINED */ |
| |
| } /* end of namespace occi */ |
| } /* end of namespace oracle */ |
| #endif /* OCCIDATA_ORACLE */ |
| |
| #endif /* _olint */ |