Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/mfbt/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 1 kB image not shown  

Quelle  StaticAnalysisFunctions.h   Sprache: C

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


#ifndef mozilla_StaticAnalysisFunctions_h
#define mozilla_StaticAnalysisFunctions_h

#ifndef __cplusplus
#  ifndef bool
#    include <stdbool.h>
#  endif
#  define MOZ_CONSTEXPR
#else  // __cplusplus
#  include "mozilla/Attributes.h"
#  define MOZ_CONSTEXPR constexpr
#endif
/*
 * Functions that are used as markers in Gecko code for static analysis. Their
 * purpose is to have different AST nodes generated during compile time and to
 * match them based on different checkers implemented in build/clang-plugin
 */


#ifdef MOZ_CLANG_PLUGIN

#  ifdef __cplusplus
/**
 * MOZ_KnownLive - used to opt an argument out of the CanRunScript checker so
 * that we don't check it if is a strong ref.
 *
 * Example:
 * canRunScript(MOZ_KnownLive(rawPointer));
 */

template <typename T>
static MOZ_ALWAYS_INLINE T* MOZ_KnownLive(T* ptr) {
  return ptr;
}

/**
 * Ditto, but for references.
 */

template <typename T>
static MOZ_ALWAYS_INLINE T& MOZ_KnownLive(T& ref) {
  return ref;
}

#  endif

/**
 * MOZ_AssertAssignmentTest - used in MOZ_ASSERT in order to test the possible
 * presence of assignment instead of logical comparisons.
 *
 * Example:
 * MOZ_ASSERT(retVal = true);
 */

static MOZ_ALWAYS_INLINE MOZ_CONSTEXPR bool MOZ_AssertAssignmentTest(
    bool exprResult) {
  return exprResult;
}

#  define MOZ_CHECK_ASSERT_ASSIGNMENT(expr) MOZ_AssertAssignmentTest(!!(expr))

#else

#  define MOZ_CHECK_ASSERT_ASSIGNMENT(expr) (!!(expr))
#  define MOZ_KnownLive(expr) (expr)

#endif /* MOZ_CLANG_PLUGIN */
#endif /* StaticAnalysisFunctions_h */

100%


¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.