77 lines
2.6 KiB
C++
77 lines
2.6 KiB
C++
/***
|
|
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
|
|
|
|
File: auROXTL.hpp
|
|
Date: 2022-2-2
|
|
Author: Reece
|
|
***/
|
|
#pragma once
|
|
|
|
#include <AuroraEnvironment.h> // **!
|
|
#include <AuroraTypes.hpp>
|
|
|
|
// BUG: https://developercommunity.visualstudio.com/t/lambdas-always-have-debug-information-in-release-m/1215001
|
|
// Jonathan Caves [MSFT] (-2 downvotes)
|
|
// Another name to add to the dumb twats of Microsoft's STL team who to blame for c++s terribleness
|
|
// Apparently somehow this one fuctional type overrides compiler flags, resulting in ".?AV<lambda_1>@?" RTTI strings populating RTTI-less binaries.
|
|
// Imagine all your work trying to mask typenames, stripping RTTI, optimizing with constexpr, abusing function name fuckery... just for lambda RTTIs to burst onto the scene after being told to explicitly fuck off.
|
|
// Average "Specialties: Compilers, computer language design, deep problem analysis" solver (totally not a typical mitwit old-cunt with decades of C++ "experience" fucking shit up in a notable company)
|
|
// t. RTTI-understander
|
|
//
|
|
// (hard to believe this is the same company that hosts Raymond Chen's blog posts in which they state to always investigate the most idiotic [bug/security] complaints because it'll be your ass on the line - even when faced with morons trying to memcpy executable stubs around)
|
|
#if defined(AURORA_COMPILER_MSVC)
|
|
#if !defined(_HAS_STATIC_RTTI)
|
|
#define _HAS_STATIC_RTTI_OLD 1
|
|
#define _HAS_STATIC_RTTI 0
|
|
#else
|
|
#if _HAS_STATIC_RTTI == 0
|
|
#define _HAS_STATIC_RTTI_OLD 0
|
|
#else
|
|
#define _HAS_STATIC_RTTI_OLD 1
|
|
#endif
|
|
|
|
#undef _HAS_STATIC_RTTI
|
|
#define _HAS_STATIC_RTTI 0
|
|
#endif
|
|
|
|
#define _HAS_STATIC_RTTI 0
|
|
|
|
#if defined(_CPPRTTI)
|
|
#define __CPPRTTI
|
|
#undef _CPPRTTI
|
|
#endif
|
|
|
|
#include <functional>
|
|
#undef _HAS_STATIC_RTTI
|
|
#define _HAS_STATIC_RTTI _HAS_STATIC_RTTI_OLD
|
|
|
|
#if _HAS_STATIC_RTTI == 1 && defined(__CPPRTTI)
|
|
#define _CPPRTTI
|
|
#endif
|
|
#endif
|
|
|
|
// Special include order fuckery ahead of all else for early ForEach under AuroraEnvironment.hpp (starting with **!)
|
|
#if defined(_AUHAS_AURORAENUM)
|
|
#include <AuroraForEach.hpp>
|
|
#include <AuroraEnum.hpp>
|
|
#endif
|
|
|
|
#if defined(_AUHAS_AURORAINTERFACES)
|
|
#include <AuroraForEach.hpp>
|
|
#include <AuroraInterfaces.hpp>
|
|
#endif
|
|
|
|
#if defined(_AUHAS_FMT)
|
|
#include <fmt/format.h>
|
|
#endif
|
|
|
|
#include "auROXTL/AU_Z.hpp"
|
|
#include "auROXTL/AU_MACROS.hpp"
|
|
#include "auROXTLTypes.hpp"
|
|
|
|
#if defined(_AUHAS_AURORAENUM)
|
|
#define _ALLOW_AURORA_ENUM_AUENVHPP
|
|
#include <AuroraCommon.hpp>
|
|
#endif
|
|
|
|
#include "auROXTLUtils.hpp" |