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"
18 class StatementParams
;
21 class StatementJSHelper
: public nsIXPCScriptable
{
24 NS_DECL_NSIXPCSCRIPTABLE
27 nsresult
getRow(Statement
*, JSContext
*, JSObject
*, JS::Value
*);
28 nsresult
getParams(Statement
*, JSContext
*, JSObject
*, JS::Value
*);
32 * Wrappers used to clean up the references JS helpers hold to the statement.
33 * For cycle-avoidance reasons they do not hold reference-counted references,
34 * so it is important we do this.
37 class StatementParamsHolder final
: public nsISupports
{
41 explicit StatementParamsHolder(StatementParams
*aParams
) : mParams(aParams
) {}
43 StatementParams
*Get() const {
49 virtual ~StatementParamsHolder();
51 RefPtr
<StatementParams
> mParams
;
54 class StatementRowHolder final
: public nsISupports
{
58 explicit StatementRowHolder(StatementRow
*aRow
) : mRow(aRow
) {}
60 StatementRow
*Get() const {
66 virtual ~StatementRowHolder();
68 RefPtr
<StatementRow
> mRow
;
71 } // namespace storage
72 } // namespace mozilla
74 #endif // MOZSTORAGESTATEMENTJSHELPER_H