Bug 1473870 [wpt PR 11496] - Update webidl2 to v13.0.3, a=testonly
[gecko.git] / storage / mozStorageStatementJSHelper.h
blob65132b4d2070c8aedb221637387e94e936a5a876
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/. */
7 #ifndef MOZSTORAGESTATEMENTJSHELPER_H
8 #define MOZSTORAGESTATEMENTJSHELPER_H
10 #include "nsIXPCScriptable.h"
11 #include "nsIXPConnect.h"
13 class Statement;
15 namespace mozilla {
16 namespace storage {
18 class StatementParams;
19 class StatementRow;
21 class StatementJSHelper : public nsIXPCScriptable
23 public:
24 NS_DECL_ISUPPORTS
25 NS_DECL_NSIXPCSCRIPTABLE
27 private:
28 nsresult getRow(Statement *, JSContext *, JSObject *, JS::Value *);
29 nsresult getParams(Statement *, JSContext *, JSObject *, JS::Value *);
32 /**
33 * Wrappers used to clean up the references JS helpers hold to the statement.
34 * For cycle-avoidance reasons they do not hold reference-counted references,
35 * so it is important we do this.
38 class StatementParamsHolder final: public nsISupports {
39 public:
40 NS_DECL_ISUPPORTS
42 explicit StatementParamsHolder(StatementParams* aParams)
43 : mParams(aParams)
47 StatementParams* Get() const {
48 MOZ_ASSERT(mParams);
49 return mParams;
52 private:
53 virtual ~StatementParamsHolder();
55 RefPtr<StatementParams> mParams;
58 class StatementRowHolder final: public nsISupports {
59 public:
60 NS_DECL_ISUPPORTS
62 explicit StatementRowHolder(StatementRow* aRow)
63 : mRow(aRow)
67 StatementRow* Get() const {
68 MOZ_ASSERT(mRow);
69 return mRow;
72 private:
73 virtual ~StatementRowHolder();
75 RefPtr<StatementRow> mRow;
78 } // namespace storage
79 } // namespace mozilla
81 #endif // MOZSTORAGESTATEMENTJSHELPER_H