5 #ifndef ODB_ORACLE_SIMPLE_OBJECT_STATEMENTS_HXX
6 #define ODB_ORACLE_SIMPLE_OBJECT_STATEMENTS_HXX
17 #include <odb/details/shared-ptr.hxx>
26 #include <odb/oracle/details/export.hxx>
42 template <
typename T,
typename I>
52 (this->*deleter_) (0, 0, 0, 0);
59 allocate (&c, &im, &
id, (idv != 0 ? idv : &
id));
74 template <
typename T,
typename I>
75 void extra_statement_cache_ptr<T, I>::
76 allocate (connection_type* c, image_type* im, binding*
id, binding* idv)
83 p_ =
new T (*c, *im, *
id, *idv);
84 deleter_ = &extra_statement_cache_ptr<T, I>::allocate;
149 template <
typename T,
bool optimistic>
152 template <
typename T>
167 details::shared_ptr<delete_statement>
erase_;
170 template <
typename T>
179 template <
typename T>
180 class object_statements:
public object_statements_base
185 typedef typename object_traits::id_type
id_type;
191 typename object_traits::pointer_cache_traits
195 typename object_traits::extra_statement_cache_type
266 load_delayed_<object_statements> (svm);
353 object_traits::persist_statement,
354 object_traits::versioned,
356 object_traits::auto_id));
368 object_traits::find_statement,
369 object_traits::versioned,
385 object_traits::update_statement,
386 object_traits::versioned,
399 object_traits::erase_statement,
413 object_traits::optimistic_erase_statement,
414 od_.id_image_binding_));
436 object_traits::id_column_count;
439 object_traits::managed_optimistic_column_count;
442 object_traits::column_count -
443 object_traits::separate_load_column_count;
446 object_traits::column_count -
447 object_traits::inverse_column_count -
448 object_traits::managed_optimistic_column_count -
454 object_traits::readonly_column_count -
455 object_traits::separate_update_column_count;
462 template <
typename STS>
470 template <
typename T1>
516 details::shared_ptr<insert_statement_type>
persist_;
517 details::shared_ptr<select_statement_type>
find_;
518 details::shared_ptr<update_statement_type>
update_;
519 details::shared_ptr<delete_statement_type>
erase_;
570 #include <odb/oracle/simple-object-statements.ixx>
571 #include <odb/oracle/simple-object-statements.txx>
575 #endif // ODB_ORACLE_SIMPLE_OBJECT_STATEMENTS_HXX
void update_image_version(std::size_t v)
Definition: simple-object-statements.hxx:301
object_traits_impl< object_type, id_oracle > object_traits
Definition: simple-object-statements.hxx:156
Definition: simple-object-statements.hxx:150
oracle::delete_statement delete_statement_type
Definition: simple-object-statements.hxx:201
delayed_load(const id_type &i, object_type &o, const position_type &p, loader_function l)
Definition: simple-object-statements.hxx:528
std::size_t select_image_version() const
Definition: simple-object-statements.hxx:315
Definition: connection.hxx:35
void lock()
Definition: simple-object-statements.hxx:100
void load_delayed_(const schema_version_migration *)
binding id_image_binding_
Definition: simple-object-statements.hxx:510
std::size_t update_image_version_
Definition: simple-object-statements.hxx:499
object_traits::pointer_type pointer_type
Definition: simple-object-statements.hxx:186
object_statements_base(connection_type &conn)
Definition: simple-object-statements.hxx:140
details::shared_ptr< update_statement_type > update_
Definition: simple-object-statements.hxx:518
binding & insert_image_binding()
Definition: simple-object-statements.hxx:293
void load_delayed(const schema_version_migration *svm)
Definition: simple-object-statements.hxx:261
binding update_image_binding_
Definition: simple-object-statements.hxx:501
Definition: simple-object-statements.hxx:523
std::size_t update_image_version() const
Definition: simple-object-statements.hxx:298
Definition: simple-object-statements.hxx:548
object_traits::id_type id_type
Definition: simple-object-statements.hxx:185
void delay_load(const id_type &id, object_type &obj, const typename pointer_cache_traits::position_type &p, loader_function l=0)
Definition: simple-object-statements.hxx:252
details::shared_ptr< select_statement_type > find_
Definition: simple-object-statements.hxx:517
binding id_image_binding_
Definition: simple-object-statements.hxx:165
binding select_image_binding_
Definition: simple-object-statements.hxx:481
void insert_image_version(std::size_t v)
Definition: simple-object-statements.hxx:290
details::shared_ptr< insert_statement_type > persist_
Definition: simple-object-statements.hxx:516
delete_statement_type & optimistic_erase_statement()
Definition: simple-object-statements.hxx:406
loader_function loader
Definition: simple-object-statements.hxx:539
Definition: forward.hxx:61
std::size_t select_image_version_
Definition: simple-object-statements.hxx:480
Definition: statement.hxx:340
T object_type
Definition: simple-object-statements.hxx:183
binding * id_image_binding()
Definition: simple-object-statements.hxx:176
Definition: simple-object-statements.hxx:94
std::size_t id_image_version_
Definition: simple-object-statements.hxx:509
auto_lock(object_statements &)
details::shared_ptr< delete_statement > erase_
Definition: simple-object-statements.hxx:167
virtual ~object_statements()
binding insert_image_binding_
Definition: simple-object-statements.hxx:487
bind select_image_bind_[select_column_count]
Definition: simple-object-statements.hxx:482
image_type image_
Definition: simple-object-statements.hxx:476
static const std::size_t managed_optimistic_column_count
Definition: simple-object-statements.hxx:438
bool locked() const
Definition: simple-object-statements.hxx:114
oracle::select_statement select_statement_type
Definition: simple-object-statements.hxx:199
bool locked_
Definition: simple-object-statements.hxx:146
id_image_type id_image_
Definition: simple-object-statements.hxx:508
delete_statement_type & erase_statement()
Definition: simple-object-statements.hxx:393
object_traits::image_type image_type
Definition: simple-object-statements.hxx:187
swap_guard(object_statements &os, delayed_loads &dl)
Definition: simple-object-statements.hxx:550
void select_image_version(std::size_t v)
Definition: simple-object-statements.hxx:318
oracle::update_statement update_statement_type
Definition: simple-object-statements.hxx:200
T object_type
Definition: simple-object-statements.hxx:155
access::object_traits< T >::pointer_type pointer_type
extra_statement_cache_ptr< extra_statement_cache_type, image_type > extra_statement_cache_
Definition: simple-object-statements.hxx:474
extra_statement_cache_type & extra_statement_cache()
Definition: simple-object-statements.hxx:423
Definition: statement.hxx:316
binding & update_image_binding()
Definition: simple-object-statements.hxx:310
id_type id
Definition: simple-object-statements.hxx:536
pointer_cache_traits::position_type position_type
Definition: simple-object-statements.hxx:525
Definition: statement.hxx:169
void unlock()
Definition: simple-object-statements.hxx:107
static const std::size_t select_column_count
Definition: simple-object-statements.hxx:441
insert_statement_type & persist_statement()
Definition: simple-object-statements.hxx:347
static const std::size_t insert_column_count
Definition: simple-object-statements.hxx:445
select_statement_type & find_statement()
Definition: simple-object-statements.hxx:362
connection_type & conn_
Definition: statements-base.hxx:56
Definition: binding.hxx:21
bind insert_image_bind_[insert_column_count!=0?insert_column_count:1]
Definition: simple-object-statements.hxx:489
std::size_t insert_image_version() const
Definition: simple-object-statements.hxx:287
void id_image_version(std::size_t v)
Definition: simple-object-statements.hxx:332
binding & id_image_binding()
Definition: simple-object-statements.hxx:335
object_traits::extra_statement_cache_type extra_statement_cache_type
Definition: simple-object-statements.hxx:196
std::size_t update_id_image_version_
Definition: simple-object-statements.hxx:500
object_statements(connection_type &)
Definition: oracle-types.hxx:78
Definition: simple-object-statements.hxx:119
binding * id_image_binding()
Definition: simple-object-statements.hxx:161
position_type pos
Definition: simple-object-statements.hxx:538
optimistic_data(bind *)
Definition: simple-object-statements.hxx:173
static const std::size_t id_column_count
Definition: simple-object-statements.hxx:435
optimistic_data< T, managed_optimistic_column_count!=0 > od_
Definition: simple-object-statements.hxx:514
void(* loader_function)(odb::database &, const id_type &, object_type &, const schema_version_migration *)
Definition: simple-object-statements.hxx:246
void clear_delayed()
Definition: simple-object-statements.hxx:270
object_traits_impl< object_type, id_oracle > object_traits
Definition: simple-object-statements.hxx:184
object_type * obj
Definition: simple-object-statements.hxx:537
delayed_loads delayed_
Definition: simple-object-statements.hxx:543
static const std::size_t update_column_count
Definition: simple-object-statements.hxx:451
Definition: statement.hxx:254
std::size_t update_id_image_version() const
Definition: simple-object-statements.hxx:304
~swap_guard()
Definition: simple-object-statements.hxx:556
std::vector< delayed_load > delayed_loads
Definition: simple-object-statements.hxx:542
std::size_t id_image_version() const
Definition: simple-object-statements.hxx:329
details::shared_ptr< delete_statement_type > erase_
Definition: simple-object-statements.hxx:519
id_image_type & id_image()
Definition: simple-object-statements.hxx:326
void update_id_image_version(std::size_t v)
Definition: simple-object-statements.hxx:307
object_traits::pointer_cache_traits pointer_cache_traits
Definition: simple-object-statements.hxx:192
Definition: simple-object-statements.hxx:205
session_type::template cache_position< object_type > position_type
oracle::insert_statement insert_statement_type
Definition: simple-object-statements.hxx:198
image_type & image()
Definition: simple-object-statements.hxx:279
bind update_image_bind_[update_column_count+id_column_count+managed_optimistic_column_count]
Definition: simple-object-statements.hxx:503
delayed_load()
Definition: simple-object-statements.hxx:527
object_traits::id_image_type id_image_type
Definition: simple-object-statements.hxx:188
Definition: statements-base.hxx:23
binding & optimistic_id_image_binding()
Definition: simple-object-statements.hxx:342
Definition: forward.hxx:55
std::size_t insert_image_version_
Definition: simple-object-statements.hxx:486
update_statement_type & update_statement()
Definition: simple-object-statements.hxx:379
binding & select_image_binding()
Definition: simple-object-statements.hxx:321