1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ :
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef mozStorageBindingParamsArray_h
8 #define mozStorageBindingParamsArray_h
10 #include "nsAutoPtr.h"
12 #include "mozilla/Attributes.h"
14 #include "mozIStorageBindingParamsArray.h"
19 class StorageBaseStatementInternal
;
21 class BindingParamsArray MOZ_FINAL
: public mozIStorageBindingParamsArray
23 typedef nsTArray
< nsCOMPtr
<mozIStorageBindingParams
> > array_type
;
26 NS_DECL_THREADSAFE_ISUPPORTS
27 NS_DECL_MOZISTORAGEBINDINGPARAMSARRAY
29 BindingParamsArray(StorageBaseStatementInternal
*aOwningStatement
);
31 typedef array_type::size_type size_type
;
34 * Locks the array and prevents further modification to it (such as adding
35 * more elements to it).
40 * @return the pointer to the owning BindingParamsArray.
42 const StorageBaseStatementInternal
*getOwner() const;
45 * @return the number of elemets the array contains.
47 const size_type
length() const { return mArray
.Length(); }
51 iterator(BindingParamsArray
*aArray
,
58 iterator
&operator++(int)
64 bool operator==(const iterator
&aOther
) const
66 return mIndex
== aOther
.mIndex
;
68 bool operator!=(const iterator
&aOther
) const
70 return !(*this == aOther
);
72 mozIStorageBindingParams
*operator*()
74 NS_ASSERTION(mIndex
< mArray
->length(),
75 "Dereferenceing an invalid value!");
76 return mArray
->mArray
[mIndex
].get();
80 BindingParamsArray
*mArray
;
85 * Obtains an iterator pointing to the beginning of the array.
87 inline iterator
begin()
89 NS_ASSERTION(length() != 0,
90 "Obtaining an iterator to the beginning with no elements!");
91 return iterator(this, 0);
95 * Obtains an iterator pointing to the end of the array.
100 "Obtaining an iterator to the end when we are not locked!");
101 return iterator(this, length());
104 nsCOMPtr
<StorageBaseStatementInternal
> mOwningStatement
;
108 friend class iterator
;
111 } // namespace storage
112 } // namespace mozilla
114 #endif // mozStorageBindingParamsArray_h