Added a copy constructor that increments the reference counter, thanks to a patch from Mark P.

This commit is contained in:
Sébastien Rombauts 2012-12-05 17:36:02 +01:00
parent 0055fcc2db
commit 554a79b64d
2 changed files with 23 additions and 8 deletions

View File

@ -16,10 +16,22 @@ namespace SQLite
// Encapsulation of a Column in a Row of the result.
Column::Column(sqlite3* apSQLite, sqlite3_stmt* apStmt, unsigned int* apStmtRefCount, int aIndex) throw() : // nothrow
mpSQLite(apSQLite),
mpStmt(apStmt),
mpStmtRefCount(apStmtRefCount),
mIndex(aIndex)
mpSQLite (apSQLite),
mpStmt (apStmt),
mpStmtRefCount (apStmtRefCount),
mIndex (aIndex)
{
// Increment the reference counter of the sqlite3_stmt,
// telling the Statement object not to finalize the sqlite3_stmt during the lifetime of this Column objet
(*mpStmtRefCount)++;
}
// Copy constructor
Column::Column(const Column& copy) throw() : // nothrow
mpSQLite (copy.mpSQLite),
mpStmt (copy.mpStmt),
mpStmtRefCount (copy.mpStmtRefCount),
mIndex (copy.mIndex)
{
// Increment the reference counter of the sqlite3_stmt,
// telling the Statement object not to finalize the sqlite3_stmt during the lifetime of this Column objet

View File

@ -30,8 +30,11 @@ public:
* @brief Compile and register the SQL query for the provided SQLite Database Connection
*/
explicit Column(sqlite3* apSQLite, sqlite3_stmt* apStmt, unsigned int* apStmtRefCount, int aIndex) throw(); // nothrow
/// Basic destructor
virtual ~Column(void) throw(); // nothrow
/// Simple destructor
virtual ~Column(void) throw(); // nothrow
/// @brief copy constructor : only way to copy a valid instance
Column(const Column& aOther) throw(); // nothrow
/// Return the integer value of the column.
int getInt (void) const throw();
@ -78,9 +81,9 @@ public:
#endif
private:
// Column is copyable, but copy should not be used elsewhere than in return form getColumn
// Forbid default constructor and assignment operator (no implementation)
// so that there is no way of having a Column instance not initialized
Column(void);
// TODO Column(const Column&);
Column& operator=(const Column&);
private: