// file : odb/pgsql/transaction.cxx // author : Constantin Michael // copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC // license : GNU GPL v2; see accompanying LICENSE file #include namespace odb { namespace pgsql { transaction& transaction:: current () { // While the impl type can be of the concrete type, the transaction // object can be created as either odb:: or odb::pgsql:: type. To // work around that we are going to hard-cast one to the other // relying on the fact that they have the same representation and // no virtual functions. The former is checked in the tests. // odb::transaction& b (odb::transaction::current ()); dynamic_cast (b.implementation ()); return reinterpret_cast (b); } } }