storage/public/mozIStorageAggregateFunction.idl
author Gregory Szorc <gps@mozilla.com>
Tue, 15 Jan 2013 22:21:21 -0800
changeset 119046 ec072cee05025335f0637de7e1dab95623fe8a56
parent 94475 f4157e8c410708d76703f19e4dfb61859bfe32d8
permissions -rw-r--r--
Bug 784841 - Part 2: Implement sandboxing for Python build files; r=ted,glandium This is the beginning of Mozilla's new build system. In this patch, we have a Python sandbox tailored for execution of Python scripts which will define the build system. We also have a build reader that traverses a linked set of scripts. More details are available in the thorough README.rst files as part of this patch. * * * Bug 784841 - Part 2b: Option to not descend into child moz.build files; r=ted

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 mozIStorageConnection;
interface mozIStorageValueArray;
interface nsIArray;
interface nsIVariant;

/**
 * mozIStorageAggregateFunction represents aggregate SQL function.
 * Common examples of aggregate functions are SUM() and COUNT().
 *
 * An aggregate function calculates one result for a given set of data, where
 * a set of data is a group of tuples. There can be one group
 * per request or many of them, if GROUP BY clause is used or not.
 */
[scriptable, uuid(763217b7-3123-11da-918d-000347412e16)]
interface mozIStorageAggregateFunction : nsISupports {
  /**
   * onStep is called when next value should be passed to
   * a custom function.
   * 
   * @param aFunctionArguments    The arguments passed in to the function
   */
  void onStep(in mozIStorageValueArray aFunctionArguments);

  /**
   * Called when all tuples in a group have been processed and the engine
   * needs the aggregate function's value.
   *
   * @returns aggregate result as Variant.
   */
  nsIVariant onFinal();
};