Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/dist/include/mozilla/NonDereferenceable.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
#ifndef mozilla_NonDereferenceable_h
8
#define mozilla_NonDereferenceable_h
9
10
/* A pointer wrapper indicating that the pointer should not be dereferenced. */
11
12
#include "mozilla/Attributes.h"
13
#include "mozilla/TypeTraits.h"
14
15
#include <cstdint>
16
17
// Macro indicating that a function manipulates a pointer that will not be
18
// dereferenced, and therefore there is no need to check the object.
19
#if defined(__clang__)
20
#define NO_POINTEE_CHECKS __attribute__((no_sanitize("vptr")))
21
#else
22
#define NO_POINTEE_CHECKS /* nothing */
23
#endif
24
25
namespace mozilla {
26
27
// NonDereferenceable<T> wraps a raw pointer value of type T*, but prevents
28
// dereferencing.
29
//
30
// The main use case is for pointers that referencing memory that may not
31
// contain a valid object, either because the object has already been freed, or
32
// is under active construction or destruction (and hence parts of it may be
33
// uninitialized or destructed.)
34
// Such a pointer may still be useful, e.g., for its numeric value for
35
// logging/debugging purposes, which may be accessed with `value()`.
36
// Using NonDereferenceable with such pointers will make this intent clearer,
37
// and prevent misuses.
38
//
39
// Note that NonDereferenceable is only a wrapper and is NOT an owning pointer,
40
// i.e., it will not release/free the object.
41
//
42
// NonDereferenceable allows conversions between compatible pointer types, e.g.,
43
// to navigate a class hierarchy and identify parent/sub-objects. Note that the
44
// converted pointers stay safely NonDereferenceable.
45
//
46
// Use of NonDereferenceable is required to avoid errors from sanitization tools
47
// like `clang++ -fsanitize=vptr`, and should prevent false positives while
48
// pointers are manipulated within NonDereferenceable objects.
49
//
50
template<typename T>
51
class NonDereferenceable
52
{
53
public:
54
  // Default construction with a null value.
55
  NonDereferenceable()
56
    : mPtr(nullptr)
57
  {
58
  }
59
60
  // Default copy construction and assignment.
61
  NO_POINTEE_CHECKS
62
  NonDereferenceable(const NonDereferenceable&) = default;
63
  NO_POINTEE_CHECKS
64
  NonDereferenceable<T>& operator=(const NonDereferenceable&) = default;
65
  // No move operations, as we're only carrying a non-owning pointer, so
66
  // copying is most efficient.
67
68
  // Construct/assign from a T* raw pointer.
69
  // A raw pointer should usually point at a valid object, however we want to
70
  // leave the ability to the user to create a NonDereferenceable from any
71
  // pointer. Also, strictly speaking, in a constructor or destructor, `this`
72
  // points at an object still being constructed or already partially
73
  // destructed, which some very sensitive sanitizers could complain about.
74
  NO_POINTEE_CHECKS
75
  explicit NonDereferenceable(T* aPtr)
76
    : mPtr(aPtr)
77
0
  {
78
0
  }
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::HTMLAudioElement const>::NonDereferenceable(mozilla::dom::HTMLAudioElement const*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::HTMLMediaElement const>::NonDereferenceable(mozilla::dom::HTMLMediaElement const*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::HTMLVideoElement const>::NonDereferenceable(mozilla::dom::HTMLVideoElement const*)
79
  NO_POINTEE_CHECKS
80
  NonDereferenceable& operator=(T* aPtr)
81
  {
82
    mPtr = aPtr;
83
    return *this;
84
  }
85
86
  // Construct/assign from a compatible pointer type.
87
  template<typename U>
88
  NO_POINTEE_CHECKS explicit NonDereferenceable(U* aOther)
89
    : mPtr(static_cast<T*>(aOther))
90
0
  {
91
0
  }
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaDataDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaDataDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaTrackDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaTrackDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaTrackDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaResourceIndex const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaResourceIndex> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaResourceIndex>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ADTSDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::ADTSDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::ADTSDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ADTSTrackDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::ADTSTrackDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::ADTSTrackDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaResource const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaResource> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaResource>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::BaseMediaResource const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::BaseMediaResource> >(mozilla::DecoderDoctorLifeLogger<mozilla::BaseMediaResource>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::BufferMediaResource const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::BufferMediaResource> >(mozilla::DecoderDoctorLifeLogger<mozilla::BufferMediaResource>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaResourceCallback const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaResourceCallback> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaResourceCallback>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ChannelMediaDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::ChannelMediaDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::ChannelMediaDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ChannelMediaResource const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::ChannelMediaResource> >(mozilla::DecoderDoctorLifeLogger<mozilla::ChannelMediaResource>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaCacheStream const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaCacheStream> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaCacheStream>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDecoderStateMachine const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaDecoderStateMachine> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaDecoderStateMachine>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaFormatReader const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaFormatReader> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaFormatReader>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::MediaKeySession const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::dom::MediaKeySession> >(mozilla::DecoderDoctorLifeLogger<mozilla::dom::MediaKeySession>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::MediaKeys const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::dom::MediaKeys> >(mozilla::DecoderDoctorLifeLogger<mozilla::dom::MediaKeys>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FlacDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FlacDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::FlacDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FlacTrackDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FlacTrackDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::FlacTrackDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaDataDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaDataDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::RemoteVideoDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::dom::RemoteVideoDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::dom::RemoteVideoDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ByteStream const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::ByteStream> >(mozilla::DecoderDoctorLifeLogger<mozilla::ByteStream>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::WebMContainerParser const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::WebMContainerParser> >(mozilla::DecoderDoctorLifeLogger<mozilla::WebMContainerParser>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP4ContainerParser const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MP4ContainerParser> >(mozilla::DecoderDoctorLifeLogger<mozilla::MP4ContainerParser>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MoofParser const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MoofParser> >(mozilla::DecoderDoctorLifeLogger<mozilla::MoofParser>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ADTSContainerParser const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::ADTSContainerParser> >(mozilla::DecoderDoctorLifeLogger<mozilla::ADTSContainerParser>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaSourceDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaSourceDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaSourceDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaSourceTrackDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaSourceTrackDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaSourceTrackDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ContainerParser const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::ContainerParser> >(mozilla::DecoderDoctorLifeLogger<mozilla::ContainerParser>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP4Stream const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MP4Stream> >(mozilla::DecoderDoctorLifeLogger<mozilla::MP4Stream>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::MediaSource const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::dom::MediaSource> >(mozilla::DecoderDoctorLifeLogger<mozilla::dom::MediaSource>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaSourceDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaSourceDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaSourceDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::SourceBuffer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::dom::SourceBuffer> >(mozilla::DecoderDoctorLifeLogger<mozilla::dom::SourceBuffer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::SourceBufferResource const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::SourceBufferResource> >(mozilla::DecoderDoctorLifeLogger<mozilla::SourceBufferResource>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::TrackBuffersManager const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::TrackBuffersManager> >(mozilla::DecoderDoctorLifeLogger<mozilla::TrackBuffersManager>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP3TrackDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MP3TrackDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::MP3TrackDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP3Demuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MP3Demuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::MP3Demuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::OggDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::OggDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::OggDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::OggTrackDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::OggTrackDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::OggTrackDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoderProxy const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MediaDataDecoderProxy> >(mozilla::DecoderDoctorLifeLogger<mozilla::MediaDataDecoderProxy>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::DummyMediaDataDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::DummyMediaDataDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::DummyMediaDataDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::WaveDataDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::WaveDataDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::WaveDataDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::AOMDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::AOMDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::AOMDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::OpusDataDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::OpusDataDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::OpusDataDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::TheoraDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::TheoraDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::TheoraDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::VPXDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::VPXDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::VPXDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::VorbisDataDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::VorbisDataDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::VorbisDataDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::H264Converter const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::H264Converter> >(mozilla::DecoderDoctorLifeLogger<mozilla::H264Converter>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::EMEDecryptor const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::EMEDecryptor> >(mozilla::DecoderDoctorLifeLogger<mozilla::EMEDecryptor>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::EMEMediaDataDecoderProxy const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::EMEMediaDataDecoderProxy> >(mozilla::DecoderDoctorLifeLogger<mozilla::EMEMediaDataDecoderProxy>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ChromiumCDMVideoDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::ChromiumCDMVideoDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::ChromiumCDMVideoDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::GMPVideoDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::GMPVideoDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::GMPVideoDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::OmxDataDecoder const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::OmxDataDecoder> >(mozilla::DecoderDoctorLifeLogger<mozilla::OmxDataDecoder>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<46465650> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegVideoDecoder<46465650> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegVideoDecoder<46465650> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<46465650> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegAudioDecoder<46465650> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegAudioDecoder<46465650> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<46465650> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegDataDecoder<46465650> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegDataDecoder<46465650> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<53> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegVideoDecoder<53> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegVideoDecoder<53> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<53> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegAudioDecoder<53> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegAudioDecoder<53> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<53> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegDataDecoder<53> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegDataDecoder<53> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<54> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegVideoDecoder<54> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegVideoDecoder<54> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<54> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegAudioDecoder<54> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegAudioDecoder<54> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<54> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegDataDecoder<54> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegDataDecoder<54> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<55> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegVideoDecoder<55> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegVideoDecoder<55> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<55> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegAudioDecoder<55> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegAudioDecoder<55> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<55> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegDataDecoder<55> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegDataDecoder<55> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<57> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegVideoDecoder<57> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegVideoDecoder<57> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<57> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegAudioDecoder<57> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegAudioDecoder<57> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<57> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegDataDecoder<57> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegDataDecoder<57> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<58> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegVideoDecoder<58> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegVideoDecoder<58> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<58> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegAudioDecoder<58> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegAudioDecoder<58> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<58> const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegDataDecoder<58> > >(mozilla::DecoderDoctorLifeLogger<mozilla::FFmpegDataDecoder<58> >*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::WAVTrackDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::WAVTrackDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::WAVTrackDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::WAVDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::WAVDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::WAVDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::WebMDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::WebMDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::WebMDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::WebMTrackDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::WebMTrackDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::WebMTrackDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP4Demuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MP4Demuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::MP4Demuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP4TrackDemuxer const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MP4TrackDemuxer> >(mozilla::DecoderDoctorLifeLogger<mozilla::MP4TrackDemuxer>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::BlockingStream const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::BlockingStream> >(mozilla::DecoderDoctorLifeLogger<mozilla::BlockingStream>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::BufferStream const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::BufferStream> >(mozilla::DecoderDoctorLifeLogger<mozilla::BufferStream>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP4Metadata const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MP4Metadata> >(mozilla::DecoderDoctorLifeLogger<mozilla::MP4Metadata>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ResourceStream const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::ResourceStream> >(mozilla::DecoderDoctorLifeLogger<mozilla::ResourceStream>*)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MockMediaResource const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<mozilla::MockMediaResource> >(mozilla::DecoderDoctorLifeLogger<mozilla::MockMediaResource>*)
Unexecuted instantiation: mozilla::NonDereferenceable<MockMP3MediaResource const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<MockMP3MediaResource> >(mozilla::DecoderDoctorLifeLogger<MockMP3MediaResource>*)
Unexecuted instantiation: mozilla::NonDereferenceable<MockMP3StreamMediaResource const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<MockMP3StreamMediaResource> >(mozilla::DecoderDoctorLifeLogger<MockMP3StreamMediaResource>*)
Unexecuted instantiation: mozilla::NonDereferenceable<TestStream const>::NonDereferenceable<mozilla::DecoderDoctorLifeLogger<TestStream> >(mozilla::DecoderDoctorLifeLogger<TestStream>*)
92
  template<typename U>
93
  NO_POINTEE_CHECKS NonDereferenceable& operator=(U* aOther)
94
  {
95
    mPtr = static_cast<T*>(aOther);
96
    return *this;
97
  }
98
99
  // Construct/assign from a NonDereferenceable with a compatible pointer type.
100
  template<typename U>
101
  NO_POINTEE_CHECKS MOZ_IMPLICIT
102
  NonDereferenceable(const NonDereferenceable<U>& aOther)
103
    : mPtr(static_cast<T*>(aOther.mPtr))
104
0
  {
105
0
  }
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::HTMLMediaElement const>::NonDereferenceable<mozilla::dom::HTMLAudioElement const>(mozilla::NonDereferenceable<mozilla::dom::HTMLAudioElement const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::HTMLMediaElement const>::NonDereferenceable<mozilla::dom::HTMLVideoElement const>(mozilla::NonDereferenceable<mozilla::dom::HTMLVideoElement const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDemuxer const>::NonDereferenceable<mozilla::ADTSDemuxer const>(mozilla::NonDereferenceable<mozilla::ADTSDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaTrackDemuxer const>::NonDereferenceable<mozilla::ADTSTrackDemuxer const>(mozilla::NonDereferenceable<mozilla::ADTSTrackDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaResource const>::NonDereferenceable<mozilla::BaseMediaResource const>(mozilla::NonDereferenceable<mozilla::BaseMediaResource const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaResource const>::NonDereferenceable<mozilla::BufferMediaResource const>(mozilla::NonDereferenceable<mozilla::BufferMediaResource const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDecoder const>::NonDereferenceable<mozilla::ChannelMediaDecoder const>(mozilla::NonDereferenceable<mozilla::ChannelMediaDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::BaseMediaResource const>::NonDereferenceable<mozilla::ChannelMediaResource const>(mozilla::NonDereferenceable<mozilla::ChannelMediaResource const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDemuxer const>::NonDereferenceable<mozilla::FlacDemuxer const>(mozilla::NonDereferenceable<mozilla::FlacDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaTrackDemuxer const>::NonDereferenceable<mozilla::FlacTrackDemuxer const>(mozilla::NonDereferenceable<mozilla::FlacTrackDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::dom::RemoteVideoDecoder const>(mozilla::NonDereferenceable<mozilla::dom::RemoteVideoDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ContainerParser const>::NonDereferenceable<mozilla::WebMContainerParser const>(mozilla::NonDereferenceable<mozilla::WebMContainerParser const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ContainerParser const>::NonDereferenceable<mozilla::MP4ContainerParser const>(mozilla::NonDereferenceable<mozilla::MP4ContainerParser const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ContainerParser const>::NonDereferenceable<mozilla::ADTSContainerParser const>(mozilla::NonDereferenceable<mozilla::ADTSContainerParser const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ByteStream const>::NonDereferenceable<mozilla::MP4Stream const>(mozilla::NonDereferenceable<mozilla::MP4Stream const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDecoder const>::NonDereferenceable<mozilla::MediaSourceDecoder const>(mozilla::NonDereferenceable<mozilla::MediaSourceDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDemuxer const>::NonDereferenceable<mozilla::MediaSourceDemuxer const>(mozilla::NonDereferenceable<mozilla::MediaSourceDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaTrackDemuxer const>::NonDereferenceable<mozilla::MediaSourceTrackDemuxer const>(mozilla::NonDereferenceable<mozilla::MediaSourceTrackDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaResource const>::NonDereferenceable<mozilla::SourceBufferResource const>(mozilla::NonDereferenceable<mozilla::SourceBufferResource const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDemuxer const>::NonDereferenceable<mozilla::MP3Demuxer const>(mozilla::NonDereferenceable<mozilla::MP3Demuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaTrackDemuxer const>::NonDereferenceable<mozilla::MP3TrackDemuxer const>(mozilla::NonDereferenceable<mozilla::MP3TrackDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDemuxer const>::NonDereferenceable<mozilla::OggDemuxer const>(mozilla::NonDereferenceable<mozilla::OggDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaTrackDemuxer const>::NonDereferenceable<mozilla::OggTrackDemuxer const>(mozilla::NonDereferenceable<mozilla::OggTrackDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::AOMDecoder const>(mozilla::NonDereferenceable<mozilla::AOMDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::DummyMediaDataDecoder const>(mozilla::NonDereferenceable<mozilla::DummyMediaDataDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::OpusDataDecoder const>(mozilla::NonDereferenceable<mozilla::OpusDataDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::TheoraDecoder const>(mozilla::NonDereferenceable<mozilla::TheoraDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::VPXDecoder const>(mozilla::NonDereferenceable<mozilla::VPXDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::VorbisDataDecoder const>(mozilla::NonDereferenceable<mozilla::VorbisDataDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::WaveDataDecoder const>(mozilla::NonDereferenceable<mozilla::WaveDataDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::H264Converter const>(mozilla::NonDereferenceable<mozilla::H264Converter const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::MediaDataDecoderProxy const>(mozilla::NonDereferenceable<mozilla::MediaDataDecoderProxy const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::EMEDecryptor const>(mozilla::NonDereferenceable<mozilla::EMEDecryptor const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::ChromiumCDMVideoDecoder const>(mozilla::NonDereferenceable<mozilla::ChromiumCDMVideoDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoderProxy const>::NonDereferenceable<mozilla::EMEMediaDataDecoderProxy const>(mozilla::NonDereferenceable<mozilla::EMEMediaDataDecoderProxy const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::GMPVideoDecoder const>(mozilla::NonDereferenceable<mozilla::GMPVideoDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::OmxDataDecoder const>(mozilla::NonDereferenceable<mozilla::OmxDataDecoder const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<46465650> const>::NonDereferenceable<mozilla::FFmpegAudioDecoder<46465650> const>(mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<46465650> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::FFmpegDataDecoder<46465650> const>(mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<46465650> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<46465650> const>::NonDereferenceable<mozilla::FFmpegVideoDecoder<46465650> const>(mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<46465650> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<53> const>::NonDereferenceable<mozilla::FFmpegAudioDecoder<53> const>(mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<53> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::FFmpegDataDecoder<53> const>(mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<53> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<53> const>::NonDereferenceable<mozilla::FFmpegVideoDecoder<53> const>(mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<53> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<54> const>::NonDereferenceable<mozilla::FFmpegAudioDecoder<54> const>(mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<54> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::FFmpegDataDecoder<54> const>(mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<54> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<54> const>::NonDereferenceable<mozilla::FFmpegVideoDecoder<54> const>(mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<54> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<55> const>::NonDereferenceable<mozilla::FFmpegAudioDecoder<55> const>(mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<55> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::FFmpegDataDecoder<55> const>(mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<55> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<55> const>::NonDereferenceable<mozilla::FFmpegVideoDecoder<55> const>(mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<55> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<57> const>::NonDereferenceable<mozilla::FFmpegAudioDecoder<57> const>(mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<57> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::FFmpegDataDecoder<57> const>(mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<57> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<57> const>::NonDereferenceable<mozilla::FFmpegVideoDecoder<57> const>(mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<57> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<58> const>::NonDereferenceable<mozilla::FFmpegAudioDecoder<58> const>(mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<58> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::NonDereferenceable<mozilla::FFmpegDataDecoder<58> const>(mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<58> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<58> const>::NonDereferenceable<mozilla::FFmpegVideoDecoder<58> const>(mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<58> const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDemuxer const>::NonDereferenceable<mozilla::WAVDemuxer const>(mozilla::NonDereferenceable<mozilla::WAVDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaTrackDemuxer const>::NonDereferenceable<mozilla::WAVTrackDemuxer const>(mozilla::NonDereferenceable<mozilla::WAVTrackDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDemuxer const>::NonDereferenceable<mozilla::WebMDemuxer const>(mozilla::NonDereferenceable<mozilla::WebMDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaTrackDemuxer const>::NonDereferenceable<mozilla::WebMTrackDemuxer const>(mozilla::NonDereferenceable<mozilla::WebMTrackDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDemuxer const>::NonDereferenceable<mozilla::MP4Demuxer const>(mozilla::NonDereferenceable<mozilla::MP4Demuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaTrackDemuxer const>::NonDereferenceable<mozilla::MP4TrackDemuxer const>(mozilla::NonDereferenceable<mozilla::MP4TrackDemuxer const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ByteStream const>::NonDereferenceable<mozilla::BlockingStream const>(mozilla::NonDereferenceable<mozilla::BlockingStream const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ByteStream const>::NonDereferenceable<mozilla::BufferStream const>(mozilla::NonDereferenceable<mozilla::BufferStream const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ByteStream const>::NonDereferenceable<mozilla::ResourceStream const>(mozilla::NonDereferenceable<mozilla::ResourceStream const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaResource const>::NonDereferenceable<mozilla::MockMediaResource const>(mozilla::NonDereferenceable<mozilla::MockMediaResource const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MockMediaResource const>::NonDereferenceable<MockMP3MediaResource const>(mozilla::NonDereferenceable<MockMP3MediaResource const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<MockMP3MediaResource const>::NonDereferenceable<MockMP3StreamMediaResource const>(mozilla::NonDereferenceable<MockMP3StreamMediaResource const> const&)
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ByteStream const>::NonDereferenceable<TestStream const>(mozilla::NonDereferenceable<TestStream const> const&)
106
  template<typename U>
107
  NO_POINTEE_CHECKS NonDereferenceable& operator=(
108
    const NonDereferenceable<U>& aOther)
109
  {
110
    mPtr = static_cast<T*>(aOther.mPtr);
111
    return *this;
112
  }
113
114
  // Explicitly disallow dereference operators, so that compiler errors point
115
  // at these lines:
116
  T& operator*() = delete;  // Cannot dereference NonDereferenceable!
117
  T* operator->() = delete; // Cannot dereference NonDereferenceable!
118
119
  // Null check.
120
  NO_POINTEE_CHECKS
121
  explicit operator bool() const { return !!mPtr; }
122
123
  // Extract the pointer value, untyped.
124
  NO_POINTEE_CHECKS
125
0
  uintptr_t value() const { return reinterpret_cast<uintptr_t>(mPtr); }
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaResource const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaTrackDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::HTMLAudioElement const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::HTMLMediaElement const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaResourceCallback const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::HTMLVideoElement const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaResourceIndex const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP3TrackDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::WAVTrackDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ADTSDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ADTSTrackDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::BaseMediaResource const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::BufferMediaResource const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ChannelMediaDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ChannelMediaResource const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaCacheStream const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDecoderStateMachine const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaFormatReader const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::MediaKeySession const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::MediaKeys const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FlacDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FlacTrackDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::RemoteVideoDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ByteStream const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::WebMContainerParser const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ContainerParser const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP4ContainerParser const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MoofParser const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ADTSContainerParser const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaSourceDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaSourceTrackDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP4Stream const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::MediaSource const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaSourceDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::dom::SourceBuffer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::SourceBufferResource const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::TrackBuffersManager const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP3Demuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::OggDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::OggTrackDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MediaDataDecoderProxy const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::DummyMediaDataDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::WaveDataDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::AOMDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::OpusDataDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::TheoraDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::VPXDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::VorbisDataDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::H264Converter const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::EMEDecryptor const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::EMEMediaDataDecoderProxy const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ChromiumCDMVideoDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::GMPVideoDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::OmxDataDecoder const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<46465650> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<46465650> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<46465650> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<53> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<53> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<53> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<54> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<54> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<54> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<55> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<55> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<55> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<57> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<57> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<57> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegVideoDecoder<58> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegAudioDecoder<58> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::FFmpegDataDecoder<58> const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::WAVDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::WebMDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::WebMTrackDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP4Demuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP4TrackDemuxer const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::BlockingStream const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::BufferStream const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MP4Metadata const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::ResourceStream const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<mozilla::MockMediaResource const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<MockMP3MediaResource const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<MockMP3StreamMediaResource const>::value() const
Unexecuted instantiation: mozilla::NonDereferenceable<TestStream const>::value() const
126
127
private:
128
  // Let other NonDereferenceable templates access mPtr, to permit construction/
129
  // assignment from compatible pointer types.
130
  template<typename> friend class NonDereferenceable;
131
132
  T* MOZ_NON_OWNING_REF mPtr;
133
};
134
135
} // namespace mozilla
136
137
#undef NO_POINTEE_CHECKS
138
139
#endif /* mozilla_NonDereferenceable_h */