michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* vim: set ts=2 et sw=2 tw=80: */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this file, michael@0: * You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef mozilla_a11y_EnumVariant_h__ michael@0: #define mozilla_a11y_EnumVariant_h__ michael@0: michael@0: #include "AccessibleWrap.h" michael@0: #include "IUnknownImpl.h" michael@0: michael@0: namespace mozilla { michael@0: namespace a11y { michael@0: michael@0: /** michael@0: * Used to fetch accessible children. michael@0: */ michael@0: class ChildrenEnumVariant MOZ_FINAL : public IEnumVARIANT michael@0: { michael@0: public: michael@0: ChildrenEnumVariant(AccessibleWrap* aAnchor) : mAnchorAcc(aAnchor), michael@0: mCurAcc(mAnchorAcc->GetChildAt(0)), mCurIndex(0) { } michael@0: michael@0: // IUnknown michael@0: DECL_IUNKNOWN michael@0: michael@0: // IEnumVariant michael@0: virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next( michael@0: /* [in] */ ULONG aCount, michael@0: /* [length_is][size_is][out] */ VARIANT* aItems, michael@0: /* [out] */ ULONG* aCountFetched); michael@0: michael@0: virtual HRESULT STDMETHODCALLTYPE Skip( michael@0: /* [in] */ ULONG aCount); michael@0: michael@0: virtual HRESULT STDMETHODCALLTYPE Reset(); michael@0: michael@0: virtual HRESULT STDMETHODCALLTYPE Clone( michael@0: /* [out] */ IEnumVARIANT** aEnumVaraint); michael@0: michael@0: private: michael@0: ChildrenEnumVariant() MOZ_DELETE; michael@0: ChildrenEnumVariant& operator =(const ChildrenEnumVariant&) MOZ_DELETE; michael@0: michael@0: ChildrenEnumVariant(const ChildrenEnumVariant& aEnumVariant) : michael@0: mAnchorAcc(aEnumVariant.mAnchorAcc), mCurAcc(aEnumVariant.mCurAcc), michael@0: mCurIndex(aEnumVariant.mCurIndex) { } michael@0: virtual ~ChildrenEnumVariant() { } michael@0: michael@0: protected: michael@0: nsRefPtr mAnchorAcc; michael@0: Accessible* mCurAcc; michael@0: uint32_t mCurIndex; michael@0: }; michael@0: michael@0: } // a11y namespace michael@0: } // mozilla namespace michael@0: michael@0: #endif