From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- dom/media/doctor/DDLogObject.h | 62 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 dom/media/doctor/DDLogObject.h (limited to 'dom/media/doctor/DDLogObject.h') diff --git a/dom/media/doctor/DDLogObject.h b/dom/media/doctor/DDLogObject.h new file mode 100644 index 0000000000..d16d601eb2 --- /dev/null +++ b/dom/media/doctor/DDLogObject.h @@ -0,0 +1,62 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef DDLogObject_h_ +#define DDLogObject_h_ + +#include "nsString.h" + +namespace mozilla { + +// DDLogObject identifies a C++ object by its pointer and its class name (as +// provided in a DDLoggedTypeTrait.) +// Note that a DDLogObject could have the exact same pointer&type as a previous +// one, so extra information is needed to distinguish them, see DDLifetime. +class DDLogObject { + public: + // Default-initialization with null pointer. + DDLogObject() : mTypeName(""), mPointer(nullptr) {} + + // Construction with given non-null type name and pointer. + DDLogObject(const char* aTypeName, const void* aPointer) + : mTypeName(aTypeName), mPointer(aPointer) { + MOZ_ASSERT(aTypeName); + MOZ_ASSERT(aPointer); + } + + // Sets this DDLogObject to an actual object. + void Set(const char* aTypeName, const void* aPointer) { + MOZ_ASSERT(aTypeName); + MOZ_ASSERT(aPointer); + mTypeName = aTypeName; + mPointer = aPointer; + } + + // Object pointer, used for identification purposes only. + const void* Pointer() const { return mPointer; } + + // Type name. Should only be accessed after non-null pointer initialization. + const char* TypeName() const { + MOZ_ASSERT(mPointer); + return mTypeName; + } + + bool operator==(const DDLogObject& a) const { + return mPointer == a.mPointer && (!mPointer || mTypeName == a.mTypeName); + } + + // Print the type name and pointer, e.g.: "MediaDecoder[136078200]". + void AppendPrintf(nsCString& mString) const; + nsCString Printf() const; + + private: + const char* mTypeName; + const void* mPointer; +}; + +} // namespace mozilla + +#endif // DDLogObject_h_ -- cgit v1.2.3