/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 */ |