1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/xul/templates/src/nsResourceSet.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,82 @@ 1.4 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 +#ifndef nsResourceSet_h__ 1.9 +#define nsResourceSet_h__ 1.10 + 1.11 +#include "nsIRDFResource.h" 1.12 + 1.13 +class nsResourceSet 1.14 +{ 1.15 +public: 1.16 + nsResourceSet() 1.17 + : mResources(nullptr), 1.18 + mCount(0), 1.19 + mCapacity(0) { 1.20 + MOZ_COUNT_CTOR(nsResourceSet); } 1.21 + 1.22 + nsResourceSet(const nsResourceSet& aResourceSet); 1.23 + 1.24 + nsResourceSet& operator=(const nsResourceSet& aResourceSet); 1.25 + 1.26 + ~nsResourceSet(); 1.27 + 1.28 + nsresult Clear(); 1.29 + nsresult Add(nsIRDFResource* aProperty); 1.30 + void Remove(nsIRDFResource* aProperty); 1.31 + 1.32 + bool Contains(nsIRDFResource* aProperty) const; 1.33 + 1.34 +protected: 1.35 + nsIRDFResource** mResources; 1.36 + int32_t mCount; 1.37 + int32_t mCapacity; 1.38 + 1.39 +public: 1.40 + class ConstIterator { 1.41 + protected: 1.42 + nsIRDFResource** mCurrent; 1.43 + 1.44 + public: 1.45 + ConstIterator() : mCurrent(nullptr) {} 1.46 + 1.47 + ConstIterator(const ConstIterator& aConstIterator) 1.48 + : mCurrent(aConstIterator.mCurrent) {} 1.49 + 1.50 + ConstIterator& operator=(const ConstIterator& aConstIterator) { 1.51 + mCurrent = aConstIterator.mCurrent; 1.52 + return *this; } 1.53 + 1.54 + ConstIterator& operator++() { 1.55 + ++mCurrent; 1.56 + return *this; } 1.57 + 1.58 + ConstIterator operator++(int) { 1.59 + ConstIterator result(*this); 1.60 + ++mCurrent; 1.61 + return result; } 1.62 + 1.63 + /*const*/ nsIRDFResource* operator*() const { 1.64 + return *mCurrent; } 1.65 + 1.66 + /*const*/ nsIRDFResource* operator->() const { 1.67 + return *mCurrent; } 1.68 + 1.69 + bool operator==(const ConstIterator& aConstIterator) const { 1.70 + return mCurrent == aConstIterator.mCurrent; } 1.71 + 1.72 + bool operator!=(const ConstIterator& aConstIterator) const { 1.73 + return mCurrent != aConstIterator.mCurrent; } 1.74 + 1.75 + protected: 1.76 + ConstIterator(nsIRDFResource** aProperty) : mCurrent(aProperty) {} 1.77 + friend class nsResourceSet; 1.78 + }; 1.79 + 1.80 + ConstIterator First() const { return ConstIterator(mResources); } 1.81 + ConstIterator Last() const { return ConstIterator(mResources + mCount); } 1.82 +}; 1.83 + 1.84 +#endif // nsResourceSet_h__ 1.85 +