Line data Source code
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 "nsDataHashtable.h"
13 : #include "mozilla/Attributes.h"
14 : class nsIVariant;
15 : struct sqlite3_stmt;
16 :
17 : namespace mozilla {
18 : namespace storage {
19 :
20 : class Row final : public mozIStorageRow
21 : {
22 : public:
23 : NS_DECL_THREADSAFE_ISUPPORTS
24 : NS_DECL_MOZISTORAGEROW
25 : NS_DECL_MOZISTORAGEVALUEARRAY
26 :
27 4 : Row() : mNumCols(0) {}
28 :
29 : /**
30 : * Initializes the object with the given statement. Copies the values from
31 : * the statement.
32 : *
33 : * @param aStatement
34 : * The sqlite statement to pull results from.
35 : */
36 : nsresult initialize(sqlite3_stmt *aStatement);
37 :
38 : private:
39 0 : ~Row() {}
40 :
41 : /**
42 : * The number of columns in this tuple.
43 : */
44 : uint32_t mNumCols;
45 :
46 : /**
47 : * Stores the data in the tuple.
48 : */
49 : nsCOMArray<nsIVariant> mData;
50 :
51 : /**
52 : * Maps a given name to a column index.
53 : */
54 : nsDataHashtable<nsCStringHashKey, uint32_t> mNameHashtable;
55 : };
56 :
57 : } // namespace storage
58 : } // namespace mozilla
59 :
60 : #endif // mozStorageRow_h
|