31#ifndef FORTRAN_EVALUATE_OBJECT_SIZES_H_
32#define FORTRAN_EVALUATE_OBJECT_SIZES_H_
36#ifdef FLANG_OBJECT_SIZE_PROBE
37#error This header must not be included into the object-size-probe executable itself (in particular, integer-value-impl.h, real-value-impl.h, character-value-impl.h); it would cause a dependency cycle in incremental builds.
40#if __has_include(<flang/Evaluate/object-sizes-generated.h>)
42#include <flang/Evaluate/object-sizes-generated.h>
48namespace Fortran::evaluate::value::detail {
50inline constexpr std::size_t kIntegerObjectSize{20};
51inline constexpr std::size_t kIntegerObjectAlign{4};
53inline constexpr std::size_t kRealObjectSize{32};
54inline constexpr std::size_t kRealObjectAlign{16};
66#if ((defined(_ITERATOR_DEBUG_LEVEL) && _ITERATOR_DEBUG_LEVEL >= 2) || \
67 (!defined(_ITERATOR_DEBUG_LEVEL) && defined(_DEBUG)))
68inline constexpr std::size_t kCharacterObjectSize{48};
70inline constexpr std::size_t kCharacterObjectSize{40};
72#elif defined(_LIBCPP_VERSION)
73inline constexpr std::size_t kCharacterObjectSize{32};
74#elif defined(__GLIBCXX__) || defined(__GLIBCPP__)
75inline constexpr std::size_t kCharacterObjectSize{40};
77#error Unknown STL implementation
79inline constexpr std::size_t kCharacterObjectAlign{8};