/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* 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 "nsISerializable.idl" interface nsIEnumerator; [deprecated, scriptable, uuid(83b6019c-cbc4-11d2-8cca-0060b0fc14a3)] interface nsICollection : nsISerializable { uint32_t Count(); nsISupports GetElementAt(in uint32_t index); void QueryElementAt(in uint32_t index, in nsIIDRef uuid, [iid_is(uuid),retval] out nsQIResult result); void SetElementAt(in uint32_t index, in nsISupports item); void AppendElement(in nsISupports item); void RemoveElement(in nsISupports item); /** * This clashes with |nsISimpleEnumerator nsIArray.enumerate()| (only on the * binary side), so it is renamed with a 'Deprecated' prefix in favor of the * non-deprecated |nsIArray.enumerate|. */ [binaryname(DeprecatedEnumerate)] nsIEnumerator Enumerate(); void Clear(); }; %{C++ #ifndef nsCOMPtr_h__ #include "nsCOMPtr.h" #endif class MOZ_STACK_CLASS nsQueryElementAt : public nsCOMPtr_helper { public: nsQueryElementAt( nsICollection* aCollection, uint32_t aIndex, nsresult* aErrorPtr ) : mCollection(aCollection), mIndex(aIndex), mErrorPtr(aErrorPtr) { // nothing else to do here } virtual nsresult NS_FASTCALL operator()( const nsIID& aIID, void** ) const override; private: nsICollection* MOZ_NON_OWNING_REF mCollection; uint32_t mIndex; nsresult* mErrorPtr; }; inline const nsQueryElementAt do_QueryElementAt( nsICollection* aCollection, uint32_t aIndex, nsresult* aErrorPtr = 0 ) { return nsQueryElementAt(aCollection, aIndex, aErrorPtr); } %}