diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2017-01-23 01:24:08 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-23 01:24:08 -0800 |
commit | ab6117c6b486cfcbf65adf8702dbc8472b4eb8c0 (patch) | |
tree | a57c9fab0e4c5498247465cca69f9e0b0e3cad24 /tests/headers/nsStyleAutoArray.hpp | |
parent | 7373a4258f652c23e5fe00ad14740393caa40082 (diff) | |
parent | aad93a81bb2ceeeeffc94c856a6d0d37c5ac6aec (diff) |
Auto merge of #414 - emilio:crates-io, r=fitzgen,Yamakaky
Reorganize the crate and rename to bindgen.
Fixes #398
Fixes #21
r? @fitzgen
Diffstat (limited to 'tests/headers/nsStyleAutoArray.hpp')
-rw-r--r-- | tests/headers/nsStyleAutoArray.hpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/headers/nsStyleAutoArray.hpp b/tests/headers/nsStyleAutoArray.hpp new file mode 100644 index 00000000..950152c0 --- /dev/null +++ b/tests/headers/nsStyleAutoArray.hpp @@ -0,0 +1,57 @@ + +template<typename T> +class nsTArray { + T* mBuff; +}; + +template<typename T> +class nsStyleAutoArray +{ +public: + // This constructor places a single element in mFirstElement. + enum WithSingleInitialElement { WITH_SINGLE_INITIAL_ELEMENT }; + explicit nsStyleAutoArray(WithSingleInitialElement) {} + nsStyleAutoArray(const nsStyleAutoArray& aOther) { *this = aOther; } + nsStyleAutoArray& operator=(const nsStyleAutoArray& aOther) { + mFirstElement = aOther.mFirstElement; + mOtherElements = aOther.mOtherElements; + return *this; + } + + bool operator==(const nsStyleAutoArray& aOther) const { + return Length() == aOther.Length() && + mFirstElement == aOther.mFirstElement && + mOtherElements == aOther.mOtherElements; + } + bool operator!=(const nsStyleAutoArray& aOther) const { + return !(*this == aOther); + } + + unsigned long Length() const { + return mOtherElements.Length() + 1; + } + const T& operator[](unsigned long aIndex) const { + return aIndex == 0 ? mFirstElement : mOtherElements[aIndex - 1]; + } + T& operator[](unsigned long aIndex) { + return aIndex == 0 ? mFirstElement : mOtherElements[aIndex - 1]; + } + + void EnsureLengthAtLeast(unsigned long aMinLen) { + if (aMinLen > 0) { + mOtherElements.EnsureLengthAtLeast(aMinLen - 1); + } + } + + void SetLengthNonZero(unsigned long aNewLen) { + mOtherElements.SetLength(aNewLen - 1); + } + + void TruncateLengthNonZero(unsigned long aNewLen) { + mOtherElements.TruncateLength(aNewLen - 1); + } + +private: + T mFirstElement; + nsTArray<T> mOtherElements; +}; |