/* -*- 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(); };