Blame storage/mozStorageStatementJSHelper.h

Packit f0b94e
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
Packit f0b94e
 * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ :
Packit f0b94e
 * This Source Code Form is subject to the terms of the Mozilla Public
Packit f0b94e
 * License, v. 2.0. If a copy of the MPL was not distributed with this
Packit f0b94e
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
Packit f0b94e
Packit f0b94e
#ifndef MOZSTORAGESTATEMENTJSHELPER_H
Packit f0b94e
#define MOZSTORAGESTATEMENTJSHELPER_H
Packit f0b94e
Packit f0b94e
#include "nsIXPCScriptable.h"
Packit f0b94e
#include "nsIXPConnect.h"
Packit f0b94e
Packit f0b94e
class Statement;
Packit f0b94e
Packit f0b94e
namespace mozilla {
Packit f0b94e
namespace storage {
Packit f0b94e
Packit f0b94e
class StatementParams;
Packit f0b94e
class StatementRow;
Packit f0b94e
Packit f0b94e
class StatementJSHelper : public nsIXPCScriptable {
Packit f0b94e
 public:
Packit f0b94e
  NS_DECL_ISUPPORTS
Packit f0b94e
  NS_DECL_NSIXPCSCRIPTABLE
Packit f0b94e
Packit f0b94e
 private:
Packit f0b94e
  nsresult getRow(Statement *, JSContext *, JSObject *, JS::Value *);
Packit f0b94e
  nsresult getParams(Statement *, JSContext *, JSObject *, JS::Value *);
Packit f0b94e
};
Packit f0b94e
Packit f0b94e
/**
Packit f0b94e
 * Wrappers used to clean up the references JS helpers hold to the statement.
Packit f0b94e
 * For cycle-avoidance reasons they do not hold reference-counted references,
Packit f0b94e
 * so it is important we do this.
Packit f0b94e
 */
Packit f0b94e
Packit f0b94e
class StatementParamsHolder final : public nsISupports {
Packit f0b94e
 public:
Packit f0b94e
  NS_DECL_ISUPPORTS
Packit f0b94e
Packit f0b94e
  explicit StatementParamsHolder(StatementParams *aParams) : mParams(aParams) {}
Packit f0b94e
Packit f0b94e
  StatementParams *Get() const {
Packit f0b94e
    MOZ_ASSERT(mParams);
Packit f0b94e
    return mParams;
Packit f0b94e
  }
Packit f0b94e
Packit f0b94e
 private:
Packit f0b94e
  virtual ~StatementParamsHolder();
Packit f0b94e
Packit f0b94e
  RefPtr<StatementParams> mParams;
Packit f0b94e
};
Packit f0b94e
Packit f0b94e
class StatementRowHolder final : public nsISupports {
Packit f0b94e
 public:
Packit f0b94e
  NS_DECL_ISUPPORTS
Packit f0b94e
Packit f0b94e
  explicit StatementRowHolder(StatementRow *aRow) : mRow(aRow) {}
Packit f0b94e
Packit f0b94e
  StatementRow *Get() const {
Packit f0b94e
    MOZ_ASSERT(mRow);
Packit f0b94e
    return mRow;
Packit f0b94e
  }
Packit f0b94e
Packit f0b94e
 private:
Packit f0b94e
  virtual ~StatementRowHolder();
Packit f0b94e
Packit f0b94e
  RefPtr<StatementRow> mRow;
Packit f0b94e
};
Packit f0b94e
Packit f0b94e
}  // namespace storage
Packit f0b94e
}  // namespace mozilla
Packit f0b94e
Packit f0b94e
#endif  // MOZSTORAGESTATEMENTJSHELPER_H