/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* 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/. */
/* * Provides DebugOnly, a type for variables used only in debug builds (i.e. by * assertions).
*/
/** * DebugOnly contains a value of type T, but only in debug builds. In release * builds, it does not contain a value. This helper is intended to be used with * MOZ_ASSERT()-style macros, allowing one to write: * * DebugOnly<bool> check = func(); * MOZ_ASSERT(check); * * more concisely than declaring |check| conditional on #ifdef DEBUG. * * DebugOnly instances can only be coerced to T in debug builds. In release * builds they don't have a value, so type coercion is not well defined. * * NOTE: DebugOnly instances still take up one byte of space, plus padding, even * in optimized, non-DEBUG builds (see bug 1253094 comment 37 for more info). * For this reason the class is MOZ_STACK_CLASS to prevent consumers using * DebugOnly for struct/class members and unwittingly inflating the size of * their objects in release builds.
*/ template <typename T> class MOZ_STACK_CLASS DebugOnly { public: #ifdef DEBUG
T value;
// Do not define operator+=(), etc. here. These will coerce via the // implicit cast and built-in operators. Defining explicit methods here // will create ambiguity the compiler can't deal with.
/* * DebugOnly must always have a user-defined destructor or else it will * generate "unused variable" warnings, exactly what it's intended * to avoid!
*/
~DebugOnly() {}
};
} // namespace mozilla
#endif/* mozilla_DebugOnly_h */
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.