/usr/include/thunderbird/nsSupportsArray.h is in thunderbird-dev 1:38.6.0+build1-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 nsSupportsArray_h__
#define nsSupportsArray_h__
//#define DEBUG_SUPPORTSARRAY 1
#include "nsISupportsArray.h"
#include "mozilla/Attributes.h"
static const uint32_t kAutoArraySize = 8;
class nsSupportsArray final : public nsISupportsArray
{
~nsSupportsArray(void); // nonvirtual since we're not subclassed
public:
nsSupportsArray(void);
static nsresult Create(nsISupports* aOuter, REFNSIID aIID, void** aResult);
NS_DECL_THREADSAFE_ISUPPORTS
NS_DECL_NSISERIALIZABLE
// nsICollection methods:
NS_IMETHOD Count(uint32_t* aResult) override
{
*aResult = mCount;
return NS_OK;
}
NS_IMETHOD GetElementAt(uint32_t aIndex, nsISupports** aResult) override;
NS_IMETHOD QueryElementAt(uint32_t aIndex, const nsIID& aIID, void** aResult) override
{
if (aIndex < mCount) {
nsISupports* element = mArray[aIndex];
if (element) {
return element->QueryInterface(aIID, aResult);
}
}
return NS_ERROR_FAILURE;
}
NS_IMETHOD SetElementAt(uint32_t aIndex, nsISupports* aValue) override
{
return ReplaceElementAt(aValue, aIndex) ? NS_OK : NS_ERROR_FAILURE;
}
NS_IMETHOD AppendElement(nsISupports* aElement) override
{
// XXX Invalid cast of bool to nsresult (bug 778110)
return (nsresult)InsertElementAt(aElement, mCount)/* ? NS_OK : NS_ERROR_FAILURE*/;
}
// XXX this is badly named - should be RemoveFirstElement
NS_IMETHOD RemoveElement(nsISupports* aElement) override;
NS_IMETHOD_(bool) MoveElement(int32_t aFrom, int32_t aTo) override;
NS_IMETHOD Enumerate(nsIEnumerator** aResult) override;
NS_IMETHOD Clear(void) override;
// nsISupportsArray methods:
NS_IMETHOD_(bool) Equals(const nsISupportsArray* aOther) override;
NS_IMETHOD_(int32_t) IndexOf(const nsISupports* aPossibleElement) override;
NS_IMETHOD_(int32_t) IndexOfStartingAt(const nsISupports* aPossibleElement,
uint32_t aStartIndex = 0) override;
NS_IMETHOD_(int32_t) LastIndexOf(const nsISupports* aPossibleElement) override;
NS_IMETHOD GetIndexOf(nsISupports* aPossibleElement, int32_t* aResult) override
{
*aResult = IndexOf(aPossibleElement);
return NS_OK;
}
NS_IMETHOD GetIndexOfStartingAt(nsISupports* aPossibleElement,
uint32_t aStartIndex, int32_t* aResult) override
{
*aResult = IndexOfStartingAt(aPossibleElement, aStartIndex);
return NS_OK;
}
NS_IMETHOD GetLastIndexOf(nsISupports* aPossibleElement, int32_t* aResult) override
{
*aResult = LastIndexOf(aPossibleElement);
return NS_OK;
}
NS_IMETHOD_(bool) InsertElementAt(nsISupports* aElement, uint32_t aIndex) override;
NS_IMETHOD_(bool) ReplaceElementAt(nsISupports* aElement, uint32_t aIndex) override;
NS_IMETHOD_(bool) RemoveElementAt(uint32_t aIndex) override
{
return RemoveElementsAt(aIndex, 1);
}
NS_IMETHOD_(bool) RemoveLastElement(const nsISupports* aElement) override;
NS_IMETHOD DeleteLastElement(nsISupports* aElement) override
{
return (RemoveLastElement(aElement) ? NS_OK : NS_ERROR_FAILURE);
}
NS_IMETHOD DeleteElementAt(uint32_t aIndex) override
{
return (RemoveElementAt(aIndex) ? NS_OK : NS_ERROR_FAILURE);
}
NS_IMETHOD_(bool) AppendElements(nsISupportsArray* aElements) override
{
return InsertElementsAt(aElements, mCount);
}
NS_IMETHOD Compact(void) override;
NS_IMETHOD Clone(nsISupportsArray** aResult) override;
NS_IMETHOD_(bool) InsertElementsAt(nsISupportsArray* aOther,
uint32_t aIndex) override;
NS_IMETHOD_(bool) RemoveElementsAt(uint32_t aIndex, uint32_t aCount) override;
NS_IMETHOD_(bool) SizeTo(int32_t aSize) override;
protected:
void DeleteArray(void);
void GrowArrayBy(int32_t aGrowBy);
nsISupports** mArray;
uint32_t mArraySize;
uint32_t mCount;
nsISupports* mAutoArray[kAutoArraySize];
#if DEBUG_SUPPORTSARRAY
uint32_t mMaxCount;
uint32_t mMaxSize;
#endif
private:
// Copy constructors are not allowed
explicit nsSupportsArray(const nsISupportsArray& aOther);
};
#endif // nsSupportsArray_h__
|