diff --git a/Include/auROXTL/AU_MACROS.hpp b/Include/auROXTL/AU_MACROS.hpp index baad27a..a4907bb 100644 --- a/Include/auROXTL/AU_MACROS.hpp +++ b/Include/auROXTL/AU_MACROS.hpp @@ -205,48 +205,73 @@ #define AU_EOB_UNLIKELY #endif +// AU_INLINE - inline a function, not C++ linkage. AU_INLINE is a C inline / forceinline / always_inline +// auline - "inline" "forceinline" etc tokens are ambiguous in the world of C/C++ headers. auline is a C inline / forceinline / always_inline +// AU_INLINE_XX - C++ inline linkage after XX revision +// AU_CONSTEXPR_XX - C++ constexpr after XX revision +// AU_INLINE_OR_STATIC_XX - C++ inline linkage after XX revision, otherwise use static. Intended for pre-C++17 inlines w/ duplicate symbols. +// AU_OPTIMIZED - Inline (forceinline / always_inline) into caller function or emit noninternalized symbol in the object of the translation unit. In the latter case, we should get some simple leaf function emitted into .code memory nearby, and perhaps the optimizer pass will take care it. +// +// yay, more confusion over what "inline" actually means + +#define AU_OPTIMIZED static auline +// ps: +// we wont add __attribute__((optimize(...)) macros +// most compilers treat them as file level options; no per function attributes override this. +// AU_OPTIMIZED doesn't mean -Ourmom optimization. see above. + #if defined(AU_LANG_CPP_14_) - #define AU_CONSTEXPR_14 AUROXTL_CONSTEXPR - #define AU_INLINE_14 inline + #define AU_CONSTEXPR_14 AUROXTL_CONSTEXPR + #define AU_INLINE_14 inline #define AU_INLINE_OR_STATIC_14 inline + #define AU_INLINE_CONSTEXPR_14 AU_OPTIMIZED AU_CONSTEXPR_14 + #define AU_STATIC_CONSTEXPR_14 static AU_CONSTEXPR_14 #else #define AU_CONSTEXPR_14 #define AU_INLINE_14 #define AU_INLINE_OR_STATIC_14 static + #define AU_INLINE_CONSTEXPR_14 AU_OPTIMIZED + #define AU_STATIC_CONSTEXPR_14 static #endif #if defined(AU_LANG_CPP_17_) - #define AU_CONSTEXPR_17 AUROXTL_CONSTEXPR - #define AU_INLINE_17 inline + #define AU_CONSTEXPR_17 AUROXTL_CONSTEXPR + #define AU_INLINE_CONSTEXPR_17 AU_OPTIMIZED AU_CONSTEXPR_17 + #define AU_STATIC_CONSTEXPR_17 static AU_CONSTEXPR_17 + #define AU_INLINE_17 inline #define AU_INLINE_OR_STATIC_17 inline #undef AU_CONSTEXPR_14 - #define AU_CONSTEXPR_14 AUROXTL_CONSTEXPR + #define AU_CONSTEXPR_14 AUROXTL_CONSTEXPR #undef AU_INLINE_14 - #define AU_INLINE_14 inline + #define AU_INLINE_14 inline #undef AU_INLINE_OR_STATIC_14 #define AU_INLINE_OR_STATIC_14 inline #else #define AU_CONSTEXPR_17 #define AU_INLINE_17 #define AU_INLINE_OR_STATIC_17 static + #define AU_INLINE_CONSTEXPR_17 AU_OPTIMIZED + #define AU_STATIC_CONSTEXPR_17 static #endif #if defined(AU_LANG_CPP_20_) - #define AU_CONSTEXPR_20 AUROXTL_CONSTEXPR - #define AU_INLINE_20 inline - #define AU_INLINE_OR_STATIC_20 inline + #define AU_CONSTEXPR_20 AUROXTL_CONSTEXPR + #define AU_INLINE_20 inline #undef AU_CONSTEXPR_17 - #define AU_CONSTEXPR_17 AUROXTL_CONSTEXPR + #define AU_CONSTEXPR_17 AUROXTL_CONSTEXPR #undef AU_INLINE_17 - #define AU_INLINE_17 inline + #define AU_INLINE_17 inline #undef AU_INLINE_OR_STATIC_17 #define AU_INLINE_OR_STATIC_17 inline #else #define AU_CONSTEXPR_20 #define AU_INLINE_20 - #define AU_INLINE_OR_STATIC_20 static #endif +#define AU_INLINE_OR_STATIC_20 AU_INLINE_OR_STATIC_17 +#define AU_INLINE_CONSTEXPR_20 AU_INLINE_CONSTEXPR_17 +#define AU_STATIC_CONSTEXPR_20 AU_STATIC_CONSTEXPR_17 + #define AUROXTL_CONSTEXPR_14 AU_CONSTEXPR_14 #define AUROXTL_CONSTEXPR_17 AU_CONSTEXPR_17 #define AUROXTL_CONSTEXPR_20 AU_CONSTEXPR_20 diff --git a/Include/auROXTL/MemoryModel/auSetAllocator.ipp b/Include/auROXTL/MemoryModel/auSetAllocator.ipp index 861dc03..f02282c 100644 --- a/Include/auROXTL/MemoryModel/auSetAllocator.ipp +++ b/Include/auROXTL/MemoryModel/auSetAllocator.ipp @@ -12,127 +12,127 @@ namespace __audetail template struct AuHasSetAllocatorRawVoid { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast(&C::SetAllocator))); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast(&C::SetAllocator))); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template struct AuHasSetAllocatorRawBool { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast(&C::SetAllocator))); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast(&C::SetAllocator))); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template struct AuHasSetHeapRawVoid { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast(&C::SetHeap))); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast(&C::SetHeap))); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template struct AuHasSetHeapRawBool { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast(&C::SetHeap))); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast(&C::SetHeap))); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template struct AuHasSetAllocatorSVoid { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast)>(&C::SetAllocator))); - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast &)>(&C::SetAllocator))); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast)>(&C::SetAllocator))); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast &)>(&C::SetAllocator))); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template struct AuHasSetAllocatorSBool { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast)>(&C::SetAllocator))); - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast &)>(&C::SetAllocator))); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast)>(&C::SetAllocator))); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast &)>(&C::SetAllocator))); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template struct AuHasSetHeapSVoid { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast)>(&C::SetHeap))); - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast &)>(&C::SetHeap))); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast)>(&C::SetHeap))); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast &)>(&C::SetHeap))); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template struct AuHasSetHeapSBool { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast)>(&C::SetHeap))); - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast &)>(&C::SetHeap))); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast)>(&C::SetHeap))); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast &)>(&C::SetHeap))); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template struct AuHasSetHeapSharedSVoid { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast)>(&C::SetHeapShared))); - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast &)>(&C::SetHeapShared))); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast)>(&C::SetHeapShared))); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast &)>(&C::SetHeapShared))); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template struct AuHasSetHeapSharedSBool { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast)>(&C::SetHeapShared))); - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(static_cast &)>(&C::SetHeapShared))); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast)>(&C::SetHeapShared))); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(static_cast &)>(&C::SetHeapShared))); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template struct AuHasAllocatorType { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(typename C::allocator_type *); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(typename C::allocator_type *); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template - static AUROXTL_CONSTEXPR_17 bool AuHasSetAllocatorRawVoid_v = AuHasSetAllocatorRawVoid::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasSetAllocatorRawVoid_v = AuHasSetAllocatorRawVoid::type::value; template - static AUROXTL_CONSTEXPR_17 bool AuHasSetAllocatorRawBool_v = AuHasSetAllocatorRawBool::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasSetAllocatorRawBool_v = AuHasSetAllocatorRawBool::type::value; template - static AUROXTL_CONSTEXPR_17 bool AuHasSetAllocatorSharedVoid_v = AuHasSetAllocatorSVoid::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasSetAllocatorSharedVoid_v = AuHasSetAllocatorSVoid::type::value; template - static AUROXTL_CONSTEXPR_17 bool AuHasSetAllocatorSharedBool_v = AuHasSetAllocatorSBool::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasSetAllocatorSharedBool_v = AuHasSetAllocatorSBool::type::value; template - static AUROXTL_CONSTEXPR_17 bool AuHasSetHeapRawVoid_v = AuHasSetHeapRawVoid::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasSetHeapRawVoid_v = AuHasSetHeapRawVoid::type::value; template - static AUROXTL_CONSTEXPR_17 bool AuHasSetHeapRawBool_v = AuHasSetHeapRawBool::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasSetHeapRawBool_v = AuHasSetHeapRawBool::type::value; template - static AUROXTL_CONSTEXPR_17 bool AuHasSetHeapSharedVoid_v = AuHasSetHeapSVoid::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasSetHeapSharedVoid_v = AuHasSetHeapSVoid::type::value; template - static AUROXTL_CONSTEXPR_17 bool AuHasSetHeapSharedBool_v = AuHasSetHeapSBool::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasSetHeapSharedBool_v = AuHasSetHeapSBool::type::value; template - static AUROXTL_CONSTEXPR_17 bool AuHasSetHeapSharedSharedVoid_v = AuHasSetHeapSharedSVoid::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasSetHeapSharedSharedVoid_v = AuHasSetHeapSharedSVoid::type::value; template - static AUROXTL_CONSTEXPR_17 bool AuHasSetHeapSharedSharedBool_v = AuHasSetHeapSharedSBool::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasSetHeapSharedSharedBool_v = AuHasSetHeapSharedSBool::type::value; template - static AUROXTL_CONSTEXPR_17 bool AuHasAllocatorType_v = AuHasAllocatorType::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasAllocatorType_v = AuHasAllocatorType::type::value; } template diff --git a/Include/auROXTL/Objects/SafeDestroy.hpp b/Include/auROXTL/Objects/SafeDestroy.hpp index 63abda5..66b0cf0 100644 --- a/Include/auROXTL/Objects/SafeDestroy.hpp +++ b/Include/auROXTL/Objects/SafeDestroy.hpp @@ -14,35 +14,35 @@ namespace AuUtil template struct AuHasDestroy { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(&C::DestroyPrivate)); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(&C::DestroyPrivate)); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template struct AuHasDeconstruct { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(&C::DeconstructPrivate)); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(&C::DeconstructPrivate)); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template struct AuHasPreDeconstruct { - template static AUROXTL_CONSTEXPR_17 AuTrueType Test(decltype(&C::PreDeconstructPrivate)); - template static AUROXTL_CONSTEXPR_17 AuFalseType Test(...); + template AU_STATIC_CONSTEXPR_17 AuTrueType Test(decltype(&C::PreDeconstructPrivate)); + template AU_STATIC_CONSTEXPR_17 AuFalseType Test(...); using type = decltype(Test(0)); }; template - static AUROXTL_CONSTEXPR_17 bool AuHasDestroy_v = AuHasDestroy::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasDestroy_v = AuHasDestroy::type::value; template - static AUROXTL_CONSTEXPR_17 bool AuHasDesconstruct_v = AuHasDeconstruct::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasDesconstruct_v = AuHasDeconstruct::type::value; template - static AUROXTL_CONSTEXPR_17 bool AuHasPreDesconstruct_v = AuHasPreDeconstruct::type::value; + AU_STATIC_CONSTEXPR_17 bool AuHasPreDesconstruct_v = AuHasPreDeconstruct::type::value; } #if !defined(__ROXTL_FORCE_SAFE_DESTROY_FORCE_CLEAR) diff --git a/Include/auROXTL/Strings/auCodepointsUTF8.hpp b/Include/auROXTL/Strings/auCodepointsUTF8.hpp index 742990a..14c4241 100644 --- a/Include/auROXTL/Strings/auCodepointsUTF8.hpp +++ b/Include/auROXTL/Strings/auCodepointsUTF8.hpp @@ -21,7 +21,7 @@ AuCodepointsContains, AuCodepointsReplaceAll, AuCodepointsSplitString (views), AuCodepointsFindPreviousValidByteOffsetFromOffset, AuCodepointsFindPreviousValidByteOffsetFromByteOffset - AuCodepointsIsEqualIgnoreCase, AuCodepointsStartsWithEqualIgnoreCase, AuCodepointsEndsWithEqualIgnoreCase, + AuCodepointsIsEqualIgnoreCase, AuCodepointsStartsWithIgnoreCase, AuCodepointsEndsWithIgnoreCase, AuCodepointsReverseIterate, AuCodepointsReverseIterateSubStrPrefixView, AuCodepointsReverseIterateSubStrSuffixView Warning: By codepoints, we mean UTF32. @@ -33,7 +33,7 @@ #pragma once /// Try decode UTF32 codepoint from UTF8 sequence -static AUROXTL_CONSTEXPR_17 AuOptional AuCodepointsDecodeOne(const AuROString &in); +AU_STATIC_CONSTEXPR_17 AuOptional AuCodepointsDecodeOne(const AuROString &in); /// Try decode all UTF32 codepoints from UTF8 sequence static AuList AuCodepointsDecode(const AuROString &in); @@ -44,17 +44,17 @@ static void AuCodepointsEncodeInto( /// Similar to AuCodepointsIsEqualIgnoreCase, translates all ASCII English characters to their AuToLower counterparts. /// No localization complexities are, will, or should be involved. -static auline AuString AuCodepointsToLower(const AuROString &in); +AU_OPTIMIZED AuString AuCodepointsToLower(const AuROString &in); /// Similar to AuCodepointsIsEqualIgnoreCase, translates all ASCII English characters to their AuToUpper counterparts. /// No localization complexities are, will, or should be involved. -static auline AuString AuCodepointsToUpper(const AuROString &in); +AU_OPTIMIZED AuString AuCodepointsToUpper(const AuROString &in); /// Counts the UTF8/UTF32 codepoints in a byte sequence -static auline AUROXTL_CONSTEXPR_17 CodepointOffset_t AuCodepointsCount(const AuROString &in); +AU_INLINE_CONSTEXPR_17 CodepointOffset_t AuCodepointsCount(const AuROString &in); /// Counts the bytes required to iterate over a UTF8 encoded codepoint -static auline AUROXTL_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsNextLength(const AuROString &in); +AU_INLINE_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsNextLength(const AuROString &in); /// Iterates over a UTF8 sequence using OP. /// If op returns void, AuCodepointsForEach will continue until EOS or invalid squence. @@ -72,25 +72,25 @@ template AuString AuCodepointsTransformASCIIOp(T op, const AuROString &in); /// Performs a memcmp on unknown chunks, performs a memcmp for each UTF8 sequence of bytes, and performs a AuToLower(a) != AuToLower(b) operation on any ASCII English characters. -/// Also see: AuCodepointsStartsWithEqualIgnoreCase, AuCodepointsEndsWithEqualIgnoreCase +/// Also see: AuCodepointsStartsWithIgnoreCase, AuCodepointsEndsWithIgnoreCase static bool AuCodepointsIsEqualIgnoreCase(const AuROString &inA, const AuROString &inB); /// Performs a memcmp on unknown chunks, performs a memcmp for each UTF8 sequence of bytes, and performs a AuToLower(a) != AuToLower(b) operation on any ASCII English characters. -/// Also see: AuCodepointsIsEqualIgnoreCase, AuCodepointsEndsWithEqualIgnoreCase -static bool AuCodepointsStartsWithEqualIgnoreCase(const AuROString &inA, - const AuROString &inB); +/// Also see: AuCodepointsIsEqualIgnoreCase, AuCodepointsEndsWithIgnoreCase +static bool AuCodepointsStartsWithIgnoreCase(const AuROString &inA, + const AuROString &inB); -/// Also see: AuCodepointsIsEqualIgnoreCase, AuCodepointsStartsWithEqualIgnoreCase -static bool AuCodepointsEndsWithEqualIgnoreCase(const AuROString &inA, - const AuROString &inB); +/// Also see: AuCodepointsIsEqualIgnoreCase, AuCodepointsStartsWithIgnoreCase +static bool AuCodepointsEndsWithIgnoreCase(const AuROString &inA, + const AuROString &inB); /// Returns the byte offset of the codepoint index or AuROString::npos -static auline AUROXTL_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsGetByteOffset(const AuROString &in, +AU_INLINE_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsGetByteOffset(const AuROString &in, CodepointOffset_t uCodepointIndex); /// Returns the length of the codepoint index in bytes or AuROString::npos -static auline AUROXTL_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsGetByteLength(const AuROString &in, +AU_INLINE_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsGetByteLength(const AuROString &in, CodepointOffset_t uCodepointIndex); /// Finds subpattern in value at codepoint offset, returning bool @@ -109,21 +109,21 @@ static CodepointByteOffset_t AuCodepointsFindByteOff /// AuCodepointsFindByteOffset same as above (AuCodepointsFindByteOffset), slightly less dumb, but still too bloated. /// The main difference is that uStartPosition is trusted to be a valid start offset. /// Worst thing about this is, assuming a valid string view, we don't need to worry about testing the validity of the previous bytes ( AuCodepointsDecodeOne(const AuROString &in) +AU_STATIC_CONSTEXPR_17 AuOptional AuCodepointsDecodeOne(const AuROString &in) { if (in.empty()) { @@ -227,20 +227,20 @@ static void AuCodepointsEncodeInto(AuUInt32 uCodepoin /// Similar to AuCodepointsIsEqualIgnoreCase, translates all ASCII English characters to their AuToLower counterparts. /// No localization complexities are, will, or should be involved. -static auline AuString AuCodepointsToLower(const AuROString &in) +AU_OPTIMIZED AuString AuCodepointsToLower(const AuROString &in) { return AuCodepointsTransformASCIIOp(((char(*)(char)) & AuToLower), in); } /// Similar to AuCodepointsIsEqualIgnoreCase, translates all ASCII English characters to their AuToUpper counterparts. /// No localization complexities are, will, or should be involved. -static auline AuString AuCodepointsToUpper(const AuROString &in) +AU_OPTIMIZED AuString AuCodepointsToUpper(const AuROString &in) { return AuCodepointsTransformASCIIOp(((char(*)(char)) & AuToUpper), in); } /// Counts the UTF8/UTF32 codepoints in a byte sequence -static auline AUROXTL_CONSTEXPR_17 CodepointOffset_t AuCodepointsCount(const AuROString &in) +AU_INLINE_CONSTEXPR_17 CodepointOffset_t AuCodepointsCount(const AuROString &in) { CodepointOffset_t uCounter {}; auto uLength = in.length(); @@ -323,7 +323,7 @@ static auline AUROXTL_CONSTEXPR_17 CodepointOffset_t AuCodepointsCount(const } /// Counts the bytes required to iterate over a UTF8 encoded codepoint -static auline AUROXTL_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsNextLength(const AuROString &in) +AU_INLINE_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsNextLength(const AuROString &in) { if (in.length()) { @@ -640,7 +640,7 @@ AuString AuCodepointsTransformASCIIOp(T op, const } /// Performs a memcmp on unknown chunks, performs a memcmp for each UTF8 sequence of bytes, and performs a AuToLower(a) != AuToLower(b) operation on any ASCII English characters. -/// Also see: AuCodepointsStartsWithEqualIgnoreCase, AuCodepointsEndsWithEqualIgnoreCase +/// Also see: AuCodepointsStartsWithIgnoreCase, AuCodepointsEndsWithIgnoreCase static bool AuCodepointsIsEqualIgnoreCase(const AuROString &inA, const AuROString &inB) { @@ -709,9 +709,9 @@ static bool AuCodepointsIsEqualIgnoreCase(const AuROS } /// Performs a memcmp on unknown chunks, performs a memcmp for each UTF8 sequence of bytes, and performs a AuToLower(a) != AuToLower(b) operation on any ASCII English characters. -/// Also see: AuCodepointsIsEqualIgnoreCase, AuCodepointsEndsWithEqualIgnoreCase -static bool AuCodepointsStartsWithEqualIgnoreCase(const AuROString &inA, - const AuROString &inB) +/// Also see: AuCodepointsIsEqualIgnoreCase, AuCodepointsEndsWithIgnoreCase +static bool AuCodepointsStartsWithIgnoreCase(const AuROString &inA, + const AuROString &inB) { if (inA.size() < inB.size()) { @@ -777,8 +777,8 @@ static bool AuCodepointsStartsWithEqualIgnoreCase(con return true; } -/// Also see: AuCodepointsIsEqualIgnoreCase, AuCodepointsStartsWithEqualIgnoreCase -static bool AuCodepointsEndsWithEqualIgnoreCase(const AuROString &inA, +/// Also see: AuCodepointsIsEqualIgnoreCase, AuCodepointsStartsWithIgnoreCase +static bool AuCodepointsEndsWithIgnoreCase(const AuROString &inA, const AuROString &inB) { if (inA.size() < inB.size()) @@ -841,7 +841,7 @@ static bool AuCodepointsEndsWithEqualIgnoreCase(const } /// Returns the byte offset of the codepoint index or AuROString::npos -static auline AUROXTL_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsGetByteOffset(const AuROString &in, +AU_INLINE_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsGetByteOffset(const AuROString &in, CodepointOffset_t uCodepointIndex) { AuUInt uCounter {}; @@ -931,7 +931,7 @@ static auline AUROXTL_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsGetByteOffs } /// Returns the length of the codepoint index in bytes or AuROString::npos -static auline AUROXTL_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsGetByteLength(const AuROString &in, +AU_INLINE_CONSTEXPR_17 CodepointByteOffset_t AuCodepointsGetByteLength(const AuROString &in, CodepointOffset_t uCodepointIndex) { AuUInt uCounter {}; @@ -1131,7 +1131,7 @@ static CodepointByteOffset_t AuCodepointsFindByteOffset(const AuROStri /// AuCodepointsFindByteOffset same as above (AuCodepointsFindByteOffset), slightly less dumb, but still too bloated. /// The main difference is that uStartPosition is trusted to be a valid start offset. /// Worst thing about this is, assuming a valid string view, we don't need to worry about testing the validity of the previous bytes (cbegin()); } - inline AUROXTL_CONSTEXPR_17 AuROString substr(size_type pos1, size_type count1 = npos) const noexcept + inline AUROXTL_CONSTEXPR_17 AuROString substr(size_type pos1, + size_type count1 = npos) const noexcept { if (pos1 >= this->uLength) { @@ -454,7 +455,8 @@ struct AuROString #endif - inline AUROXTL_CONSTEXPR_17 size_type find_first_of(const AuROString right, const size_type offset = 0) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type find_first_of(const AuROString right, + const size_type offset = 0) const noexcept { if (right.size() == 0) { @@ -464,62 +466,77 @@ struct AuROString return this->find(right, offset); } - inline AUROXTL_CONSTEXPR_17 size_type find_first_of(const char c, const size_type offset = 0) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type find_first_of(const char c, + const size_type offset = 0) const noexcept { return this->find_first_of(AuROString(&c, 1), offset); } - inline AUROXTL_CONSTEXPR_17 size_type find_first_of(const char *const s, const size_type offset, const size_type count) const + inline AUROXTL_CONSTEXPR_17 size_type find_first_of(const char *const s, + const size_type offset, + const size_type count) const { return this->find_first_of(AuROString(s, count), offset); } - inline AUROXTL_CONSTEXPR_17 size_type find_first_of(const char *const s, const size_type offset = 0) const + inline AUROXTL_CONSTEXPR_17 size_type find_first_of(const char *const s, + const size_type offset = 0) const { return this->find_first_of(AuROString(s), offset); } - inline AUROXTL_CONSTEXPR_17 size_type find_last_of(const char c, const size_type offset = npos) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type find_last_of(const char c, + const size_type offset = npos) const noexcept { return this->find_last_of(AuROString(&c, 1), offset); } - inline AUROXTL_CONSTEXPR_17 size_type find_last_of(const char *const s, const size_type offset, const size_type count) const + inline AUROXTL_CONSTEXPR_17 size_type find_last_of(const char *const s, + const size_type offset, + const size_type count) const { return this->find_last_of(AuROString(s, count), offset); } - inline AUROXTL_CONSTEXPR_17 size_type find_last_of(const char *const s, const size_type offset = npos) const + inline AUROXTL_CONSTEXPR_17 size_type find_last_of(const char *const s, + const size_type offset = npos) const { return this->find_last_of(AuROString(s), offset); } - inline AUROXTL_CONSTEXPR_17 size_type find_first_not_of(const char c, const size_type offset = 0) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type find_first_not_of(const char c, + const size_type offset = 0) const noexcept { return this->find_first_not_of(AuROString(&c, 1), offset); } - inline AUROXTL_CONSTEXPR_17 size_type find_first_not_of(const char *const s, const size_type offset, const size_type count) const + inline AUROXTL_CONSTEXPR_17 size_type find_first_not_of(const char *const s, + const size_type offset, + const size_type count) const { return this->find_first_not_of(AuROString(s, count), offset); } - inline AUROXTL_CONSTEXPR_17 size_type find_first_not_of(const char *const s, const size_type offset = 0) const + inline AUROXTL_CONSTEXPR_17 size_type find_first_not_of(const char *const s, + const size_type offset = 0) const { return this->find_first_not_of(AuROString(s), offset); } - inline AUROXTL_CONSTEXPR_17 size_type find_last_not_of(const char c, const size_type offset = npos) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type find_last_not_of(const char c, + const size_type offset = npos) const noexcept { return this->find_last_not_of(AuROString(&c, 1), offset); } - inline AUROXTL_CONSTEXPR_17 size_type find_last_not_of(const char *const s, const size_type offset, const size_type count) const + inline AUROXTL_CONSTEXPR_17 size_type find_last_not_of(const char *const s, + const size_type offset, const size_type count) const { return this->find_last_not_of(AuROString(s, count), offset); } - inline AUROXTL_CONSTEXPR_17 size_type find_last_not_of(const char *const s, const size_type offset = npos) const + inline AUROXTL_CONSTEXPR_17 size_type find_last_not_of(const char *const s, + const size_type offset = npos) const { return this->find_last_not_of(AuROString(s), offset); } @@ -571,12 +588,14 @@ struct AuROString return this->crend(); } - inline AUROXTL_CONSTEXPR_17 AuROString Substr(size_type pos1, size_type count1 = npos) const noexcept + inline AUROXTL_CONSTEXPR_17 AuROString Substr(size_type pos1, + size_type count1 = npos) const noexcept { return this->substr(pos1, count1); } - inline AUROXTL_CONSTEXPR_17 AuROString SubStr(size_type pos1, size_type count1 = npos) const noexcept + inline AUROXTL_CONSTEXPR_17 AuROString SubStr(size_type pos1, + size_type count1 = npos) const noexcept { return this->substr(pos1, count1); } @@ -600,7 +619,7 @@ struct AuROString } inline AUROXTL_CONSTEXPR_17 int Compare(size_type pos1, size_type count1, AuROString v, - size_type pos2, size_type count2) const + size_type pos2, size_type count2) const { return this->compare(pos1, count1, v, pos2, count2); } @@ -617,7 +636,7 @@ struct AuROString } inline AUROXTL_CONSTEXPR_17 int Compare(size_type pos1, size_type count1, - const char *s, size_type count2) const + const char *s, size_type count2) const { return this->compare(pos1, count1, s, count2); } @@ -747,82 +766,101 @@ struct AuROString return this->rfind(s, pos); } - inline AUROXTL_CONSTEXPR_17 size_type FindFirstNotOf(const AuROString right, const size_type offset = 0) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type FindFirstNotOf(const AuROString right, + const size_type offset = 0) const noexcept { return this->find_first_not_of(right, offset); } - inline AUROXTL_CONSTEXPR_17 size_type FindLastNotOf(const AuROString right, const size_type offset = npos) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type FindLastNotOf(const AuROString right, + const size_type offset = npos) const noexcept { return this->find_last_not_of(right, offset); } - inline AUROXTL_CONSTEXPR_17 size_type FindLastOf(const AuROString right, const size_type offset = npos) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type FindLastOf(const AuROString right, + const size_type offset = npos) const noexcept { return this->find_last_of(right, offset); } - inline AUROXTL_CONSTEXPR_17 size_type FindFirstOf(const AuROString right, const size_type offset = 0) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type FindFirstOf(const AuROString right, + const size_type offset = 0) const noexcept { return this->find_first_of(right, offset); } - inline AUROXTL_CONSTEXPR_17 size_type Find_first_of(const char c, const size_type offset = 0) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type Find_first_of(const char c, + const size_type offset = 0) const noexcept { return this->find_first_of(c, offset); } - inline AUROXTL_CONSTEXPR_17 size_type FindFirstOf(const char *const s, const size_type offset, const size_type count) const + inline AUROXTL_CONSTEXPR_17 size_type FindFirstOf(const char *const s, + const size_type offset, + const size_type count) const { return this->find_first_of(s, offset, count); } - inline AUROXTL_CONSTEXPR_17 size_type FindFirstOf(const char *const s, const size_type offset = 0) const + inline AUROXTL_CONSTEXPR_17 size_type FindFirstOf(const char *const s, + const size_type offset = 0) const { return this->find_first_of(s, offset); } - inline AUROXTL_CONSTEXPR_17 size_type FindLastOf(const char c, const size_type offset = npos) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type FindLastOf(const char c, + const size_type offset = npos) const noexcept { return this->find_last_of(c, offset); } - inline AUROXTL_CONSTEXPR_17 size_type FindLastOf(const char *const s, const size_type offset, const size_type count) const + inline AUROXTL_CONSTEXPR_17 size_type FindLastOf(const char *const s, + const size_type offset, + const size_type count) const { return this->find_last_of(s, offset, count); } - inline AUROXTL_CONSTEXPR_17 size_type FindLastOf(const char *const s, const size_type offset = npos) const + inline AUROXTL_CONSTEXPR_17 size_type FindLastOf(const char *const s, + const size_type offset = npos) const { return this->find_last_of(s, offset); } - inline AUROXTL_CONSTEXPR_17 size_type FindFirstNotOf(const char c, const size_type offset = 0) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type FindFirstNotOf(const char c, + const size_type offset = 0) const noexcept { return this->find_first_not_of(c, offset); } - inline AUROXTL_CONSTEXPR_17 size_type FindFirstNotOf(const char *const s, const size_type offset, const size_type count) const + inline AUROXTL_CONSTEXPR_17 size_type FindFirstNotOf(const char *const s, + const size_type offset, + const size_type count) const { return this->find_first_not_of(s, offset, count); } - inline AUROXTL_CONSTEXPR_17 size_type FindFirstNotOf(const char *const s, const size_type offset = 0) const + inline AUROXTL_CONSTEXPR_17 size_type FindFirstNotOf(const char *const s, + const size_type offset = 0) const { return this->find_first_not_of(s, offset); } - inline AUROXTL_CONSTEXPR_17 size_type FindLastNotOf(const char c, const size_type offset = npos) const noexcept + inline AUROXTL_CONSTEXPR_17 size_type FindLastNotOf(const char c, + const size_type offset = npos) const noexcept { return this->find_last_not_of(c, offset); } - inline AUROXTL_CONSTEXPR_17 size_type FindLastNotOf(const char *const s, const size_type offset, const size_type count) const + inline AUROXTL_CONSTEXPR_17 size_type FindLastNotOf(const char *const s, + const size_type offset, const size_type count) const { return this->find_last_not_of(s, offset, count); } - inline AUROXTL_CONSTEXPR_17 size_type FindLastNotOf(const char *const s, const size_type offset = npos) const + inline AUROXTL_CONSTEXPR_17 size_type FindLastNotOf(const char *const s, + const size_type offset = npos) const { return this->find_last_not_of(s, offset); } diff --git a/Include/auROXTL/Strings/auStringUtils.hpp b/Include/auROXTL/Strings/auStringUtils.hpp index 5391dba..b309a9b 100644 --- a/Include/auROXTL/Strings/auStringUtils.hpp +++ b/Include/auROXTL/Strings/auStringUtils.hpp @@ -20,27 +20,27 @@ static AuString AuCodepointsToLower(const AuROString &in); /// No localization complexities are, will, or should be involved. static AuString AuCodepointsToUpper(const AuROString &in); -static auline AU_CONSTEXPR_17 bool AuIsAlpha(char c) +AU_INLINE_CONSTEXPR_17 bool AuIsAlpha(char c) { return (c) && (((unsigned char)c | 0x20) - 'a' < 26); } -static auline AU_CONSTEXPR_17 char AuToLower(char c) +AU_INLINE_CONSTEXPR_17 char AuToLower(char c) { return AuIsAlpha(c) ? c | 0x20 : c; } -static auline AU_CONSTEXPR_17 char AuToUpper(char c) +AU_INLINE_CONSTEXPR_17 char AuToUpper(char c) { return AuIsAlpha(c) ? c & ~0x20 : c; } -static auline AU_CONSTEXPR_17 bool AuStringContains(const AuROString &value, const AuROString &subpattern) +AU_INLINE_CONSTEXPR_17 bool AuStringContains(const AuROString &value, const AuROString &subpattern) { return value.find(subpattern) != AuROString::npos; } -static auline AU_CONSTEXPR_17 bool AuEndsWith(AuROString const &value, AuROString const &ending) +AU_INLINE_CONSTEXPR_17 bool AuEndsWith(AuROString const &value, AuROString const &ending) { if (ending.size() > value.size()) { @@ -52,7 +52,7 @@ static auline AU_CONSTEXPR_17 bool AuEndsWith(AuROString const &value, AuROStrin } } -static auline AU_CONSTEXPR_17 bool AuEndsWith(AuROString const &value, const char &ending) +AU_INLINE_CONSTEXPR_17 bool AuEndsWith(AuROString const &value, const char ending) { if (value.empty()) { @@ -64,7 +64,7 @@ static auline AU_CONSTEXPR_17 bool AuEndsWith(AuROString const &value, const cha } } -static auline AU_CONSTEXPR_17 bool AuStartsWith(AuROString const &value, AuROString const &starting) +AU_INLINE_CONSTEXPR_17 bool AuStartsWith(AuROString const &value, AuROString const &starting) { #if defined(AU_STRING_IS_TINYUTF_EXPERIMENT) return value.starts_with(starting); @@ -75,7 +75,7 @@ static auline AU_CONSTEXPR_17 bool AuStartsWith(AuROString const &value, AuROStr #endif } -static auline AU_CONSTEXPR_17 bool AuStartsWith(AuROString const &value, const char &starting) +AU_INLINE_CONSTEXPR_17 bool AuStartsWith(AuROString const &value, const char starting) { if (value.empty()) { diff --git a/Include/auROXTL/auBitsUtils.hpp b/Include/auROXTL/auBitsUtils.hpp index 9295c5c..0198815 100644 --- a/Include/auROXTL/auBitsUtils.hpp +++ b/Include/auROXTL/auBitsUtils.hpp @@ -71,37 +71,37 @@ namespace __audetail #endif template -static auline bool AuTestBit(T value, AuUInt8 idx) +AU_OPTIMIZED bool AuTestBit(T value, AuUInt8 idx) { return value & (T(1) << T(idx)); } template -static auline bool AuBitTest(T value, AuUInt8 idx) +AU_OPTIMIZED bool AuBitTest(T value, AuUInt8 idx) { return value & (T(1) << T(idx)); } template -static auline void AuSetBit(T &value, AuUInt8 idx) +AU_OPTIMIZED void AuSetBit(T &value, AuUInt8 idx) { value |= T(1) << T(idx); } template -static auline void AuBitSet(T &value, AuUInt8 idx) +AU_OPTIMIZED void AuBitSet(T &value, AuUInt8 idx) { value |= T(1) << T(idx); } template -static auline void AuClearBit(T &value, AuUInt8 idx) +AU_OPTIMIZED void AuClearBit(T &value, AuUInt8 idx) { value &= ~(T(1) << T(idx)); } template -static auline void AuBitClear(T &value, AuUInt8 idx) +AU_OPTIMIZED void AuBitClear(T &value, AuUInt8 idx) { value &= ~(T(1) << T(idx)); } @@ -110,7 +110,7 @@ static auline void AuBitClear(T &value, AuUInt8 idx) /// xref MSDN for "_BitScanForward" intrin /// (+ u64 variants work on 32bit targets) template -static auline bool AuBitScanForward(AuUInt8 &index, T value) +AU_OPTIMIZED bool AuBitScanForward(AuUInt8 &index, T value) { unsigned long ret; bool success; @@ -180,7 +180,7 @@ static auline bool AuBitScanForward(AuUInt8 &index, T value) /// xref MSDN for "_BitScanReverse" intrin /// (+ u64 variants work on 32bit targets) template -static auline bool AuBitScanReverse(AuUInt8 &index, T value) +AU_OPTIMIZED bool AuBitScanReverse(AuUInt8 &index, T value) { unsigned long ret; bool success; @@ -269,7 +269,7 @@ static auline bool AuBitScanReverse(AuUInt8 &index, T value) /// AuBitScanForward utility - offsets value by uOffset of last uIndex template -static auline bool AuBitScanForwardItr(AuUInt8 &uIndex, T value, AuUInt8 uOffset = 0) +AU_OPTIMIZED bool AuBitScanForwardItr(AuUInt8 &uIndex, T value, AuUInt8 uOffset = 0) { if (AuBitScanForward(uIndex, value >> uOffset)) { @@ -284,7 +284,7 @@ static auline bool AuBitScanForwardItr(AuUInt8 &uIndex, T value, AuUInt8 uOffset /// AuBitScanReverse utility - offsets value by uOffset of last uIndex, starting at end bit offset, to break/false on 0. template -static auline bool AuBitScanReverseItr(AuUInt8 &uIndex, T value, AuUInt8 uOffset = sizeof(T) * 8) +AU_OPTIMIZED bool AuBitScanReverseItr(AuUInt8 &uIndex, T value, AuUInt8 uOffset = sizeof(T) * 8) { if (uOffset == 0) { diff --git a/Include/auROXTL/auMemoryModel.hpp b/Include/auROXTL/auMemoryModel.hpp index 747c354..224ecd5 100644 --- a/Include/auROXTL/auMemoryModel.hpp +++ b/Include/auROXTL/auMemoryModel.hpp @@ -69,7 +69,7 @@ struct AuEnableSharedFromThis : Aurora::Memory::ExSharedFromThis AuSPtr AuMakeShared(Args&&... args); template -static auline AuSPtr AuMakeSharedPanic(Args&&... args) +AU_OPTIMIZED AuSPtr AuMakeSharedPanic(Args&&... args) { #if defined(AURORA_ROXTL_ALLOCATORS_USE_STD) try @@ -362,7 +362,7 @@ static auline AuSPtr AuMakeSharedPanic(Args&&... args) } template -static auline AuSPtr AuMakeSharedThrow(Args&&... args) +AU_OPTIMIZED AuSPtr AuMakeSharedThrow(Args&&... args) { #if defined(AURORA_ROXTL_ALLOCATORS_USE_STD) try @@ -394,7 +394,7 @@ static auline AuSPtr AuMakeSharedThrow(Args&&... args) } template -static auline AuSPtr AuMakeSharedArray(AuUInt count) +AU_OPTIMIZED AuSPtr AuMakeSharedArray(AuUInt count) { try { diff --git a/Include/auROXTL/auMemoryUtils.hpp b/Include/auROXTL/auMemoryUtils.hpp index bf81318..7e07703 100644 --- a/Include/auROXTL/auMemoryUtils.hpp +++ b/Include/auROXTL/auMemoryUtils.hpp @@ -20,7 +20,7 @@ #else - static auline int AuMemcmp(const void *dest, const void *src, size_t n) + AU_OPTIMIZED int AuMemcmp(const void *dest, const void *src, size_t n) { return AURORA_RUNTIME_MEMCMP(dest, src, n); } @@ -37,7 +37,7 @@ #else - static auline void *AuMemset(void *dest, AuUInt8 c, size_t n) + AU_OPTIMIZED void *AuMemset(void *dest, AuUInt8 c, size_t n) { return AURORA_RUNTIME_MEMSET(dest, c, n); } @@ -54,7 +54,7 @@ #else - static auline void *AuMemcpy(void *dest, const void *src, size_t n) + AU_OPTIMIZED void *AuMemcpy(void *dest, const void *src, size_t n) { return AURORA_RUNTIME_MEMCPY(dest, src, n); } @@ -65,13 +65,13 @@ #define AURORA_RUNTIME_MEMMOVE std::memmove #endif -static auline void *AuMemmove(void *dest, const void *src, size_t n) +AU_OPTIMIZED void *AuMemmove(void *dest, const void *src, size_t n) { return AURORA_RUNTIME_MEMMOVE(dest, src, n); } -static auline void *AuMemmem(const void *haystack, size_t haystackLen, - const void *const needle, const size_t needleLen) +AU_OPTIMIZED void *AuMemmem(const void *haystack, size_t haystackLen, + const void *const needle, const size_t needleLen) { #if defined(AURORA_IS_LINUX_DERIVED) return ::memmem(haystack, haystackLen, needle, needleLen); diff --git a/Include/auROXTL/auStringUtils.hpp b/Include/auROXTL/auStringUtils.hpp index 5bb39b4..ca0de6d 100644 --- a/Include/auROXTL/auStringUtils.hpp +++ b/Include/auROXTL/auStringUtils.hpp @@ -19,7 +19,7 @@ AuCodepointsContains, AuCodepointsReplaceAll, AuCodepointsSplitString (views), AuCodepointsFindPreviousValidByteOffsetFromOffset, AuCodepointsFindPreviousValidByteOffsetFromByteOffset - AuCodepointsIsEqualIgnoreCase, AuCodepointsStartsWithEqualIgnoreCase, AuCodepointsEndsWithEqualIgnoreCase, + AuCodepointsIsEqualIgnoreCase, AuCodepointsStartsWithIgnoreCase, AuCodepointsEndsWithIgnoreCase, AuCodepointsReverseIterate, AuCodepointsReverseIterateSubStrPrefixView, AuCodepointsReverseIterateSubStrSuffixView Warning: By codepoints, we mean UTF32. @@ -70,7 +70,7 @@ #endif template -static auline AuString AuToString(const T &obj) +AU_OPTIMIZED AuString AuToString(const T &obj) { #if defined(_AUHAS_FMT) // locale independent and better optimized! diff --git a/Include/auROXTL/auTemplateMeta.hpp b/Include/auROXTL/auTemplateMeta.hpp index b5bfb43..470298f 100644 --- a/Include/auROXTL/auTemplateMeta.hpp +++ b/Include/auROXTL/auTemplateMeta.hpp @@ -394,8 +394,8 @@ template