2727namespace flatbuffers {
2828
2929// This is used as a helper type for accessing arrays.
30- template <typename T, uint16_t length> class Array {
30+ template <typename T, uint16_t length>
31+ class Array {
3132 // Array<T> can carry only POD data types (scalars or structs).
3233 typedef typename flatbuffers::bool_constant<flatbuffers::is_scalar<T>::value>
3334 scalar_tag;
34- typedef
35- typename flatbuffers::conditional<scalar_tag::value, T, const T *>::type
36- IndirectHelperType;
3735
3836 public:
3937 typedef uint16_t size_type;
40- typedef typename IndirectHelper<IndirectHelperType >::return_type return_type;
38+ typedef typename IndirectHelper<T >::return_type return_type;
4139 typedef VectorConstIterator<T, return_type, uoffset_t > const_iterator;
4240 typedef VectorReverseIterator<const_iterator> const_reverse_iterator;
4341
@@ -50,15 +48,16 @@ template<typename T, uint16_t length> class Array {
5048
5149 return_type Get (uoffset_t i) const {
5250 FLATBUFFERS_ASSERT (i < size ());
53- return IndirectHelper<IndirectHelperType >::Read (Data (), i);
51+ return IndirectHelper<T >::Read (Data (), i);
5452 }
5553
5654 return_type operator [](uoffset_t i) const { return Get (i); }
5755
5856 // If this is a Vector of enums, T will be its storage type, not the enum
5957 // type. This function makes it convenient to retrieve value with enum
6058 // type E.
61- template <typename E> E GetEnum (uoffset_t i) const {
59+ template <typename E>
60+ E GetEnum (uoffset_t i) const {
6261 return static_cast <E>(Get (i));
6362 }
6463
@@ -83,28 +82,28 @@ template<typename T, uint16_t length> class Array {
8382 // operation. For primitive types use @p Mutate directly.
8483 // @warning Assignments and reads to/from the dereferenced pointer are not
8584 // automatically converted to the correct endianness.
86- typename flatbuffers::conditional<scalar_tag::value, void , T *>::type
85+ typename flatbuffers::conditional<scalar_tag::value, void , T*>::type
8786 GetMutablePointer (uoffset_t i) const {
8887 FLATBUFFERS_ASSERT (i < size ());
89- return const_cast <T *>(&data ()[i]);
88+ return const_cast <T*>(&data ()[i]);
9089 }
9190
9291 // Change elements if you have a non-const pointer to this object.
93- void Mutate (uoffset_t i, const T & val) { MutateImpl (scalar_tag (), i, val); }
92+ void Mutate (uoffset_t i, const T& val) { MutateImpl (scalar_tag (), i, val); }
9493
9594 // The raw data in little endian format. Use with care.
96- const uint8_t * Data () const { return data_; }
95+ const uint8_t * Data () const { return data_; }
9796
98- uint8_t * Data () { return data_; }
97+ uint8_t * Data () { return data_; }
9998
10099 // Similarly, but typed, much like std::vector::data
101- const T * data () const { return reinterpret_cast <const T *>(Data ()); }
102- T * data () { return reinterpret_cast <T *>(Data ()); }
100+ const T* data () const { return reinterpret_cast <const T*>(Data ()); }
101+ T* data () { return reinterpret_cast <T*>(Data ()); }
103102
104103 // Copy data from a span with endian conversion.
105104 // If this Array and the span overlap, the behavior is undefined.
106105 void CopyFromSpan (flatbuffers::span<const T, length> src) {
107- const auto p1 = reinterpret_cast <const uint8_t *>(src.data ());
106+ const auto p1 = reinterpret_cast <const uint8_t *>(src.data ());
108107 const auto p2 = Data ();
109108 FLATBUFFERS_ASSERT (!(p1 >= p2 && p1 < (p2 + length)) &&
110109 !(p2 >= p1 && p2 < (p1 + length)));
@@ -114,12 +113,12 @@ template<typename T, uint16_t length> class Array {
114113 }
115114
116115 protected:
117- void MutateImpl (flatbuffers::true_type, uoffset_t i, const T & val) {
116+ void MutateImpl (flatbuffers::true_type, uoffset_t i, const T& val) {
118117 FLATBUFFERS_ASSERT (i < size ());
119118 WriteScalar (data () + i, val);
120119 }
121120
122- void MutateImpl (flatbuffers::false_type, uoffset_t i, const T & val) {
121+ void MutateImpl (flatbuffers::false_type, uoffset_t i, const T& val) {
123122 *(GetMutablePointer (i)) = val;
124123 }
125124
@@ -134,7 +133,9 @@ template<typename T, uint16_t length> class Array {
134133 // Copy data from flatbuffers::span with endian conversion.
135134 void CopyFromSpanImpl (flatbuffers::false_type,
136135 flatbuffers::span<const T, length> src) {
137- for (size_type k = 0 ; k < length; k++) { Mutate (k, src[k]); }
136+ for (size_type k = 0 ; k < length; k++) {
137+ Mutate (k, src[k]);
138+ }
138139 }
139140
140141 // This class is only used to access pre-existing data. Don't ever
@@ -153,21 +154,21 @@ template<typename T, uint16_t length> class Array {
153154 private:
154155 // This class is a pointer. Copying will therefore create an invalid object.
155156 // Private and unimplemented copy constructor.
156- Array (const Array &);
157- Array & operator =(const Array &);
157+ Array (const Array&);
158+ Array& operator =(const Array&);
158159};
159160
160161// Specialization for Array[struct] with access using Offset<void> pointer.
161162// This specialization used by idl_gen_text.cpp.
162- template <typename T, uint16_t length, template <typename > class OffsetT >
163+ template <typename T, uint16_t length, template <typename > class OffsetT >
163164class Array <OffsetT<T>, length> {
164165 static_assert (flatbuffers::is_same<T, void >::value, " unexpected type T" );
165166
166167 public:
167- typedef const void * return_type;
168+ typedef const void * return_type;
168169 typedef uint16_t size_type;
169170
170- const uint8_t * Data () const { return data_; }
171+ const uint8_t * Data () const { return data_; }
171172
172173 // Make idl_gen_text.cpp::PrintContainer happy.
173174 return_type operator [](uoffset_t ) const {
@@ -178,41 +179,41 @@ class Array<OffsetT<T>, length> {
178179 private:
179180 // This class is only used to access pre-existing data.
180181 Array ();
181- Array (const Array &);
182- Array & operator =(const Array &);
182+ Array (const Array&);
183+ Array& operator =(const Array&);
183184
184185 uint8_t data_[1 ];
185186};
186187
187- template <class U , uint16_t N>
188- FLATBUFFERS_CONSTEXPR_CPP11 flatbuffers::span<U, N> make_span (Array<U, N> & arr)
188+ template <class U , uint16_t N>
189+ FLATBUFFERS_CONSTEXPR_CPP11 flatbuffers::span<U, N> make_span (Array<U, N>& arr)
189190 FLATBUFFERS_NOEXCEPT {
190191 static_assert (
191192 Array<U, N>::is_span_observable,
192193 " wrong type U, only plain struct, LE-scalar, or byte types are allowed" );
193194 return span<U, N>(arr.data (), N);
194195}
195196
196- template <class U , uint16_t N>
197+ template <class U , uint16_t N>
197198FLATBUFFERS_CONSTEXPR_CPP11 flatbuffers::span<const U, N> make_span (
198- const Array<U, N> & arr) FLATBUFFERS_NOEXCEPT {
199+ const Array<U, N>& arr) FLATBUFFERS_NOEXCEPT {
199200 static_assert (
200201 Array<U, N>::is_span_observable,
201202 " wrong type U, only plain struct, LE-scalar, or byte types are allowed" );
202203 return span<const U, N>(arr.data (), N);
203204}
204205
205- template <class U , uint16_t N>
206+ template <class U , uint16_t N>
206207FLATBUFFERS_CONSTEXPR_CPP11 flatbuffers::span<uint8_t , sizeof (U) * N>
207- make_bytes_span (Array<U, N> & arr) FLATBUFFERS_NOEXCEPT {
208+ make_bytes_span (Array<U, N>& arr) FLATBUFFERS_NOEXCEPT {
208209 static_assert (Array<U, N>::is_span_observable,
209210 " internal error, Array<T> might hold only scalars or structs" );
210211 return span<uint8_t , sizeof (U) * N>(arr.Data (), sizeof (U) * N);
211212}
212213
213- template <class U , uint16_t N>
214+ template <class U , uint16_t N>
214215FLATBUFFERS_CONSTEXPR_CPP11 flatbuffers::span<const uint8_t , sizeof (U) * N>
215- make_bytes_span (const Array<U, N> & arr) FLATBUFFERS_NOEXCEPT {
216+ make_bytes_span (const Array<U, N>& arr) FLATBUFFERS_NOEXCEPT {
216217 static_assert (Array<U, N>::is_span_observable,
217218 " internal error, Array<T> might hold only scalars or structs" );
218219 return span<const uint8_t , sizeof (U) * N>(arr.Data (), sizeof (U) * N);
@@ -221,31 +222,31 @@ make_bytes_span(const Array<U, N> &arr) FLATBUFFERS_NOEXCEPT {
221222// Cast a raw T[length] to a raw flatbuffers::Array<T, length>
222223// without endian conversion. Use with care.
223224// TODO: move these Cast-methods to `internal` namespace.
224- template <typename T, uint16_t length>
225- Array<T, length> & CastToArray (T (&arr)[length]) {
226- return *reinterpret_cast <Array<T, length> *>(arr);
225+ template <typename T, uint16_t length>
226+ Array<T, length>& CastToArray (T (&arr)[length]) {
227+ return *reinterpret_cast <Array<T, length>*>(arr);
227228}
228229
229- template <typename T, uint16_t length>
230- const Array<T, length> & CastToArray (const T (&arr)[length]) {
231- return *reinterpret_cast <const Array<T, length> *>(arr);
230+ template <typename T, uint16_t length>
231+ const Array<T, length>& CastToArray (const T (&arr)[length]) {
232+ return *reinterpret_cast <const Array<T, length>*>(arr);
232233}
233234
234- template <typename E, typename T, uint16_t length>
235- Array<E, length> & CastToArrayOfEnum (T (&arr)[length]) {
235+ template <typename E, typename T, uint16_t length>
236+ Array<E, length>& CastToArrayOfEnum (T (&arr)[length]) {
236237 static_assert (sizeof (E) == sizeof (T), " invalid enum type E" );
237- return *reinterpret_cast <Array<E, length> *>(arr);
238+ return *reinterpret_cast <Array<E, length>*>(arr);
238239}
239240
240- template <typename E, typename T, uint16_t length>
241- const Array<E, length> & CastToArrayOfEnum (const T (&arr)[length]) {
241+ template <typename E, typename T, uint16_t length>
242+ const Array<E, length>& CastToArrayOfEnum (const T (&arr)[length]) {
242243 static_assert (sizeof (E) == sizeof (T), " invalid enum type E" );
243- return *reinterpret_cast <const Array<E, length> *>(arr);
244+ return *reinterpret_cast <const Array<E, length>*>(arr);
244245}
245246
246- template <typename T, uint16_t length>
247- bool operator ==(const Array<T, length> & lhs,
248- const Array<T, length> & rhs) noexcept {
247+ template <typename T, uint16_t length>
248+ bool operator ==(const Array<T, length>& lhs,
249+ const Array<T, length>& rhs) noexcept {
249250 return std::addressof (lhs) == std::addressof (rhs) ||
250251 (lhs.size () == rhs.size () &&
251252 std::memcmp (lhs.Data (), rhs.Data (), rhs.size () * sizeof (T)) == 0 );
0 commit comments