Backed out changeset 2284c3e8c336 (bug 1215092)
[gecko.git] / storage / mozStorageStatementJSHelper.h
blobc7948bfa8b427edc7f6d2682ff85c2e165b9c136
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 StatementJSHelper : public nsIXPCScriptable
20 public:
21 NS_DECL_ISUPPORTS
22 NS_DECL_NSIXPCSCRIPTABLE
24 private:
25 nsresult getRow(Statement *, JSContext *, JSObject *, JS::Value *);
26 nsresult getParams(Statement *, JSContext *, JSObject *, JS::Value *);
29 /**
30 * Wrappers used to clean up the references JS helpers hold to the statement.
31 * For cycle-avoidance reasons they do not hold reference-counted references,
32 * so it is important we do this.
34 class StatementJSObjectHolder : public nsIXPConnectJSObjectHolder
36 public:
37 NS_DECL_ISUPPORTS
38 NS_DECL_NSIXPCONNECTJSOBJECTHOLDER
40 explicit StatementJSObjectHolder(nsIXPConnectJSObjectHolder* aHolder);
42 protected:
43 virtual ~StatementJSObjectHolder() {};
44 nsCOMPtr<nsIXPConnectJSObjectHolder> mHolder;
47 class StatementParamsHolder final: public StatementJSObjectHolder {
48 public:
49 explicit StatementParamsHolder(nsIXPConnectJSObjectHolder* aHolder)
50 : StatementJSObjectHolder(aHolder) {
53 private:
54 virtual ~StatementParamsHolder();
57 class StatementRowHolder final: public StatementJSObjectHolder {
58 public:
59 explicit StatementRowHolder(nsIXPConnectJSObjectHolder* aHolder)
60 : StatementJSObjectHolder(aHolder) {
63 private:
64 virtual ~StatementRowHolder();
67 } // namespace storage
68 } // namespace mozilla
70 #endif // MOZSTORAGESTATEMENTJSHELPER_H