aboutsummaryrefslogtreecommitdiff
path: root/odb/oracle/oracle-types.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/oracle/oracle-types.hxx')
-rw-r--r--odb/oracle/oracle-types.hxx146
1 files changed, 47 insertions, 99 deletions
diff --git a/odb/oracle/oracle-types.hxx b/odb/oracle/oracle-types.hxx
index a4500d3..5e08a87 100644
--- a/odb/oracle/oracle-types.hxx
+++ b/odb/oracle/oracle-types.hxx
@@ -169,90 +169,6 @@ namespace odb
}
};
- class LIBODB_ORACLE_EXPORT datetime_auto_descriptor:
- public auto_descriptor<OCIDateTime, dt_timestamp>
- {
- typedef auto_descriptor<OCIDateTime, dt_timestamp> base;
-
- public:
- datetime_auto_descriptor (OCIDateTime* d = 0):
- base (d)
- {
- }
-
- datetime_auto_descriptor (datetime_auto_descriptor& x):
- base (x.d_)
- {
- x.d_ = 0;
- }
-
- datetime_auto_descriptor&
- operator= (datetime_auto_descriptor& x)
- {
- OCIDateTime* l (x.d_);
- x.d_ = 0;
- reset (l);
-
- return *this;
- }
- };
-
- class LIBODB_ORACLE_EXPORT interval_ym_auto_descriptor:
- public auto_descriptor<OCIInterval, dt_interval_ym>
- {
- typedef auto_descriptor<OCIInterval, dt_interval_ym> base;
-
- public:
- interval_ym_auto_descriptor (OCIInterval* d = 0):
- base (d)
- {
- }
-
- interval_ym_auto_descriptor (interval_ym_auto_descriptor& x):
- base (x.d_)
- {
- x.d_ = 0;
- }
-
- interval_ym_auto_descriptor&
- operator= (interval_ym_auto_descriptor& x)
- {
- OCIInterval* l (x.d_);
- x.d_ = 0;
- reset (l);
-
- return *this;
- }
- };
-
- class LIBODB_ORACLE_EXPORT interval_ds_auto_descriptor:
- public auto_descriptor<OCIInterval, dt_interval_ds>
- {
- typedef auto_descriptor<OCIInterval, dt_interval_ds> base;
-
- public:
- interval_ds_auto_descriptor (OCIInterval* d = 0):
- base (d)
- {
- }
-
- interval_ds_auto_descriptor (interval_ds_auto_descriptor& x):
- base (x.d_)
- {
- x.d_ = 0;
- }
-
- interval_ds_auto_descriptor&
- operator= (interval_ds_auto_descriptor& x)
- {
- OCIInterval* l (x.d_);
- x.d_ = 0;
- reset (l);
-
- return *this;
- }
- };
-
//
// The OCIDateTime and OCIInterval APIs require that an environment and
// error handle be passed to any function that manipulates an OCIDateTime
@@ -265,6 +181,11 @@ namespace odb
// consistency.
//
+ // Descriptor management flags.
+ //
+ const unsigned short descriptor_cache = 0x01;
+ const unsigned short descriptor_free = 0x02;
+
struct LIBODB_ORACLE_EXPORT datetime
{
void
@@ -285,16 +206,25 @@ namespace odb
ub1 second,
ub4 nanosecond);
- void
- set ();
-
public:
OCIEnv* environment;
OCIError* error;
+ OCIDateTime* descriptor;
+
+ unsigned short flags;
+
+ public:
+ datetime (unsigned short f = descriptor_cache | descriptor_free)
+ : descriptor (0), flags (f)
+ {
+ }
- datetime_auto_descriptor descriptor;
+ datetime (datetime&);
+ datetime& operator= (datetime&);
- private:
+ ~datetime ();
+
+ public:
sb2 year_;
ub1 month_;
ub1 day_;
@@ -312,16 +242,25 @@ namespace odb
void
set (sb4 year, sb4 month);
- void
- set ();
-
public:
OCIEnv* environment;
OCIError* error;
+ OCIInterval* descriptor;
+
+ unsigned short flags;
+
+ public:
+ interval_ym (unsigned short f = descriptor_cache | descriptor_free)
+ : descriptor (0), flags (f)
+ {
+ }
+
+ interval_ym (interval_ym&);
+ interval_ym& operator= (interval_ym&);
- interval_ym_auto_descriptor descriptor;
+ ~interval_ym ();
- private:
+ public:
sb4 year_;
sb4 month_;
};
@@ -342,16 +281,25 @@ namespace odb
sb4 second,
sb4 nanosecond);
- void
- set ();
-
public:
OCIEnv* environment;
OCIError* error;
+ OCIInterval* descriptor;
+
+ unsigned short flags;
+
+ public:
+ interval_ds (unsigned short f = descriptor_cache | descriptor_free)
+ : descriptor (0), flags (f)
+ {
+ }
- interval_ds_auto_descriptor descriptor;
+ interval_ds (interval_ds&);
+ interval_ds& operator= (interval_ds&);
- private:
+ ~interval_ds ();
+
+ public:
sb4 day_;
sb4 hour_;
sb4 minute_;