diff -r 000000000000 -r 6474c204b198 dom/quota/ArrayCluster.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/quota/ArrayCluster.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,106 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* 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/. */ + +#ifndef mozilla_dom_quota_arraycluster_h__ +#define mozilla_dom_quota_arraycluster_h__ + +#include "mozilla/dom/quota/QuotaCommon.h" + +#include "Client.h" + +BEGIN_QUOTA_NAMESPACE + +template +class ArrayCluster +{ +public: + ArrayCluster() + { + mArrays.AppendElements(Length); + } + + nsTArray& + ArrayAt(uint32_t aIndex) + { + MOZ_ASSERT(aIndex < Length, "Bad index!"); + return mArrays[aIndex]; + } + + nsTArray& + operator[](uint32_t aIndex) + { + return ArrayAt(aIndex); + } + + bool + IsEmpty() + { + for (uint32_t index = 0; index < Length; index++) { + if (!mArrays[index].IsEmpty()) { + return false; + } + } + return true; + } + + template + void + AppendElementsTo(uint32_t aIndex, nsTArray& aArray) + { + NS_ASSERTION(aIndex < Length, "Bad index!"); + aArray.AppendElements(mArrays[aIndex]); + } + + template + void + AppendElementsTo(uint32_t aIndex, ArrayCluster& aArrayCluster) + { + NS_ASSERTION(aIndex < Length, "Bad index!"); + aArrayCluster[aIndex].AppendElements(mArrays[aIndex]); + } + + template + void + AppendElementsTo(nsTArray& aArray) + { + for (uint32_t index = 0; index < Length; index++) { + aArray.AppendElements(mArrays[index]); + } + } + + template + void + AppendElementsTo(ArrayCluster& aArrayCluster) + { + for (uint32_t index = 0; index < Length; index++) { + aArrayCluster[index].AppendElements(mArrays[index]); + } + } + + template + void + SwapElements(ArrayCluster& aArrayCluster) + { + for (uint32_t index = 0; index < Length; index++) { + mArrays[index].SwapElements(aArrayCluster.mArrays[index]); + } + } + + void + Clear() + { + for (uint32_t index = 0; index < Length; index++) { + mArrays[index].Clear(); + } + } + +private: + nsAutoTArray, Length> mArrays; +}; + +END_QUOTA_NAMESPACE + +#endif // mozilla_dom_quota_arraycluster_h__