#pragma once // // This file is distributed under the MIT License. See LICENSE.md for details. // #include "revng/ADT/ConstexprString.h" template using remove_constptr = std::remove_const_t>; template inline constexpr bool anyOf() { return (std::is_same_v || ...); } template inline constexpr bool isInteger() { return anyOf(); } template concept IntegerType = isInteger(); template inline constexpr bool isList() { return std::is_pointer_v && (isInteger>() || std::is_pointer_v>); } template using max_int = std::conditional_t, int64_t, uint64_t>; template inline constexpr bool isDestroy() { return std::string_view(Name).ends_with("_destroy"); } inline constexpr auto PointerPrefix = "ptr_"; inline constexpr auto NullPointer = "ptr_0x0";