// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

/**
 * @file
 * @brief Run-time type info enable or disable.
 *
 * @details When RTTI is enabled, defines a macro `AZ_CORE_RTTI`. When
 * the macro is not defined, RTTI is disabled.
 *
 * @details Each library has this header file. These headers are being configured by
 * `az_rtti_setup()` CMake macro. CMake install will patch this file during installation, depending
 * on the build flags.
 */

#pragma once

/**
 * @def AZ_CORE_RTTI
 * @brief A macro indicating whether the code is built with RTTI or not.
 *
 * @details `AZ_RTTI` could be defined while building the Azure SDK with CMake, however, after
 * the build is completed, that information is not preserved for the code that consumes Azure SDK
 * headers, unless the code that consumes the SDK is the part of the same build process. To address
 * this issue, CMake install would patch the header it places in the installation directory, so that
 * condition:
 * `#if defined(AZ_RTTI) || (0)`
 * becomes, effectively,
 * `#if defined(AZ_RTTI) || (0 + 1)`
 * when the library was built with RTTI support, and will make no changes to the
 * condition when it was not.
 */

#if defined(AZ_RTTI) || (0 /**/ + 1 /**/)
#define AZ_CORE_RTTI
#endif
