X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=libs%2Fstring%2Fstring.h;h=ff7dc4536c9245ce116e612534f0d1ff826a49a6;hb=e6ffa8c04f8bd4e501210652daf88b52a366a338;hp=826d4a938392209ba847facc52f353ae5341d16d;hpb=e6bf0d774eae887e2646c71d1c17a689bb287bf2;p=xonotic%2Fnetradiant.git diff --git a/libs/string/string.h b/libs/string/string.h index 826d4a93..ff7dc453 100644 --- a/libs/string/string.h +++ b/libs/string/string.h @@ -22,6 +22,8 @@ #if !defined( INCLUDED_STRING_STRING_H ) #define INCLUDED_STRING_STRING_H +#include "globaldefs.h" + /// \file /// C-style null-terminated-character-array string library. @@ -81,7 +83,7 @@ inline bool string_greater( const char* string, const char* other ){ /// Returns 0 if \p string is lexicographically equal to \p other after converting both to lower-case. /// O(n) inline int string_compare_nocase( const char* string, const char* other ){ -#ifdef WIN32 +#if GDEF_OS_WINDOWS return _stricmp( string, other ); #else return strcasecmp( string, other ); @@ -94,7 +96,7 @@ inline int string_compare_nocase( const char* string, const char* other ){ /// Treats all ascii characters as lower-case during comparisons. /// O(n) inline int string_compare_nocase_n( const char* string, const char* other, std::size_t n ){ -#ifdef WIN32 +#if GDEF_OS_WINDOWS return _strnicmp( string, other, n ); #else return strncasecmp( string, other, n ); @@ -194,6 +196,14 @@ inline char* string_new( std::size_t length ){ return string_new( length, allocator ); } +/// \brief Allocates a new buffer large enough to hold two concatenated strings and fills it with strings. +inline char* string_new_concat( const char* a, const char* b ){ + char* str = string_new( string_length( a ) + string_length( b ) ); + strcpy( str, a ); + strcat( str, b ); + return str; +} + /// \brief Deallocates the \p buffer large enough to hold \p length characters. inline void string_release( char* string, std::size_t length ){ DefaultAllocator allocator;