blob: 9ae8c84921f9b89c5f5c576ffedabd512f7b467c [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PKI_CHECK_H_
#define PKI_CHECK_H_
// This header defines the CHECK, DCHECK, macros, inherited from chrome.
// This file is not used in chrome, so check here to make sure we are
// only compiling inside boringssl.
#if !defined(_BORINGSSL_LIBPKI_)
#error "_BORINGSSL_LIBPKI_ is not defined when compiling BoringSSL libpki"
#endif
#include <cassert>
// This is not used in this include file, but is here temporarily to avoid
// an intrusive change in chrome's files until we are fully extracted.
// TODO(bbe) move this include to the relevant .cc files once we are no
// longer using chrome as the canonical source.
#include <openssl/base.h>
// In chrome DCHECK is used like assert() but often erroneously. to be
// safe we make DCHECK the same as CHECK, and if we truly wish to have
// this be an assert, we convert to assert() as in the rest of boringssl.
// TODO(bbe) scan all DCHECK's in here once we are no longer using chrome
// as the canonical source and convert to CHECK unless certain they
// can be an assert().
#define DCHECK CHECK
// CHECK aborts if a condition is not true.
#define CHECK(A) \
do { \
if (!(A)) \
abort(); \
} while (0);
#define DCHECK_EQ CHECK_EQ
#define DCHECK_NE CHECK_NE
#define DCHECK_LE CHECK_LE
#define DCHECK_LT CHECK_LT
#define DCHECK_GE CHECK_GE
#define DCHECK_GT CHECK_GT
#define CHECK_EQ(val1, val2) CHECK((val1) == (val2))
#define CHECK_NE(val1, val2) CHECK((val1) != (val2))
#define CHECK_LE(val1, val2) CHECK((val1) <= (val2))
#define CHECK_LT(val1, val2) CHECK((val1) < (val2))
#define CHECK_GE(val1, val2) CHECK((val1) >= (val2))
#define CHECK_GT(val1, val2) CHECK((val1) > (val2))
#endif // PKI_CHECK_H_