| Index: chrome/browser/sync/util/query_helpers.h
|
| ===================================================================
|
| --- chrome/browser/sync/util/query_helpers.h (revision 35655)
|
| +++ chrome/browser/sync/util/query_helpers.h (working copy)
|
| @@ -1,695 +0,0 @@
|
| -// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -//
|
| -// Typesafe composition of SQL query strings.
|
| -
|
| -#ifndef CHROME_BROWSER_SYNC_UTIL_QUERY_HELPERS_H_
|
| -#define CHROME_BROWSER_SYNC_UTIL_QUERY_HELPERS_H_
|
| -
|
| -#include <limits>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/file_path.h"
|
| -#include "base/logging.h"
|
| -#include "base/string16.h"
|
| -#include "build/build_config.h"
|
| -#include "chrome/browser/sync/util/sync_types.h"
|
| -#include "third_party/sqlite/preprocessed/sqlite3.h"
|
| -
|
| -enum SqliteNullType {
|
| - SQLITE_NULL_VALUE
|
| -};
|
| -
|
| -int SqliteOpen(const FilePath& filename, sqlite3** ppDb);
|
| -
|
| -sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query);
|
| -sqlite3_stmt* BindArg(sqlite3_stmt*, const std::string&, int index);
|
| -sqlite3_stmt* BindArg(sqlite3_stmt*, const char*, int index);
|
| -sqlite3_stmt* BindArg(sqlite3_stmt*, int32, int index);
|
| -sqlite3_stmt* BindArg(sqlite3_stmt*, int64, int index);
|
| -sqlite3_stmt* BindArg(sqlite3_stmt*, double, int index);
|
| -sqlite3_stmt* BindArg(sqlite3_stmt*, bool, int index);
|
| -sqlite3_stmt* BindArg(sqlite3_stmt*, const std::vector<uint8>&, int index);
|
| -sqlite3_stmt* BindArg(sqlite3_stmt*, SqliteNullType, int index);
|
| -
|
| -void GetColumn(sqlite3_stmt*, int index, string16* value);
|
| -void GetColumn(sqlite3_stmt*, int index, std::string* value);
|
| -void GetColumn(sqlite3_stmt*, int index, int32* value);
|
| -void GetColumn(sqlite3_stmt*, int index, int64* value);
|
| -void GetColumn(sqlite3_stmt*, int index, double* value);
|
| -void GetColumn(sqlite3_stmt*, int index, bool* value);
|
| -void GetColumn(sqlite3_stmt*, int index, std::vector<uint8>* value);
|
| -
|
| -// Checks if tablename exists in the database referenced by dbhandle.
|
| -// If the function succeeds, *exists is set to true if the table exists, and
|
| -// false if it doesn't.
|
| -//
|
| -// Returns true on success, or false on error.
|
| -bool DoesTableExist(sqlite3* dbhandle, const std::string& tablename,
|
| - bool* exists);
|
| -
|
| -// Prepares a query with a WHERE clause that filters the values by the items
|
| -// passed inside of the Vector.
|
| -// Example:
|
| -//
|
| -// vector<std::string> v;
|
| -// v.push_back("abc");
|
| -// v.push_back("123");
|
| -// PrepareQuery(dbhandle, "SELECT * FROM table", "column_name", v.begin(),
|
| -// v.end(), "ORDER BY id");
|
| -//
|
| -// will produce the following query.
|
| -//
|
| -// SELECT * FROM table WHERE column_name = 'abc' OR column_name = '123' ORDER BY
|
| -// id.
|
| -//
|
| -template<typename ItemIterator>
|
| -sqlite3_stmt* PrepareQueryWhereColumnIn(sqlite3* dbhandle,
|
| - const std::string& query_head,
|
| - const std::string& filtername,
|
| - ItemIterator begin, ItemIterator end,
|
| - const std::string& query_options) {
|
| - std::string query;
|
| - query.reserve(512);
|
| - query += query_head;
|
| - const char* joiner = " WHERE ";
|
| - for (ItemIterator it = begin; it != end; ++it) {
|
| - query += joiner;
|
| - query += filtername;
|
| - query += " = ?";
|
| - joiner = " OR ";
|
| - }
|
| - query += " ";
|
| - query += query_options;
|
| - sqlite3_stmt* statement = NULL;
|
| - const char* query_tail;
|
| - if (SQLITE_OK != sqlite3_prepare(dbhandle, query.data(),
|
| - CountBytes(query), &statement,
|
| - &query_tail)) {
|
| - LOG(ERROR) << query << "\n" << sqlite3_errmsg(dbhandle);
|
| - }
|
| - int index = 1;
|
| - for (ItemIterator it = begin; it != end; ++it) {
|
| - BindArg(statement, *it, index);
|
| - ++index;
|
| - }
|
| - return statement;
|
| -}
|
| -
|
| -template <typename Type1>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1) {
|
| - return BindArg(PrepareQuery(dbhandle, query), arg1, 1);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1), arg2, 2);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2), arg3, 3);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3), arg4, 4);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4),
|
| - arg5, 5);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5),
|
| - arg6, 6);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6),
|
| - arg7, 7);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7),
|
| - arg8, 8);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8),
|
| - arg9, 9);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9),
|
| - arg10, 10);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10),
|
| - arg11, 11);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11, typename Type12>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11, const Type12& arg12) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11),
|
| - arg12, 12);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11, typename Type12,
|
| - typename Type13>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11, const Type12& arg12,
|
| - const Type13& arg13) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11, arg12),
|
| - arg13, 13);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11, typename Type12,
|
| - typename Type13, typename Type14>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11, const Type12& arg12,
|
| - const Type13& arg13, const Type14& arg14) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11, arg12,
|
| - arg13),
|
| - arg14, 14);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11, typename Type12,
|
| - typename Type13, typename Type14, typename Type15>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11, const Type12& arg12,
|
| - const Type13& arg13, const Type14& arg14,
|
| - const Type15& arg15) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11, arg12,
|
| - arg13, arg14),
|
| - arg15, 15);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11, typename Type12,
|
| - typename Type13, typename Type14, typename Type15, typename Type16>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11, const Type12& arg12,
|
| - const Type13& arg13, const Type14& arg14,
|
| - const Type15& arg15, const Type16& arg16) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11, arg12,
|
| - arg13, arg14, arg15),
|
| - arg16, 16);
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11, typename Type12,
|
| - typename Type13, typename Type14, typename Type15, typename Type16,
|
| - typename Type17>
|
| -inline sqlite3_stmt* PrepareQuery(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11, const Type12& arg12,
|
| - const Type13& arg13, const Type14& arg14,
|
| - const Type15& arg15, const Type16& arg16,
|
| - const Type17& arg17) {
|
| - return BindArg(PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11, arg12,
|
| - arg13, arg14, arg15, arg16),
|
| - arg17, 17);
|
| -}
|
| -
|
| -void ExecOrDie(sqlite3* dbhandle, const char* query);
|
| -
|
| -// Finalizes (deletes) the query before returning.
|
| -void ExecOrDie(sqlite3* dbhandle, const char* query, sqlite3_stmt* statement);
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10>
|
| -inline void ExecOrDie(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10) {
|
| - return ExecOrDie(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9>
|
| -inline void ExecOrDie(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9) {
|
| - return ExecOrDie(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8>
|
| -inline void ExecOrDie(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8) {
|
| - return ExecOrDie(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7>
|
| -inline void ExecOrDie(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7) {
|
| - return ExecOrDie(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6>
|
| -inline void ExecOrDie(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6) {
|
| - return ExecOrDie(dbhandle, query, PrepareQuery(dbhandle, query, arg1, arg2,
|
| - arg3, arg4, arg5, arg6));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5>
|
| -inline void ExecOrDie(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5) {
|
| - return ExecOrDie(dbhandle, query, PrepareQuery(dbhandle, query, arg1, arg2,
|
| - arg3, arg4, arg5));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4>
|
| -inline void ExecOrDie(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4) {
|
| - return ExecOrDie(dbhandle, query, PrepareQuery(dbhandle, query, arg1, arg2,
|
| - arg3, arg4));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3>
|
| -inline void ExecOrDie(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3) {
|
| - return ExecOrDie(dbhandle, query, PrepareQuery(dbhandle, query, arg1, arg2,
|
| - arg3));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2>
|
| -inline void ExecOrDie(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2) {
|
| - return ExecOrDie(dbhandle, query, PrepareQuery(dbhandle, query, arg1, arg2));
|
| -}
|
| -
|
| -template <typename Type1>
|
| -inline void ExecOrDie(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1) {
|
| - return ExecOrDie(dbhandle, query, PrepareQuery(dbhandle, query, arg1));
|
| -}
|
| -
|
| -
|
| -int Exec(sqlite3* dbhandle, const char* query);
|
| -// Finalizes (deletes) the query before returning.
|
| -int Exec(sqlite3* dbhandle, const char* query, sqlite3_stmt* statement);
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11, typename Type12,
|
| - typename Type13, typename Type14, typename Type15, typename Type16,
|
| - typename Type17>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11, const Type12& arg12,
|
| - const Type13& arg13, const Type14& arg14,
|
| - const Type15& arg15, const Type16& arg16,
|
| - const Type17& arg17) {
|
| - return Exec(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13,
|
| - arg14, arg15, arg16, arg17));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11, typename Type12,
|
| - typename Type13, typename Type14, typename Type15, typename Type16>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11, const Type12& arg12,
|
| - const Type13& arg13, const Type14& arg14,
|
| - const Type15& arg15, const Type16& arg16) {
|
| - return Exec(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13,
|
| - arg14, arg15, arg16));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11, typename Type12,
|
| - typename Type13, typename Type14, typename Type15>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11, const Type12& arg12,
|
| - const Type13& arg13, const Type14& arg14,
|
| - const Type15& arg15) {
|
| - return Exec(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13,
|
| - arg14, arg15));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11, typename Type12,
|
| - typename Type13, typename Type14>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11, const Type12& arg12,
|
| - const Type13& arg13, const Type14& arg14) {
|
| - return Exec(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13,
|
| - arg14));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11, typename Type12,
|
| - typename Type13>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11, const Type12& arg12,
|
| - const Type13& arg13) {
|
| - return Exec(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11, typename Type12>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11, const Type12& arg12) {
|
| - return Exec(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11, arg12));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10, typename Type11>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10,
|
| - const Type11& arg11) {
|
| - return Exec(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10, arg11));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9, typename Type10>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9, const Type10& arg10) {
|
| - return Exec(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9, arg10));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8,
|
| - typename Type9>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8,
|
| - const Type9& arg9) {
|
| - return Exec(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8, arg9));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7, typename Type8>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7, const Type8& arg8) {
|
| - return Exec(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7, arg8));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6, typename Type7>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6,
|
| - const Type7& arg7) {
|
| - return Exec(dbhandle, query,
|
| - PrepareQuery(dbhandle, query, arg1, arg2, arg3, arg4, arg5,
|
| - arg6, arg7));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5, typename Type6>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5, const Type6& arg6) {
|
| - return Exec(dbhandle, query, PrepareQuery(dbhandle, query, arg1, arg2,
|
| - arg3, arg4, arg5, arg6));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4,
|
| - typename Type5>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4,
|
| - const Type5& arg5) {
|
| - return Exec(dbhandle, query, PrepareQuery(dbhandle, query, arg1, arg2,
|
| - arg3, arg4, arg5));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3, typename Type4>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3, const Type4& arg4) {
|
| - return Exec(dbhandle, query, PrepareQuery(dbhandle, query, arg1, arg2,
|
| - arg3, arg4));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2, typename Type3>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2,
|
| - const Type3& arg3) {
|
| - return Exec(dbhandle, query, PrepareQuery(dbhandle, query, arg1, arg2,
|
| - arg3));
|
| -}
|
| -
|
| -template <typename Type1, typename Type2>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1, const Type2& arg2) {
|
| - return Exec(dbhandle, query, PrepareQuery(dbhandle, query, arg1, arg2));
|
| -}
|
| -
|
| -template <typename Type1>
|
| -inline int Exec(sqlite3* dbhandle, const char* query,
|
| - const Type1& arg1) {
|
| - return Exec(dbhandle, query, PrepareQuery(dbhandle, query, arg1));
|
| -}
|
| -
|
| -
|
| -// Holds an sqlite3_stmt* and automatically finalizes when passes out of scope.
|
| -class ScopedStatement {
|
| - public:
|
| - explicit ScopedStatement(sqlite3_stmt* statement = 0)
|
| - : statement_(statement) { }
|
| - ~ScopedStatement();
|
| -
|
| - sqlite3_stmt* get() const { return statement_; }
|
| -
|
| - // Finalizes currently held statement and sets to new one.
|
| - void reset(sqlite3_stmt* statement);
|
| - protected:
|
| - sqlite3_stmt* statement_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ScopedStatement);
|
| -};
|
| -
|
| -
|
| -// Holds an sqlite3_stmt* and automatically resets when passes out of scope.
|
| -class ScopedStatementResetter {
|
| - public:
|
| - explicit ScopedStatementResetter(sqlite3_stmt* statement)
|
| - : statement_(statement) { }
|
| - ~ScopedStatementResetter();
|
| -
|
| - protected:
|
| - sqlite3_stmt* const statement_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ScopedStatementResetter);
|
| -};
|
| -
|
| -// Useful for encoding any sequence of bytes into a string that can be used in
|
| -// a table name. Kind of like hex encoding, except that A is zero and P is 15.
|
| -std::string APEncode(const std::string& in);
|
| -std::string APDecode(const std::string& in);
|
| -
|
| -#endif // CHROME_BROWSER_SYNC_UTIL_QUERY_HELPERS_H_
|
|
|