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 #include "mm/gc_ptr.hh"
00034
00035 namespace fatalmind {
00036 namespace oracle {
00037
00038 class oracleType: public usg_cnt_t<DefaultThreadedModel> {
00039 public:
00040 oracleType(bool nul = true);
00041
00042 virtual void* ptr() const = 0;
00043 virtual sb4 size() const = 0;
00044 virtual ub2 type() const = 0;
00045 virtual ~oracleType();
00046 virtual void outputoperator(std::ostream&) const = 0;
00047
00048 dvoid* indptr() const;
00049 sb2 indicator() const;
00050 bool isnull() const;
00051 void setnull(bool nul = true);
00052
00053 private:
00054 sb2 ind;
00055 };
00056
00057 template<typename T>
00058 class oracleTypeImpl: public oracleType {
00059 public:
00060 oracleTypeImpl(const T& val, bool nul = true);
00061 virtual ~oracleTypeImpl();
00062
00063 virtual void* ptr() const;
00064 virtual sb4 size() const;
00065 virtual ub2 type() const;
00066 virtual void outputoperator(std::ostream&) const;
00067 private:
00068 T _val;
00069 };
00070
00071 }
00072 }
00073 #endif