// file : odb/sqlite/database.hxx // author : Boris Kolpackov // copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC // license : GNU GPL v2; see accompanying LICENSE file #ifndef ODB_SQLITE_DATABASE_HXX #define ODB_SQLITE_DATABASE_HXX #include #include #include #include // std::auto_ptr #include // std::ostream #include #include #include #include #include #include #include #include namespace odb { namespace sqlite { class transaction_impl; class LIBODB_SQLITE_EXPORT database: public odb::database { public: database (const std::string& name, int flags = SQLITE_OPEN_READWRITE, bool foreign_keys = true, std::auto_ptr = std::auto_ptr (0)); // Extract the database parameters from the command line. The // following options are recognized: // // --database // --create // --read-only // --options-file // // For more information, see the output of the print_usage() function // below. If erase is true, the above options are removed from the argv // array and the argc count is updated accordingly. The command line // options override the flags passed as an argument. This constructor // may throw the cli_exception exception. // database (int& argc, char* argv[], bool erase = false, int flags = SQLITE_OPEN_READWRITE, bool foreign_keys = true, std::auto_ptr = std::auto_ptr (0)); static void print_usage (std::ostream&); public: const std::string& name () const { return name_; } int flags () const { return flags_; } bool foreign_keys () const { return foreign_keys_; } // Transactions. // public: virtual transaction_impl* begin (); transaction_impl* begin_immediate (); transaction_impl* begin_exclusive (); public: connection_ptr connection (); public: virtual ~database (); protected: virtual odb::connection* connection_ (); private: std::string name_; int flags_; bool foreign_keys_; std::auto_ptr factory_; }; } } #include #include #endif // ODB_SQLITE_DATABASE_HXX