storage/mozIStorageBindingParams.idl
author Masayuki Nakano <masayuki@d-toybox.com>
Thu, 10 Jan 2019 08:50:41 +0000
changeset 453219 99a977d519a0b78e267d3dce4afb009b8d3be769
parent 244681 ad01543457e739b4eee7a245e16734a3ecfd10ad
child 474561 5f2932daeff2c6370358feceb7d55f60952a47a1
permissions -rw-r--r--
Bug 181137 - part 8: Make ContentIteratorBase and its subclasses non-refcountable r=smaug This patch makes ContentIteratorBase, PostContentIterator, PreContentIterator and ContentSubtreeIterator classes non-refcountable because most users can create their instances in stack and such users may be in a hot path. So, we can save a lot of cost of instantiation. Unfortunately, only ScriptableContentIterator creates one of the concrete classes and needs to destroy it properly. Therefore, its EnsureContentIterator(), destructor, traverse and unlink code becomes messy. However, ScriptableContentIterator was designed for automated tests and we need to maintain it not so many times. Therefore, improvement of other users must be worthwhiler than this demerit. Differential Revision: https://phabricator.services.mozilla.com/D15928

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * vim: sw=2 ts=2 sts=2 et
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIVariant;

[scriptable, uuid(2d09f42f-966e-4663-b4b3-b0c8676bf2bf)]
interface mozIStorageBindingParams : nsISupports {
  /**
   * Binds aValue to the parameter with the name aName.
   *
   * @param aName
   *        The name of the parameter to bind aValue to.
   * @param aValue
   *        The value to bind.
   */
   void bindByName(in AUTF8String aName,
                   in nsIVariant aValue);
   [noscript] void bindUTF8StringByName(in AUTF8String aName,
                                        in AUTF8String aValue);
   [noscript] void bindStringByName(in AUTF8String aName,
                                    in AString aValue);
   [noscript] void bindDoubleByName(in AUTF8String aName,
                                    in double aValue);
   [noscript] void bindInt32ByName(in AUTF8String aName,
                                   in long aValue);
   [noscript] void bindInt64ByName(in AUTF8String aName,
                                   in long long aValue);
   [noscript] void bindNullByName(in AUTF8String aName);
   void bindBlobByName(in AUTF8String aName,
                       [array, const, size_is(aValueSize)] in octet aValue,
                       in unsigned long aValueSize);

   // Convenience routines for storing strings as blobs.
   void bindStringAsBlobByName(in AUTF8String aName, in AString aValue);
   void bindUTF8StringAsBlobByName(in AUTF8String aName, in AUTF8String aValue);

   // The function adopts the storage for the provided blob.  After calling
   // this function, mozStorage will ensure that free is called on the
   // underlying pointer.
   [noscript]
   void bindAdoptedBlobByName(in AUTF8String aName,
                              [array, size_is(aValueSize)] in octet aValue,
                              in unsigned long aValueSize);

   /**
    * Binds aValue to the parameter with the index aIndex.
    *
    * @param aIndex
    *        The zero-based index of the parameter to bind aValue to.
    * @param aValue
    *        The value to bind.
    */
   void bindByIndex(in unsigned long aIndex,
                    in nsIVariant aValue);
   [noscript] void bindUTF8StringByIndex(in unsigned long aIndex,
                                         in AUTF8String aValue);
   [noscript] void bindStringByIndex(in unsigned long aIndex,
                                     in AString aValue);
   [noscript] void bindDoubleByIndex(in unsigned long aIndex,
                                     in double aValue);
   [noscript] void bindInt32ByIndex(in unsigned long aIndex,
                                    in long aValue);
   [noscript] void bindInt64ByIndex(in unsigned long aIndex,
                                    in long long aValue);
   [noscript] void bindNullByIndex(in unsigned long aIndex);
   void bindBlobByIndex(in unsigned long aIndex,
                        [array, const, size_is(aValueSize)] in octet aValue,
                        in unsigned long aValueSize);

   // Convenience routines for storing strings as blobs.
   void bindStringAsBlobByIndex(in unsigned long aIndex, in AString aValue);
   void bindUTF8StringAsBlobByIndex(in unsigned long aIndex, in AUTF8String aValue);

   // The function adopts the storage for the provided blob.  After calling
   // this function, mozStorage will ensure that free is called on the
   // underlying pointer.
   [noscript]
   void bindAdoptedBlobByIndex(in unsigned long aIndex,
                               [array, size_is(aValueSize)] in octet aValue,
                               in unsigned long aValueSize);
};