mozStorageRow.h (1312B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- 2 * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ : 3 * This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef mozStorageRow_h 8 #define mozStorageRow_h 9 10 #include "mozIStorageRow.h" 11 #include "nsCOMArray.h" 12 #include "nsTHashMap.h" 13 class nsIVariant; 14 struct sqlite3_stmt; 15 16 namespace mozilla { 17 namespace storage { 18 19 class Row final : public mozIStorageRow { 20 public: 21 NS_DECL_THREADSAFE_ISUPPORTS 22 NS_DECL_MOZISTORAGEROW 23 NS_DECL_MOZISTORAGEVALUEARRAY 24 25 Row() : mNumCols(0) {} 26 27 /** 28 * Initializes the object with the given statement. Copies the values from 29 * the statement. 30 * 31 * @param aStatement 32 * The sqlite statement to pull results from. 33 */ 34 nsresult initialize(sqlite3_stmt* aStatement); 35 36 private: 37 ~Row() {} 38 39 /** 40 * The number of columns in this tuple. 41 */ 42 uint32_t mNumCols; 43 44 /** 45 * Stores the data in the tuple. 46 */ 47 nsCOMArray<nsIVariant> mData; 48 49 /** 50 * Maps a given name to a column index. 51 */ 52 nsTHashMap<nsCStringHashKey, uint32_t> mNameHashtable; 53 }; 54 55 } // namespace storage 56 } // namespace mozilla 57 58 #endif // mozStorageRow_h