diff options
Diffstat (limited to 'src/3rdparty/assimp/code/StringComparison.h')
-rw-r--r-- | src/3rdparty/assimp/code/StringComparison.h | 166 |
1 files changed, 86 insertions, 80 deletions
diff --git a/src/3rdparty/assimp/code/StringComparison.h b/src/3rdparty/assimp/code/StringComparison.h index d38fc86fe..0e1dbe4b8 100644 --- a/src/3rdparty/assimp/code/StringComparison.h +++ b/src/3rdparty/assimp/code/StringComparison.h @@ -2,11 +2,11 @@ Open Asset Import Library (assimp) ---------------------------------------------------------------------- -Copyright (c) 2006-2012, assimp team +Copyright (c) 2006-2016, assimp team All rights reserved. -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above @@ -23,16 +23,16 @@ following conditions are met: derived from this software without specific prior written permission of the assimp team. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- @@ -50,9 +50,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_STRING_WORKERS_H #define INCLUDED_AI_STRING_WORKERS_H -#include "../include/assimp/ai_assert.h" +#include <assimp/ai_assert.h> +#include "StringComparison.h" -namespace Assimp { +#include <string.h> +#include <stdint.h> +#include <string> +#include <cctype> + +namespace Assimp { // ------------------------------------------------------------------------------- /** @brief itoa with a fixed base 10 @@ -67,40 +73,40 @@ namespace Assimp { */ inline unsigned int ASSIMP_itoa10( char* out, unsigned int max, int32_t number) { - ai_assert(NULL != out); - - // write the unary minus to indicate we have a negative number - unsigned int written = 1u; - if (number < 0 && written < max) { - *out++ = '-'; - ++written; - number = -number; - } - - // We begin with the largest number that is not zero. - int32_t cur = 1000000000; // 2147483648 - bool mustPrint = false; - while (written < max) { - - const unsigned int digit = number / cur; - if (mustPrint || digit > 0 || 1 == cur) { - // print all future zeroes from now - mustPrint = true; - - *out++ = '0'+static_cast<char>(digit); - - ++written; - number -= digit*cur; - if (1 == cur) { - break; - } - } - cur /= 10; - } - - // append a terminal zero - *out++ = '\0'; - return written-1; + ai_assert(NULL != out); + + // write the unary minus to indicate we have a negative number + unsigned int written = 1u; + if (number < 0 && written < max) { + *out++ = '-'; + ++written; + number = -number; + } + + // We begin with the largest number that is not zero. + int32_t cur = 1000000000; // 2147483648 + bool mustPrint = false; + while (written < max) { + + const unsigned int digit = number / cur; + if (mustPrint || digit > 0 || 1 == cur) { + // print all future zeroes from now + mustPrint = true; + + *out++ = '0'+static_cast<char>(digit); + + ++written; + number -= digit*cur; + if (1 == cur) { + break; + } + } + cur /= 10; + } + + // append a terminal zero + *out++ = '\0'; + return written-1; } // ------------------------------------------------------------------------------- @@ -111,7 +117,7 @@ inline unsigned int ASSIMP_itoa10( char* out, unsigned int max, int32_t number) template <size_t length> inline unsigned int ASSIMP_itoa10( char(& out)[length], int32_t number) { - return ASSIMP_itoa10(out,length,number); + return ASSIMP_itoa10(out,length,number); } // ------------------------------------------------------------------------------- @@ -119,7 +125,7 @@ inline unsigned int ASSIMP_itoa10( char(& out)[length], int32_t number) * * This is required since stricmp() is not consistently available on * all platforms. Some platforms use the '_' prefix, others don't even - * have such a function. + * have such a function. * * @param s1 First input string * @param s2 Second input string @@ -127,23 +133,23 @@ inline unsigned int ASSIMP_itoa10( char(& out)[length], int32_t number) */ inline int ASSIMP_stricmp(const char *s1, const char *s2) { - ai_assert(NULL != s1 && NULL != s2); + ai_assert(NULL != s1 && NULL != s2); #if (defined _MSC_VER) - return ::_stricmp(s1,s2); + return ::_stricmp(s1,s2); #elif defined( __GNUC__ ) - - return ::strcasecmp(s1,s2); + + return ::strcasecmp(s1,s2); #else - + char c1, c2; - do { - c1 = tolower(*s1++); - c2 = tolower(*s2++); - } - while ( c1 && (c1 == c2) ); - return c1 - c2; + do { + c1 = tolower(*s1++); + c2 = tolower(*s2++); + } + while ( c1 && (c1 == c2) ); + return c1 - c2; #endif } @@ -157,7 +163,7 @@ inline int ASSIMP_stricmp(const char *s1, const char *s2) inline int ASSIMP_stricmp(const std::string& a, const std::string& b) { int i = (int)b.length()-(int)a.length(); - return (i ? i : ASSIMP_stricmp(a.c_str(),b.c_str())); + return (i ? i : ASSIMP_stricmp(a.c_str(),b.c_str())); } // ------------------------------------------------------------------------------- @@ -165,7 +171,7 @@ inline int ASSIMP_stricmp(const std::string& a, const std::string& b) * * This is required since strincmp() is not consistently available on * all platforms. Some platforms use the '_' prefix, others don't even - * have such a function. + * have such a function. * * @param s1 First input string * @param s2 Second input string @@ -174,29 +180,29 @@ inline int ASSIMP_stricmp(const std::string& a, const std::string& b) */ inline int ASSIMP_strincmp(const char *s1, const char *s2, unsigned int n) { - ai_assert(NULL != s1 && NULL != s2); - if (!n)return 0; + ai_assert(NULL != s1 && NULL != s2); + if (!n)return 0; #if (defined _MSC_VER) - return ::_strnicmp(s1,s2,n); + return ::_strnicmp(s1,s2,n); #elif defined( __GNUC__ ) - return ::strncasecmp(s1,s2, n); + return ::strncasecmp(s1,s2, n); #else char c1, c2; - unsigned int p = 0; - do - { - if (p++ >= n)return 0; - c1 = tolower(*s1++); - c2 = tolower(*s2++); - } - while ( c1 && (c1 == c2) ); - - return c1 - c2; + unsigned int p = 0; + do + { + if (p++ >= n)return 0; + c1 = tolower(*s1++); + c2 = tolower(*s2++); + } + while ( c1 && (c1 == c2) ); + + return c1 - c2; #endif } @@ -204,15 +210,15 @@ inline int ASSIMP_strincmp(const char *s1, const char *s2, unsigned int n) // ------------------------------------------------------------------------------- /** @brief Evaluates an integer power * - * todo: move somewhere where it fits better in than here + * todo: move somewhere where it fits better in than here */ inline unsigned int integer_pow (unsigned int base, unsigned int power) { - unsigned int res = 1; - for (unsigned int i = 0; i < power;++i) - res *= base; + unsigned int res = 1; + for (unsigned int i = 0; i < power;++i) + res *= base; - return res; + return res; } } // end of namespace |