00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef RESOURCEPOOL_ORACLE_ORACLETYPE_HH
00025 #define RESOURCEPOOL_ORACLE_ORACLETYPE_HH
00026
00027 #include <ostream>
00028
00029 #ifndef OCI_ORACLE
00030 #include <oci.h>
00031 #endif
00032
00033 namespace fatalmind {
00034 namespace oracle {
00035
00036 class oracleType {
00037 public:
00038 virtual void* ptr() const = 0;
00039 virtual sb4 size() const = 0;
00040 virtual ub2 type() const = 0;
00041 virtual ~oracleType();
00042 virtual void outputoperator(std::ostream&) const = 0;
00043
00044 dvoid* indptr() const;
00045 sb2 indicator() const;
00046 bool isnull() const;
00047 void setnull(bool nul = true);
00048
00049 private:
00050 sb2 ind;
00051 };
00052
00053 template<typename T>
00054 class oracleTypeImpl: public oracleType {
00055 public:
00056 oracleTypeImpl(const T& val);
00057 virtual ~oracleTypeImpl();
00058
00059 virtual void* ptr() const;
00060 virtual sb4 size() const;
00061 virtual ub2 type() const;
00062 virtual void outputoperator(std::ostream&) const;
00063 private:
00064 T _val;
00065 };
00066
00067 }
00068 }
00069 #endif