Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/dist/include/mozilla/RangedArray.h
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
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/. */
6
7
/*
8
 * A compile-time constant-length array, with bounds-checking assertions -- but
9
 * unlike mozilla::Array, with indexes biased by a constant.
10
 *
11
 * Thus where mozilla::Array<int, 3> is a three-element array indexed by [0, 3),
12
 * mozilla::RangedArray<int, 8, 3> is a three-element array indexed by [8, 11).
13
 */
14
15
#ifndef mozilla_RangedArray_h
16
#define mozilla_RangedArray_h
17
18
#include "mozilla/Array.h"
19
20
namespace mozilla {
21
22
template<typename T, size_t MinIndex, size_t Length>
23
class RangedArray
24
{
25
private:
26
  typedef Array<T, Length> ArrayType;
27
  ArrayType mArr;
28
29
public:
30
  T& operator[](size_t aIndex)
31
0
  {
32
0
    MOZ_ASSERT(aIndex == MinIndex || aIndex > MinIndex);
33
0
    return mArr[aIndex - MinIndex];
34
0
  }
Unexecuted instantiation: mozilla::RangedArray<mozilla::RangedArray<mozilla::UniquePtr<nsTArray<RefPtr<gfxFontFamily> >, mozilla::DefaultDelete<nsTArray<RefPtr<gfxFontFamily> > > >, 3ul, 5ul>, 0ul, 29ul>::operator[](unsigned long)
Unexecuted instantiation: mozilla::RangedArray<mozilla::UniquePtr<nsTArray<RefPtr<gfxFontFamily> >, mozilla::DefaultDelete<nsTArray<RefPtr<gfxFontFamily> > > >, 3ul, 5ul>::operator[](unsigned long)
35
36
  const T& operator[](size_t aIndex) const
37
0
  {
38
0
    MOZ_ASSERT(aIndex == MinIndex || aIndex > MinIndex);
39
0
    return mArr[aIndex - MinIndex];
40
0
  }
Unexecuted instantiation: mozilla::RangedArray<mozilla::RangedArray<mozilla::UniquePtr<nsTArray<RefPtr<gfxFontFamily> >, mozilla::DefaultDelete<nsTArray<RefPtr<gfxFontFamily> > > >, 3ul, 5ul>, 0ul, 29ul>::operator[](unsigned long) const
Unexecuted instantiation: mozilla::RangedArray<mozilla::UniquePtr<nsTArray<RefPtr<gfxFontFamily> >, mozilla::DefaultDelete<nsTArray<RefPtr<gfxFontFamily> > > >, 3ul, 5ul>::operator[](unsigned long) const
41
42
  typedef typename ArrayType::iterator               iterator;
43
  typedef typename ArrayType::const_iterator         const_iterator;
44
  typedef typename ArrayType::reverse_iterator       reverse_iterator;
45
  typedef typename ArrayType::const_reverse_iterator const_reverse_iterator;
46
47
  // Methods for range-based for loops.
48
  iterator begin() { return mArr.begin(); }
49
  const_iterator begin() const { return mArr.begin(); }
50
  const_iterator cbegin() const { return mArr.cbegin(); }
51
  iterator end() { return mArr.end(); }
52
  const_iterator end() const { return mArr.end(); }
53
  const_iterator cend() const { return mArr.cend(); }
54
55
  // Methods for reverse iterating.
56
  reverse_iterator rbegin() { return mArr.rbegin(); }
57
  const_reverse_iterator rbegin() const { return mArr.rbegin(); }
58
  const_reverse_iterator crbegin() const { return mArr.crbegin(); }
59
  reverse_iterator rend() { return mArr.rend(); }
60
  const_reverse_iterator rend() const { return mArr.rend(); }
61
  const_reverse_iterator crend() const { return mArr.crend(); }
62
};
63
64
} // namespace mozilla
65
66
#endif // mozilla_RangedArray_h