about summary refs log tree commit diff
path: root/third_party/nix/src/libstore/sqlite.hh
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/nix/src/libstore/sqlite.hh')
-rw-r--r--third_party/nix/src/libstore/sqlite.hh154
1 files changed, 74 insertions, 80 deletions
diff --git a/third_party/nix/src/libstore/sqlite.hh b/third_party/nix/src/libstore/sqlite.hh
index 115679b841..633a12189a 100644
--- a/third_party/nix/src/libstore/sqlite.hh
+++ b/third_party/nix/src/libstore/sqlite.hh
@@ -2,7 +2,6 @@
 
 #include <functional>
 #include <string>
-
 #include "types.hh"
 
 class sqlite3;
@@ -11,104 +10,99 @@ class sqlite3_stmt;
 namespace nix {
 
 /* RAII wrapper to close a SQLite database automatically. */
-struct SQLite
-{
-    sqlite3 * db = 0;
-    SQLite() { }
-    SQLite(const Path & path);
-    SQLite(const SQLite & from) = delete;
-    SQLite& operator = (const SQLite & from) = delete;
-    SQLite& operator = (SQLite && from) { db = from.db; from.db = 0; return *this; }
-    ~SQLite();
-    operator sqlite3 * () { return db; }
-
-    void exec(const std::string & stmt);
+struct SQLite {
+  sqlite3* db = 0;
+  SQLite() {}
+  SQLite(const Path& path);
+  SQLite(const SQLite& from) = delete;
+  SQLite& operator=(const SQLite& from) = delete;
+  SQLite& operator=(SQLite&& from) {
+    db = from.db;
+    from.db = 0;
+    return *this;
+  }
+  ~SQLite();
+  operator sqlite3*() { return db; }
+
+  void exec(const std::string& stmt);
 };
 
 /* RAII wrapper to create and destroy SQLite prepared statements. */
-struct SQLiteStmt
-{
-    sqlite3 * db = 0;
-    sqlite3_stmt * stmt = 0;
-    std::string sql;
-    SQLiteStmt() { }
-    SQLiteStmt(sqlite3 * db, const std::string & sql) { create(db, sql); }
-    void create(sqlite3 * db, const std::string & s);
-    ~SQLiteStmt();
-    operator sqlite3_stmt * () { return stmt; }
-
-    /* Helper for binding / executing statements. */
-    class Use
-    {
-        friend struct SQLiteStmt;
-    private:
-        SQLiteStmt & stmt;
-        unsigned int curArg = 1;
-        Use(SQLiteStmt & stmt);
-
-    public:
-
-        ~Use();
-
-        /* Bind the next parameter. */
-        Use & operator () (const std::string & value, bool notNull = true);
-        Use & operator () (int64_t value, bool notNull = true);
-        Use & bind(); // null
-
-        int step();
-
-        /* Execute a statement that does not return rows. */
-        void exec();
-
-        /* For statements that return 0 or more rows. Returns true iff
-           a row is available. */
-        bool next();
-
-        std::string getStr(int col);
-        int64_t getInt(int col);
-        bool isNull(int col);
-    };
-
-    Use use()
-    {
-        return Use(*this);
-    }
+struct SQLiteStmt {
+  sqlite3* db = 0;
+  sqlite3_stmt* stmt = 0;
+  std::string sql;
+  SQLiteStmt() {}
+  SQLiteStmt(sqlite3* db, const std::string& sql) { create(db, sql); }
+  void create(sqlite3* db, const std::string& s);
+  ~SQLiteStmt();
+  operator sqlite3_stmt*() { return stmt; }
+
+  /* Helper for binding / executing statements. */
+  class Use {
+    friend struct SQLiteStmt;
+
+   private:
+    SQLiteStmt& stmt;
+    unsigned int curArg = 1;
+    Use(SQLiteStmt& stmt);
+
+   public:
+    ~Use();
+
+    /* Bind the next parameter. */
+    Use& operator()(const std::string& value, bool notNull = true);
+    Use& operator()(int64_t value, bool notNull = true);
+    Use& bind();  // null
+
+    int step();
+
+    /* Execute a statement that does not return rows. */
+    void exec();
+
+    /* For statements that return 0 or more rows. Returns true iff
+       a row is available. */
+    bool next();
+
+    std::string getStr(int col);
+    int64_t getInt(int col);
+    bool isNull(int col);
+  };
+
+  Use use() { return Use(*this); }
 };
 
 /* RAII helper that ensures transactions are aborted unless explicitly
    committed. */
-struct SQLiteTxn
-{
-    bool active = false;
-    sqlite3 * db;
+struct SQLiteTxn {
+  bool active = false;
+  sqlite3* db;
 
-    SQLiteTxn(sqlite3 * db);
+  SQLiteTxn(sqlite3* db);
 
-    void commit();
+  void commit();
 
-    ~SQLiteTxn();
+  ~SQLiteTxn();
 };
 
-
 MakeError(SQLiteError, Error);
 MakeError(SQLiteBusy, SQLiteError);
 
-[[noreturn]] void throwSQLiteError(sqlite3 * db, const FormatOrString & fs);
+[[noreturn]] void throwSQLiteError(sqlite3* db, const FormatOrString& fs);
 
-void handleSQLiteBusy(const SQLiteBusy & e);
+void handleSQLiteBusy(const SQLiteBusy& e);
 
 /* Convenience function for retrying a SQLite transaction when the
    database is busy. */
-template<typename T>
-T retrySQLite(std::function<T()> fun)
-{
-    while (true) {
-        try {
-            return fun();
-        } catch (SQLiteBusy & e) {
-            handleSQLiteBusy(e);
-        }
+template <typename T>
+T retrySQLite(std::function<T()> fun) {
+  while (true) {
+    try {
+      return fun();
+    } catch (SQLiteBusy& e) {
+      handleSQLiteBusy(e);
     }
+  }
 }
 
-}
+}  // namespace nix