diff -ruN assimp--3.0.1270-source-only/CMakeLists.txt assimp--3.0.1270-source-only-fedora/CMakeLists.txt --- assimp--3.0.1270-source-only/CMakeLists.txt 2012-07-07 18:15:42.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/CMakeLists.txt 2013-05-28 22:51:02.968721353 -0400 @@ -117,6 +117,36 @@ PKG_CHECK_MODULES(UNZIP minizip) endif (PKG_CONFIG_FOUND) +# Search for irrXML +FIND_LIBRARY(IRRXML_LIB IrrXML HINTS ${IRRXML_LIB_PATH}) +FIND_FILE(IRRXML_H irrXML.h PATHS ${IRRXML_INCLUDE_PATH}) +IF(IRRXML_LIB AND IRRXML_H) + message (STATUS "Found External IrrXML") + set(HAVE_IRRXML true) +ELSE (IRRXML_LIB AND IRRXML_H) + SET(HAVE_IRRXML false) +ENDIF(IRRXML_LIB AND IRRXML_H) + +# Search for poly2tri +FIND_LIBRARY(POLY2TRI_LIB poly2tri HINTS ${POLY2TRI_LIB_PATH}) +FIND_FILE(POLY2TRI_H poly2tri.h PATHS ${POLY2TRI_INCLUDE_PATH}) +IF (POLY2TRI_LIB AND POLY2TRI_H) + message(status "Found External poly2tri") + SET(HAVE_POLY2TRI true) +ELSE(POLY2TRI_LIB AND POLY2TRI_H) + SET(HAVE_POLY2TRI false) +ENDIF(POLY2TRI_LIB AND POLY2TRI_H) + +# Search for clipper +FIND_LIBRARY(CLIPPER_LIB polyclipping HINTS ${CLIPPER_LIB_PATH}) +FIND_FILE(CLIPPER_H clipper.hpp PATHS ${CLIPPER_INCLUDE_PATH}) +IF (CLIPPER_LIB AND CLIPPER_H) + message(status "Found External clipper") + SET(HAVE_CLIPPER true) +ELSE(CLIPPER_LIB AND CLIPPER_H) + SET(HAVE_CLIPPER false) +ENDIF(CLIPPER_LIB AND CLIPPER_H) + IF ( NO_EXPORT ) ADD_DEFINITIONS( -DASSIMP_BUILD_NO_EXPORT) MESSAGE( STATUS "Build an import-only version of Assimp." ) diff -ruN assimp--3.0.1270-source-only/code/ACLoader.cpp assimp--3.0.1270-source-only-fedora/code/ACLoader.cpp --- assimp--3.0.1270-source-only/code/ACLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/ACLoader.cpp 2013-05-01 19:28:57.600184042 -0400 @@ -49,7 +49,7 @@ // internal headers #include "ACLoader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "Subdivision.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/ASELoader.cpp assimp--3.0.1270-source-only-fedora/code/ASELoader.cpp --- assimp--3.0.1270-source-only/code/ASELoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/ASELoader.cpp 2013-05-01 19:28:57.604184199 -0400 @@ -53,7 +53,7 @@ #include "TargetAnimation.h" // utilities -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; using namespace Assimp::ASE; diff -ruN assimp--3.0.1270-source-only/code/ASEParser.cpp assimp--3.0.1270-source-only-fedora/code/ASEParser.cpp --- assimp--3.0.1270-source-only/code/ASEParser.cpp 2012-02-03 05:38:32.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/code/ASEParser.cpp 2013-05-01 19:28:57.609184395 -0400 @@ -49,7 +49,7 @@ #include "TextureTransform.h" #include "ASELoader.h" #include "MaterialSystem.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; using namespace Assimp::ASE; diff -ruN assimp--3.0.1270-source-only/code/BlenderDNA.cpp assimp--3.0.1270-source-only-fedora/code/BlenderDNA.cpp --- assimp--3.0.1270-source-only/code/BlenderDNA.cpp 2012-02-03 05:38:32.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/code/BlenderDNA.cpp 2013-05-01 19:28:57.616184669 -0400 @@ -47,7 +47,7 @@ #ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER #include "BlenderDNA.h" #include "StreamReader.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; using namespace Assimp::Blender; diff -ruN assimp--3.0.1270-source-only/code/BVHLoader.cpp assimp--3.0.1270-source-only-fedora/code/BVHLoader.cpp --- assimp--3.0.1270-source-only/code/BVHLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/BVHLoader.cpp 2013-05-01 19:28:57.623184944 -0400 @@ -44,7 +44,7 @@ #ifndef ASSIMP_BUILD_NO_BVH_IMPORTER #include "BVHLoader.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "SkeletonMeshBuilder.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/CMakeLists.txt assimp--3.0.1270-source-only-fedora/code/CMakeLists.txt --- assimp--3.0.1270-source-only/code/CMakeLists.txt 2012-06-21 20:38:10.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/CMakeLists.txt 2013-05-29 21:50:50.883117497 -0400 @@ -88,7 +88,7 @@ SOURCE_GROUP(Logging FILES ${Logging_SRCS}) SET( Common_SRCS - fast_atof.h + fast_atof_assimp.h qnan.h BaseImporter.cpp BaseImporter.h @@ -533,12 +533,15 @@ ) SOURCE_GROUP( ConvertUTF FILES ${ConvertUTF_SRCS}) +if (NOT HAVE_CLIPPER) SET( Clipper_SRCS ../contrib/clipper/clipper.hpp ../contrib/clipper/clipper.cpp ) SOURCE_GROUP( Clipper FILES ${Clipper_SRCS}) - +else (NOT HAVE_CLIPPER) + SET(Clipper_SRCS "") +endif(NOT HAVE_CLIPPER) SET( Poly2Tri_SRCS ../contrib/poly2tri/poly2tri/common/shapes.cc @@ -633,11 +636,8 @@ ${XGL_SRCS} # Third-party libraries - ${IrrXML_SRCS} ${ConvertUTF_SRCS} - ${unzip_compile_SRCS} - ${Poly2Tri_SRCS} - ${Clipper_SRCS} + ${Clipper_SRCS} # Necessary to show the headers in the project when using the VC++ generator: ${Boost_SRCS} @@ -670,6 +670,26 @@ INCLUDE_DIRECTORIES("../contrib/unzip") endif (UNZIP_FOUND) +if (HAVE_IRRXML) + INCLUDE_DIRECTORIES(${IRRXML_INCLUDE_PATH}) + TARGET_LINK_LIBRARIES(assimp ${IRRXML_LIB}) +else (HAVE_IRRXML) + INCLUDE_DIRECTORIES("../contrib/irrXML") +endif (HAVE_IRRXML) + +if (HAVE_POLY2TRI) + INCLUDE_DIRECTORIES(${POLY2TRI_INCLUDE_PATH}) + TARGET_LINK_LIBRARIES(assimp ${POLY2TRI_LIB}) +endif(HAVE_POLY2TRI) + +if (HAVE_CLIPPER) + INCLUDE_DIRECTORIES(${CLIPPER_INCLUDE_PATH}) + TARGET_LINK_LIBRARIES(assimp ${CLIPPER_LIB}) +else (HAVE_CLIPPER) + INCLUDE_DIRECTORIES(../contrib/clipper) +endif(HAVE_CLIPPER) + + INSTALL( TARGETS assimp DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${LIBASSIMP_COMPONENT}) INSTALL( FILES ${PUBLIC_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/assimp COMPONENT assimp-dev) INSTALL( FILES ${COMPILER_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/assimp/Compiler COMPONENT assimp-dev) diff -ruN assimp--3.0.1270-source-only/code/COBLoader.cpp assimp--3.0.1270-source-only-fedora/code/COBLoader.cpp --- assimp--3.0.1270-source-only/code/COBLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/COBLoader.cpp 2013-05-01 19:28:57.627185100 -0400 @@ -49,7 +49,7 @@ #include "StreamReader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "LineSplitter.h" #include "TinyFormatter.h" diff -ruN assimp--3.0.1270-source-only/code/ColladaLoader.cpp assimp--3.0.1270-source-only-fedora/code/ColladaLoader.cpp --- assimp--3.0.1270-source-only/code/ColladaLoader.cpp 2012-05-05 09:38:16.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/ColladaLoader.cpp 2013-05-01 19:28:57.632185296 -0400 @@ -48,7 +48,7 @@ #include "ColladaLoader.h" #include "ColladaParser.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "ParsingUtils.h" #include "SkeletonMeshBuilder.h" diff -ruN assimp--3.0.1270-source-only/code/ColladaParser.cpp assimp--3.0.1270-source-only-fedora/code/ColladaParser.cpp --- assimp--3.0.1270-source-only/code/ColladaParser.cpp 2012-05-05 09:38:16.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/ColladaParser.cpp 2013-05-01 19:28:57.639185571 -0400 @@ -47,7 +47,7 @@ #ifndef ASSIMP_BUILD_NO_DAE_IMPORTER #include "ColladaParser.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "ParsingUtils.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/CSMLoader.cpp assimp--3.0.1270-source-only-fedora/code/CSMLoader.cpp --- assimp--3.0.1270-source-only/code/CSMLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/CSMLoader.cpp 2013-05-01 19:28:57.642185688 -0400 @@ -50,7 +50,7 @@ #include "CSMLoader.h" #include "SkeletonMeshBuilder.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/DXFLoader.cpp assimp--3.0.1270-source-only-fedora/code/DXFLoader.cpp --- assimp--3.0.1270-source-only/code/DXFLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/DXFLoader.cpp 2013-05-01 19:28:57.648185924 -0400 @@ -49,7 +49,7 @@ #include "DXFLoader.h" #include "ParsingUtils.h" #include "ConvertToLHProcess.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "DXFHelper.h" diff -ruN assimp--3.0.1270-source-only/code/fast_atof_assimp.h assimp--3.0.1270-source-only-fedora/code/fast_atof_assimp.h --- assimp--3.0.1270-source-only/code/fast_atof_assimp.h 1969-12-31 19:00:00.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/code/fast_atof_assimp.h 2013-05-28 22:01:04.368372806 -0400 @@ -0,0 +1,264 @@ +// Copyright (C) 2002-2007 Nikolaus Gebhardt +// This file is part of the "Irrlicht Engine" and the "irrXML" project. +// For conditions of distribution and use, see copyright notice in irrlicht.h and irrXML.h + +// ------------------------------------------------------------------------------------ +// Original description: (Schrompf) +// Adapted to the ASSIMP library because the builtin atof indeed takes AGES to parse a +// float inside a large string. Before parsing, it does a strlen on the given point. +// Changes: +// 22nd October 08 (Aramis_acg): Added temporary cast to double, added strtoul10_64 +// to ensure long numbers are handled correctly +// ------------------------------------------------------------------------------------ + + +#ifndef __ASSIMP_FAST_A_TO_F_H_INCLUDED__ +#define __ASSIMP_FAST_A_TO_F_H_INCLUDED__ + +#include +#include "fast_atof.h" + +namespace Assimp +{ + +// ------------------------------------------------------------------------------------ +// Convert a string in decimal format to a number +// ------------------------------------------------------------------------------------ +inline unsigned int strtoul10( const char* in, const char** out=0) +{ + return irr::core::strtoul10(in, out); +} + +// ------------------------------------------------------------------------------------ +// Convert a string in octal format to a number +// ------------------------------------------------------------------------------------ +inline unsigned int strtoul8( const char* in, const char** out=0) +{ + return irr::core::strtoul8(in, out); +} + +// ------------------------------------------------------------------------------------ +// Convert a string in hex format to a number +// ------------------------------------------------------------------------------------ +inline unsigned int strtoul16( const char* in, const char** out=0) +{ + return irr::core::strtoul16(in, out); +} + +// ------------------------------------------------------------------------------------ +// Convert just one hex digit +// Return value is UINT_MAX if the input character is not a hex digit. +// ------------------------------------------------------------------------------------ +inline unsigned int HexDigitToDecimal(char in) +{ + unsigned int out = UINT_MAX; + if (in >= '0' && in <= '9') + out = in - '0'; + + else if (in >= 'a' && in <= 'f') + out = 10u + in - 'a'; + + else if (in >= 'A' && in <= 'F') + out = 10u + in - 'A'; + + // return value is UINT_MAX if the input is not a hex digit + return out; +} + +// ------------------------------------------------------------------------------------ +// Convert a hex-encoded octet (2 characters, i.e. df or 1a). +// ------------------------------------------------------------------------------------ +inline uint8_t HexOctetToDecimal(const char* in) +{ + return ((uint8_t)HexDigitToDecimal(in[0])<<4)+(uint8_t)HexDigitToDecimal(in[1]); +} + + +// ------------------------------------------------------------------------------------ +// signed variant of strtoul10 +// ------------------------------------------------------------------------------------ +inline int strtol10( const char* in, const char** out=0) +{ + return irr::core::strtol10(in, out); +} + +// ------------------------------------------------------------------------------------ +// Parse a C++-like integer literal - hex and oct prefixes. +// 0xNNNN - hex +// 0NNN - oct +// NNN - dec +// ------------------------------------------------------------------------------------ +inline unsigned int strtoul_cppstyle( const char* in, const char** out=0) +{ + if ('0' == in[0]) + { + return 'x' == in[1] ? strtoul16(in+2,out) : strtoul8(in+1,out); + } + return strtoul10(in, out); +} + +// ------------------------------------------------------------------------------------ +// Special version of the function, providing higher accuracy and safety +// It is mainly used by fast_atof to prevent ugly and unwanted integer overflows. +// ------------------------------------------------------------------------------------ +inline uint64_t strtoul10_64( const char* in, const char** out=0, unsigned int* max_inout=0) +{ + unsigned int cur = 0; + uint64_t value = 0; + + bool running = true; + while ( running ) + { + if ( *in < '0' || *in > '9' ) + break; + + const uint64_t new_value = ( value * 10 ) + ( *in - '0' ); + + if (new_value < value) /* numeric overflow, we rely on you */ + return value; + + value = new_value; + + ++in; + ++cur; + + if (max_inout && *max_inout == cur) { + + if (out) { /* skip to end */ + while (*in >= '0' && *in <= '9') + ++in; + *out = in; + } + + return value; + } + } + if (out) + *out = in; + + if (max_inout) + *max_inout = cur; + + return value; +} + +// Number of relevant decimals for floating-point parsing. +#define AI_FAST_ATOF_RELAVANT_DECIMALS 15 + +// ------------------------------------------------------------------------------------ +//! Provides a fast function for converting a string into a float, +//! about 6 times faster than atof in win32. +// If you find any bugs, please send them to me, niko (at) irrlicht3d.org. +// ------------------------------------------------------------------------------------ +template +inline const char* fast_atoreal_move( const char* c, Real& out) +{ + Real f; + + bool inv = (*c=='-'); + if (inv || *c=='+') { + ++c; + } + + f = static_cast( strtoul10_64 ( c, &c) ); + if (*c == '.' || (c[0] == ',' && c[1] >= '0' && c[1] <= '9')) // allow for commas, too + { + ++c; + + // NOTE: The original implementation is highly inaccurate here. The precision of a single + // IEEE 754 float is not high enough, everything behind the 6th digit tends to be more + // inaccurate than it would need to be. Casting to double seems to solve the problem. + // strtol_64 is used to prevent integer overflow. + + // Another fix: this tends to become 0 for long numbers if we don't limit the maximum + // number of digits to be read. AI_FAST_ATOF_RELAVANT_DECIMALS can be a value between + // 1 and 15. + unsigned int diff = AI_FAST_ATOF_RELAVANT_DECIMALS; + double pl = static_cast( strtoul10_64 ( c, &c, &diff )); + + pl *= irr::core::fast_atof_table[diff]; + f += static_cast( pl ); + } + + // A major 'E' must be allowed. Necessary for proper reading of some DXF files. + // Thanks to Zhao Lei to point out that this if() must be outside the if (*c == '.' ..) + if (*c == 'e' || *c == 'E') { + + ++c; + const bool einv = (*c=='-'); + if (einv || *c=='+') { + ++c; + } + + // The reason float constants are used here is that we've seen cases where compilers + // would perform such casts on compile-time constants at runtime, which would be + // bad considering how frequently fast_atoreal_move is called in Assimp. + Real exp = static_cast( strtoul10_64(c, &c) ); + if (einv) { + exp = -exp; + } + f *= pow(static_cast(10.0f), exp); + } + + if (inv) { + f = -f; + } + out = f; + return c; +} + +// ------------------------------------------------------------------------------------ +// The same but more human. +inline float fast_atof(const char* c) +{ + float ret; + fast_atoreal_move(c, ret); + return ret; +} + + +inline float fast_atof( const char* c, const char** cout) +{ + float ret; + *cout = fast_atoreal_move(c, ret); + + return ret; +} + +inline float fast_atof( const char** inout) +{ + float ret; + *inout = fast_atoreal_move(*inout, ret); + + return ret; +} + + +inline double fast_atod(const char* c) +{ + double ret; + fast_atoreal_move(c, ret); + return ret; +} + + +inline double fast_atod( const char* c, const char** cout) +{ + double ret; + *cout = fast_atoreal_move(c, ret); + + return ret; +} + +inline double fast_atod( const char** inout) +{ + double ret; + *inout = fast_atoreal_move(*inout, ret); + + return ret; +} + +} // end of namespace Assimp + +#endif + diff -ruN assimp--3.0.1270-source-only/code/fast_atof.h assimp--3.0.1270-source-only-fedora/code/fast_atof.h --- assimp--3.0.1270-source-only/code/fast_atof.h 2012-03-20 18:29:58.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/fast_atof.h 1969-12-31 19:00:00.000000000 -0500 @@ -1,336 +0,0 @@ -// Copyright (C) 2002-2007 Nikolaus Gebhardt -// This file is part of the "Irrlicht Engine" and the "irrXML" project. -// For conditions of distribution and use, see copyright notice in irrlicht.h and irrXML.h - -// ------------------------------------------------------------------------------------ -// Original description: (Schrompf) -// Adapted to the ASSIMP library because the builtin atof indeed takes AGES to parse a -// float inside a large string. Before parsing, it does a strlen on the given point. -// Changes: -// 22nd October 08 (Aramis_acg): Added temporary cast to double, added strtoul10_64 -// to ensure long numbers are handled correctly -// ------------------------------------------------------------------------------------ - - -#ifndef __FAST_A_TO_F_H_INCLUDED__ -#define __FAST_A_TO_F_H_INCLUDED__ - -#include - -namespace Assimp -{ - -const float fast_atof_table[16] = { // we write [16] here instead of [] to work around a swig bug - 0.f, - 0.1f, - 0.01f, - 0.001f, - 0.0001f, - 0.00001f, - 0.000001f, - 0.0000001f, - 0.00000001f, - 0.000000001f, - 0.0000000001f, - 0.00000000001f, - 0.000000000001f, - 0.0000000000001f, - 0.00000000000001f, - 0.000000000000001f -}; - - -// ------------------------------------------------------------------------------------ -// Convert a string in decimal format to a number -// ------------------------------------------------------------------------------------ -inline unsigned int strtoul10( const char* in, const char** out=0) -{ - unsigned int value = 0; - - bool running = true; - while ( running ) - { - if ( *in < '0' || *in > '9' ) - break; - - value = ( value * 10 ) + ( *in - '0' ); - ++in; - } - if (out)*out = in; - return value; -} - -// ------------------------------------------------------------------------------------ -// Convert a string in octal format to a number -// ------------------------------------------------------------------------------------ -inline unsigned int strtoul8( const char* in, const char** out=0) -{ - unsigned int value = 0; - - bool running = true; - while ( running ) - { - if ( *in < '0' || *in > '7' ) - break; - - value = ( value << 3 ) + ( *in - '0' ); - ++in; - } - if (out)*out = in; - return value; -} - -// ------------------------------------------------------------------------------------ -// Convert a string in hex format to a number -// ------------------------------------------------------------------------------------ -inline unsigned int strtoul16( const char* in, const char** out=0) -{ - unsigned int value = 0; - - bool running = true; - while ( running ) - { - if ( *in >= '0' && *in <= '9' ) - { - value = ( value << 4u ) + ( *in - '0' ); - } - else if (*in >= 'A' && *in <= 'F') - { - value = ( value << 4u ) + ( *in - 'A' ) + 10; - } - else if (*in >= 'a' && *in <= 'f') - { - value = ( value << 4u ) + ( *in - 'a' ) + 10; - } - else break; - ++in; - } - if (out)*out = in; - return value; -} - -// ------------------------------------------------------------------------------------ -// Convert just one hex digit -// Return value is UINT_MAX if the input character is not a hex digit. -// ------------------------------------------------------------------------------------ -inline unsigned int HexDigitToDecimal(char in) -{ - unsigned int out = UINT_MAX; - if (in >= '0' && in <= '9') - out = in - '0'; - - else if (in >= 'a' && in <= 'f') - out = 10u + in - 'a'; - - else if (in >= 'A' && in <= 'F') - out = 10u + in - 'A'; - - // return value is UINT_MAX if the input is not a hex digit - return out; -} - -// ------------------------------------------------------------------------------------ -// Convert a hex-encoded octet (2 characters, i.e. df or 1a). -// ------------------------------------------------------------------------------------ -inline uint8_t HexOctetToDecimal(const char* in) -{ - return ((uint8_t)HexDigitToDecimal(in[0])<<4)+(uint8_t)HexDigitToDecimal(in[1]); -} - - -// ------------------------------------------------------------------------------------ -// signed variant of strtoul10 -// ------------------------------------------------------------------------------------ -inline int strtol10( const char* in, const char** out=0) -{ - bool inv = (*in=='-'); - if (inv || *in=='+') - ++in; - - int value = strtoul10(in,out); - if (inv) { - value = -value; - } - return value; -} - -// ------------------------------------------------------------------------------------ -// Parse a C++-like integer literal - hex and oct prefixes. -// 0xNNNN - hex -// 0NNN - oct -// NNN - dec -// ------------------------------------------------------------------------------------ -inline unsigned int strtoul_cppstyle( const char* in, const char** out=0) -{ - if ('0' == in[0]) - { - return 'x' == in[1] ? strtoul16(in+2,out) : strtoul8(in+1,out); - } - return strtoul10(in, out); -} - -// ------------------------------------------------------------------------------------ -// Special version of the function, providing higher accuracy and safety -// It is mainly used by fast_atof to prevent ugly and unwanted integer overflows. -// ------------------------------------------------------------------------------------ -inline uint64_t strtoul10_64( const char* in, const char** out=0, unsigned int* max_inout=0) -{ - unsigned int cur = 0; - uint64_t value = 0; - - bool running = true; - while ( running ) - { - if ( *in < '0' || *in > '9' ) - break; - - const uint64_t new_value = ( value * 10 ) + ( *in - '0' ); - - if (new_value < value) /* numeric overflow, we rely on you */ - return value; - - value = new_value; - - ++in; - ++cur; - - if (max_inout && *max_inout == cur) { - - if (out) { /* skip to end */ - while (*in >= '0' && *in <= '9') - ++in; - *out = in; - } - - return value; - } - } - if (out) - *out = in; - - if (max_inout) - *max_inout = cur; - - return value; -} - -// Number of relevant decimals for floating-point parsing. -#define AI_FAST_ATOF_RELAVANT_DECIMALS 15 - -// ------------------------------------------------------------------------------------ -//! Provides a fast function for converting a string into a float, -//! about 6 times faster than atof in win32. -// If you find any bugs, please send them to me, niko (at) irrlicht3d.org. -// ------------------------------------------------------------------------------------ -template -inline const char* fast_atoreal_move( const char* c, Real& out) -{ - Real f; - - bool inv = (*c=='-'); - if (inv || *c=='+') { - ++c; - } - - f = static_cast( strtoul10_64 ( c, &c) ); - if (*c == '.' || (c[0] == ',' && c[1] >= '0' && c[1] <= '9')) // allow for commas, too - { - ++c; - - // NOTE: The original implementation is highly inaccurate here. The precision of a single - // IEEE 754 float is not high enough, everything behind the 6th digit tends to be more - // inaccurate than it would need to be. Casting to double seems to solve the problem. - // strtol_64 is used to prevent integer overflow. - - // Another fix: this tends to become 0 for long numbers if we don't limit the maximum - // number of digits to be read. AI_FAST_ATOF_RELAVANT_DECIMALS can be a value between - // 1 and 15. - unsigned int diff = AI_FAST_ATOF_RELAVANT_DECIMALS; - double pl = static_cast( strtoul10_64 ( c, &c, &diff )); - - pl *= fast_atof_table[diff]; - f += static_cast( pl ); - } - - // A major 'E' must be allowed. Necessary for proper reading of some DXF files. - // Thanks to Zhao Lei to point out that this if() must be outside the if (*c == '.' ..) - if (*c == 'e' || *c == 'E') { - - ++c; - const bool einv = (*c=='-'); - if (einv || *c=='+') { - ++c; - } - - // The reason float constants are used here is that we've seen cases where compilers - // would perform such casts on compile-time constants at runtime, which would be - // bad considering how frequently fast_atoreal_move is called in Assimp. - Real exp = static_cast( strtoul10_64(c, &c) ); - if (einv) { - exp = -exp; - } - f *= pow(static_cast(10.0f), exp); - } - - if (inv) { - f = -f; - } - out = f; - return c; -} - -// ------------------------------------------------------------------------------------ -// The same but more human. -inline float fast_atof(const char* c) -{ - float ret; - fast_atoreal_move(c, ret); - return ret; -} - - -inline float fast_atof( const char* c, const char** cout) -{ - float ret; - *cout = fast_atoreal_move(c, ret); - - return ret; -} - -inline float fast_atof( const char** inout) -{ - float ret; - *inout = fast_atoreal_move(*inout, ret); - - return ret; -} - - -inline double fast_atod(const char* c) -{ - double ret; - fast_atoreal_move(c, ret); - return ret; -} - - -inline double fast_atod( const char* c, const char** cout) -{ - double ret; - *cout = fast_atoreal_move(c, ret); - - return ret; -} - -inline double fast_atod( const char** inout) -{ - double ret; - *inout = fast_atoreal_move(*inout, ret); - - return ret; -} - -} // end of namespace Assimp - -#endif - diff -ruN assimp--3.0.1270-source-only/code/fast_atof.h.NO assimp--3.0.1270-source-only-fedora/code/fast_atof.h.NO --- assimp--3.0.1270-source-only/code/fast_atof.h.NO 1969-12-31 19:00:00.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/code/fast_atof.h.NO 2013-05-01 19:45:21.118989917 -0400 @@ -0,0 +1,336 @@ +// Copyright (C) 2002-2007 Nikolaus Gebhardt +// This file is part of the "Irrlicht Engine" and the "irrXML" project. +// For conditions of distribution and use, see copyright notice in irrlicht.h and irrXML.h + +// ------------------------------------------------------------------------------------ +// Original description: (Schrompf) +// Adapted to the ASSIMP library because the builtin atof indeed takes AGES to parse a +// float inside a large string. Before parsing, it does a strlen on the given point. +// Changes: +// 22nd October 08 (Aramis_acg): Added temporary cast to double, added strtoul10_64 +// to ensure long numbers are handled correctly +// ------------------------------------------------------------------------------------ + + +#ifndef __FAST_A_TO_F_H_INCLUDED__ +#define __FAST_A_TO_F_H_INCLUDED__ + +#include + +namespace Assimp +{ + +const float fast_atof_table[16] = { // we write [16] here instead of [] to work around a swig bug + 0.f, + 0.1f, + 0.01f, + 0.001f, + 0.0001f, + 0.00001f, + 0.000001f, + 0.0000001f, + 0.00000001f, + 0.000000001f, + 0.0000000001f, + 0.00000000001f, + 0.000000000001f, + 0.0000000000001f, + 0.00000000000001f, + 0.000000000000001f +}; + + +// ------------------------------------------------------------------------------------ +// Convert a string in decimal format to a number +// ------------------------------------------------------------------------------------ +inline unsigned int strtoul10( const char* in, const char** out=0) +{ + unsigned int value = 0; + + bool running = true; + while ( running ) + { + if ( *in < '0' || *in > '9' ) + break; + + value = ( value * 10 ) + ( *in - '0' ); + ++in; + } + if (out)*out = in; + return value; +} + +// ------------------------------------------------------------------------------------ +// Convert a string in octal format to a number +// ------------------------------------------------------------------------------------ +inline unsigned int strtoul8( const char* in, const char** out=0) +{ + unsigned int value = 0; + + bool running = true; + while ( running ) + { + if ( *in < '0' || *in > '7' ) + break; + + value = ( value << 3 ) + ( *in - '0' ); + ++in; + } + if (out)*out = in; + return value; +} + +// ------------------------------------------------------------------------------------ +// Convert a string in hex format to a number +// ------------------------------------------------------------------------------------ +inline unsigned int strtoul16( const char* in, const char** out=0) +{ + unsigned int value = 0; + + bool running = true; + while ( running ) + { + if ( *in >= '0' && *in <= '9' ) + { + value = ( value << 4u ) + ( *in - '0' ); + } + else if (*in >= 'A' && *in <= 'F') + { + value = ( value << 4u ) + ( *in - 'A' ) + 10; + } + else if (*in >= 'a' && *in <= 'f') + { + value = ( value << 4u ) + ( *in - 'a' ) + 10; + } + else break; + ++in; + } + if (out)*out = in; + return value; +} + +// ------------------------------------------------------------------------------------ +// Convert just one hex digit +// Return value is UINT_MAX if the input character is not a hex digit. +// ------------------------------------------------------------------------------------ +inline unsigned int HexDigitToDecimal(char in) +{ + unsigned int out = UINT_MAX; + if (in >= '0' && in <= '9') + out = in - '0'; + + else if (in >= 'a' && in <= 'f') + out = 10u + in - 'a'; + + else if (in >= 'A' && in <= 'F') + out = 10u + in - 'A'; + + // return value is UINT_MAX if the input is not a hex digit + return out; +} + +// ------------------------------------------------------------------------------------ +// Convert a hex-encoded octet (2 characters, i.e. df or 1a). +// ------------------------------------------------------------------------------------ +inline uint8_t HexOctetToDecimal(const char* in) +{ + return ((uint8_t)HexDigitToDecimal(in[0])<<4)+(uint8_t)HexDigitToDecimal(in[1]); +} + + +// ------------------------------------------------------------------------------------ +// signed variant of strtoul10 +// ------------------------------------------------------------------------------------ +inline int strtol10( const char* in, const char** out=0) +{ + bool inv = (*in=='-'); + if (inv || *in=='+') + ++in; + + int value = strtoul10(in,out); + if (inv) { + value = -value; + } + return value; +} + +// ------------------------------------------------------------------------------------ +// Parse a C++-like integer literal - hex and oct prefixes. +// 0xNNNN - hex +// 0NNN - oct +// NNN - dec +// ------------------------------------------------------------------------------------ +inline unsigned int strtoul_cppstyle( const char* in, const char** out=0) +{ + if ('0' == in[0]) + { + return 'x' == in[1] ? strtoul16(in+2,out) : strtoul8(in+1,out); + } + return strtoul10(in, out); +} + +// ------------------------------------------------------------------------------------ +// Special version of the function, providing higher accuracy and safety +// It is mainly used by fast_atof to prevent ugly and unwanted integer overflows. +// ------------------------------------------------------------------------------------ +inline uint64_t strtoul10_64( const char* in, const char** out=0, unsigned int* max_inout=0) +{ + unsigned int cur = 0; + uint64_t value = 0; + + bool running = true; + while ( running ) + { + if ( *in < '0' || *in > '9' ) + break; + + const uint64_t new_value = ( value * 10 ) + ( *in - '0' ); + + if (new_value < value) /* numeric overflow, we rely on you */ + return value; + + value = new_value; + + ++in; + ++cur; + + if (max_inout && *max_inout == cur) { + + if (out) { /* skip to end */ + while (*in >= '0' && *in <= '9') + ++in; + *out = in; + } + + return value; + } + } + if (out) + *out = in; + + if (max_inout) + *max_inout = cur; + + return value; +} + +// Number of relevant decimals for floating-point parsing. +#define AI_FAST_ATOF_RELAVANT_DECIMALS 15 + +// ------------------------------------------------------------------------------------ +//! Provides a fast function for converting a string into a float, +//! about 6 times faster than atof in win32. +// If you find any bugs, please send them to me, niko (at) irrlicht3d.org. +// ------------------------------------------------------------------------------------ +template +inline const char* fast_atoreal_move( const char* c, Real& out) +{ + Real f; + + bool inv = (*c=='-'); + if (inv || *c=='+') { + ++c; + } + + f = static_cast( strtoul10_64 ( c, &c) ); + if (*c == '.' || (c[0] == ',' && c[1] >= '0' && c[1] <= '9')) // allow for commas, too + { + ++c; + + // NOTE: The original implementation is highly inaccurate here. The precision of a single + // IEEE 754 float is not high enough, everything behind the 6th digit tends to be more + // inaccurate than it would need to be. Casting to double seems to solve the problem. + // strtol_64 is used to prevent integer overflow. + + // Another fix: this tends to become 0 for long numbers if we don't limit the maximum + // number of digits to be read. AI_FAST_ATOF_RELAVANT_DECIMALS can be a value between + // 1 and 15. + unsigned int diff = AI_FAST_ATOF_RELAVANT_DECIMALS; + double pl = static_cast( strtoul10_64 ( c, &c, &diff )); + + pl *= fast_atof_table[diff]; + f += static_cast( pl ); + } + + // A major 'E' must be allowed. Necessary for proper reading of some DXF files. + // Thanks to Zhao Lei to point out that this if() must be outside the if (*c == '.' ..) + if (*c == 'e' || *c == 'E') { + + ++c; + const bool einv = (*c=='-'); + if (einv || *c=='+') { + ++c; + } + + // The reason float constants are used here is that we've seen cases where compilers + // would perform such casts on compile-time constants at runtime, which would be + // bad considering how frequently fast_atoreal_move is called in Assimp. + Real exp = static_cast( strtoul10_64(c, &c) ); + if (einv) { + exp = -exp; + } + f *= pow(static_cast(10.0f), exp); + } + + if (inv) { + f = -f; + } + out = f; + return c; +} + +// ------------------------------------------------------------------------------------ +// The same but more human. +inline float fast_atof(const char* c) +{ + float ret; + fast_atoreal_move(c, ret); + return ret; +} + + +inline float fast_atof( const char* c, const char** cout) +{ + float ret; + *cout = fast_atoreal_move(c, ret); + + return ret; +} + +inline float fast_atof( const char** inout) +{ + float ret; + *inout = fast_atoreal_move(*inout, ret); + + return ret; +} + + +inline double fast_atod(const char* c) +{ + double ret; + fast_atoreal_move(c, ret); + return ret; +} + + +inline double fast_atod( const char* c, const char** cout) +{ + double ret; + *cout = fast_atoreal_move(c, ret); + + return ret; +} + +inline double fast_atod( const char** inout) +{ + double ret; + *inout = fast_atoreal_move(*inout, ret); + + return ret; +} + +} // end of namespace Assimp + +#endif + diff -ruN assimp--3.0.1270-source-only/code/FileSystemFilter.h assimp--3.0.1270-source-only-fedora/code/FileSystemFilter.h --- assimp--3.0.1270-source-only/code/FileSystemFilter.h 2012-03-11 22:04:36.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/FileSystemFilter.h 2013-05-01 19:29:06.695540600 -0400 @@ -46,7 +46,7 @@ #define AI_FILESYSTEMFILTER_H_INC #include "../include/assimp/IOSystem.hpp" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "ParsingUtils.h" namespace Assimp { diff -ruN assimp--3.0.1270-source-only/code/IFCGeometry.cpp assimp--3.0.1270-source-only-fedora/code/IFCGeometry.cpp --- assimp--3.0.1270-source-only/code/IFCGeometry.cpp 2012-03-20 23:31:58.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/IFCGeometry.cpp 2013-05-29 21:49:47.663383209 -0400 @@ -49,8 +49,8 @@ #include "PolyTools.h" #include "ProcessHelper.h" -#include "../contrib/poly2tri/poly2tri/poly2tri.h" -#include "../contrib/clipper/clipper.hpp" +#include "poly2tri/poly2tri.h" +#include "clipper.hpp" #include diff -ruN assimp--3.0.1270-source-only/code/IRRLoader.cpp assimp--3.0.1270-source-only-fedora/code/IRRLoader.cpp --- assimp--3.0.1270-source-only/code/IRRLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/IRRLoader.cpp 2013-05-01 19:28:57.687187452 -0400 @@ -47,7 +47,7 @@ #include "IRRLoader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "GenericProperty.h" #include "SceneCombiner.h" diff -ruN assimp--3.0.1270-source-only/code/IRRMeshLoader.cpp assimp--3.0.1270-source-only-fedora/code/IRRMeshLoader.cpp --- assimp--3.0.1270-source-only/code/IRRMeshLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/IRRMeshLoader.cpp 2013-05-01 19:28:57.688187492 -0400 @@ -45,7 +45,7 @@ #include "IRRMeshLoader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; using namespace irr; diff -ruN assimp--3.0.1270-source-only/code/IRRShared.cpp assimp--3.0.1270-source-only-fedora/code/IRRShared.cpp --- assimp--3.0.1270-source-only/code/IRRShared.cpp 2012-02-03 05:38:32.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/code/IRRShared.cpp 2013-05-01 19:28:57.690187570 -0400 @@ -47,7 +47,7 @@ #include "IRRShared.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; using namespace irr; diff -ruN assimp--3.0.1270-source-only/code/irrXMLWrapper.h assimp--3.0.1270-source-only-fedora/code/irrXMLWrapper.h --- assimp--3.0.1270-source-only/code/irrXMLWrapper.h 2012-02-03 19:04:08.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/code/irrXMLWrapper.h 2013-05-01 19:52:02.683902014 -0400 @@ -42,7 +42,7 @@ #define INCLUDED_AI_IRRXML_WRAPPER // some long includes .... -#include "./../contrib/irrXML/irrXML.h" +#include "irrXML.h" #include "./../include/assimp/IOStream.hpp" namespace Assimp { @@ -115,7 +115,7 @@ // ---------------------------------------------------------------------------------- //! Returns size of file in bytes - virtual int getSize() { + virtual long getSize() const { return (int)data.size(); } diff -ruN assimp--3.0.1270-source-only/code/LWSLoader.cpp assimp--3.0.1270-source-only-fedora/code/LWSLoader.cpp --- assimp--3.0.1270-source-only/code/LWSLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/LWSLoader.cpp 2013-05-01 19:28:57.702188040 -0400 @@ -47,7 +47,7 @@ #include "LWSLoader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "SceneCombiner.h" #include "GenericProperty.h" diff -ruN assimp--3.0.1270-source-only/code/MaterialSystem.cpp assimp--3.0.1270-source-only-fedora/code/MaterialSystem.cpp --- assimp--3.0.1270-source-only/code/MaterialSystem.cpp 2012-02-03 05:38:32.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/code/MaterialSystem.cpp 2013-05-01 19:28:57.706188197 -0400 @@ -45,7 +45,7 @@ #include "AssimpPCH.h" #include "Hash.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "ParsingUtils.h" #include "MaterialSystem.h" diff -ruN assimp--3.0.1270-source-only/code/MD5Loader.cpp assimp--3.0.1270-source-only-fedora/code/MD5Loader.cpp --- assimp--3.0.1270-source-only/code/MD5Loader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/MD5Loader.cpp 2013-05-01 19:28:57.712188432 -0400 @@ -50,7 +50,7 @@ #include "RemoveComments.h" #include "MD5Loader.h" #include "StringComparison.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "SkeletonMeshBuilder.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/MD5Parser.cpp assimp--3.0.1270-source-only-fedora/code/MD5Parser.cpp --- assimp--3.0.1270-source-only/code/MD5Parser.cpp 2012-02-03 05:38:32.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/code/MD5Parser.cpp 2013-05-01 19:28:57.713188472 -0400 @@ -47,7 +47,7 @@ // internal headers #include "MD5Loader.h" #include "MaterialSystem.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "ParsingUtils.h" #include "StringComparison.h" diff -ruN assimp--3.0.1270-source-only/code/NFFLoader.cpp assimp--3.0.1270-source-only-fedora/code/NFFLoader.cpp --- assimp--3.0.1270-source-only/code/NFFLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/NFFLoader.cpp 2013-05-01 19:28:57.727189020 -0400 @@ -48,7 +48,7 @@ #include "NFFLoader.h" #include "ParsingUtils.h" #include "StandardShapes.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "RemoveComments.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/ObjFileMtlImporter.cpp assimp--3.0.1270-source-only-fedora/code/ObjFileMtlImporter.cpp --- assimp--3.0.1270-source-only/code/ObjFileMtlImporter.cpp 2012-05-01 11:39:52.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/ObjFileMtlImporter.cpp 2013-05-01 19:28:57.730189138 -0400 @@ -45,7 +45,7 @@ #include "ObjFileMtlImporter.h" #include "ObjTools.h" #include "ObjFileData.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" namespace Assimp { diff -ruN assimp--3.0.1270-source-only/code/ObjTools.h assimp--3.0.1270-source-only-fedora/code/ObjTools.h --- assimp--3.0.1270-source-only/code/ObjTools.h 2012-06-03 08:10:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/ObjTools.h 2013-05-01 19:29:06.742542443 -0400 @@ -44,7 +44,7 @@ #ifndef OBJ_TOOLS_H_INC #define OBJ_TOOLS_H_INC -#include "fast_atof.h" +#include "fast_atof_assimp.h" namespace Assimp { diff -ruN assimp--3.0.1270-source-only/code/OFFLoader.cpp assimp--3.0.1270-source-only-fedora/code/OFFLoader.cpp --- assimp--3.0.1270-source-only/code/OFFLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/OFFLoader.cpp 2013-05-01 19:28:57.733189256 -0400 @@ -49,7 +49,7 @@ // internal headers #include "OFFLoader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/OgreXmlHelper.hpp assimp--3.0.1270-source-only-fedora/code/OgreXmlHelper.hpp --- assimp--3.0.1270-source-only/code/OgreXmlHelper.hpp 2012-05-23 11:23:36.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/OgreXmlHelper.hpp 2013-05-01 19:29:05.535495114 -0400 @@ -1,6 +1,6 @@ #include "irrXMLWrapper.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" namespace Assimp { diff -ruN assimp--3.0.1270-source-only/code/PlyParser.cpp assimp--3.0.1270-source-only-fedora/code/PlyParser.cpp --- assimp--3.0.1270-source-only/code/PlyParser.cpp 2012-02-03 05:38:32.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/code/PlyParser.cpp 2013-05-01 19:28:57.745189726 -0400 @@ -45,7 +45,7 @@ #ifndef ASSIMP_BUILD_NO_PLY_IMPORTER #include "PlyLoader.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/Q3BSPZipArchive.h assimp--3.0.1270-source-only-fedora/code/Q3BSPZipArchive.h --- assimp--3.0.1270-source-only/code/Q3BSPZipArchive.h 2012-02-03 19:04:08.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/code/Q3BSPZipArchive.h 2013-05-01 20:01:06.929473083 -0400 @@ -40,7 +40,7 @@ #ifndef AI_Q3BSP_ZIPARCHIVE_H_INC #define AI_Q3BSP_ZIPARCHIVE_H_INC -#include "../contrib/unzip/unzip.h" +#include "unzip.h" #include "../include/assimp/IOStream.hpp" #include "../include/assimp/IOSystem.hpp" #include diff -ruN assimp--3.0.1270-source-only/code/Q3DLoader.cpp assimp--3.0.1270-source-only-fedora/code/Q3DLoader.cpp --- assimp--3.0.1270-source-only/code/Q3DLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/Q3DLoader.cpp 2013-05-01 19:28:57.754190079 -0400 @@ -49,7 +49,7 @@ // internal headers #include "Q3DLoader.h" #include "StreamReader.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/RawLoader.cpp assimp--3.0.1270-source-only-fedora/code/RawLoader.cpp --- assimp--3.0.1270-source-only/code/RawLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/RawLoader.cpp 2013-05-01 19:28:57.755190118 -0400 @@ -49,7 +49,7 @@ // internal headers #include "RawLoader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/SceneCombiner.cpp assimp--3.0.1270-source-only-fedora/code/SceneCombiner.cpp --- assimp--3.0.1270-source-only/code/SceneCombiner.cpp 2012-02-03 05:38:32.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/code/SceneCombiner.cpp 2013-05-01 19:28:57.760190314 -0400 @@ -48,7 +48,7 @@ // ---------------------------------------------------------------------------- #include "AssimpPCH.h" #include "SceneCombiner.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "Hash.h" #include "time.h" diff -ruN assimp--3.0.1270-source-only/code/SMDLoader.cpp assimp--3.0.1270-source-only-fedora/code/SMDLoader.cpp --- assimp--3.0.1270-source-only/code/SMDLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/SMDLoader.cpp 2013-05-01 19:28:57.765190510 -0400 @@ -48,7 +48,7 @@ // internal headers #include "SMDLoader.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "SkeletonMeshBuilder.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/STEPFileReader.cpp assimp--3.0.1270-source-only-fedora/code/STEPFileReader.cpp --- assimp--3.0.1270-source-only/code/STEPFileReader.cpp 2012-06-17 14:15:50.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/STEPFileReader.cpp 2013-05-01 19:28:57.773190824 -0400 @@ -45,7 +45,7 @@ #include "AssimpPCH.h" #include "STEPFileReader.h" #include "TinyFormatter.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; namespace EXPRESS = STEP::EXPRESS; diff -ruN assimp--3.0.1270-source-only/code/STLLoader.cpp assimp--3.0.1270-source-only-fedora/code/STLLoader.cpp --- assimp--3.0.1270-source-only/code/STLLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/STLLoader.cpp 2013-05-01 19:28:57.774190863 -0400 @@ -47,7 +47,7 @@ // internal headers #include "STLLoader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/UnrealLoader.cpp assimp--3.0.1270-source-only-fedora/code/UnrealLoader.cpp --- assimp--3.0.1270-source-only/code/UnrealLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/UnrealLoader.cpp 2013-05-01 19:28:57.782191176 -0400 @@ -53,7 +53,7 @@ #include "UnrealLoader.h" #include "StreamReader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "ConvertToLHProcess.h" using namespace Assimp; diff -ruN assimp--3.0.1270-source-only/code/ValidateDataStructure.cpp assimp--3.0.1270-source-only-fedora/code/ValidateDataStructure.cpp --- assimp--3.0.1270-source-only/code/ValidateDataStructure.cpp 2012-02-03 05:38:32.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/code/ValidateDataStructure.cpp 2013-05-01 19:28:57.784191255 -0400 @@ -49,7 +49,7 @@ // internal headers #include "ValidateDataStructure.h" #include "BaseImporter.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "ProcessHelper.h" // CRT headers diff -ruN assimp--3.0.1270-source-only/code/XFileParser.cpp assimp--3.0.1270-source-only-fedora/code/XFileParser.cpp --- assimp--3.0.1270-source-only/code/XFileParser.cpp 2012-04-23 01:22:42.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/XFileParser.cpp 2013-05-01 19:28:57.790191490 -0400 @@ -46,7 +46,7 @@ #include "XFileParser.h" #include "XFileHelper.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" using namespace Assimp; using namespace Assimp::XFile; diff -ruN assimp--3.0.1270-source-only/code/XGLLoader.cpp assimp--3.0.1270-source-only-fedora/code/XGLLoader.cpp --- assimp--3.0.1270-source-only/code/XGLLoader.cpp 2012-04-23 00:26:28.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/code/XGLLoader.cpp 2013-05-01 19:28:57.792191568 -0400 @@ -46,7 +46,7 @@ #include "XGLLoader.h" #include "ParsingUtils.h" -#include "fast_atof.h" +#include "fast_atof_assimp.h" #include "StreamReader.h" #include "MemoryIOWrapper.h" diff -ruN assimp--3.0.1270-source-only/tools/assimp_cmd/CMakeLists.txt assimp--3.0.1270-source-only-fedora/tools/assimp_cmd/CMakeLists.txt --- assimp--3.0.1270-source-only/tools/assimp_cmd/CMakeLists.txt 2012-02-18 12:55:48.000000000 -0500 +++ assimp--3.0.1270-source-only-fedora/tools/assimp_cmd/CMakeLists.txt 2013-05-28 22:04:01.204077041 -0400 @@ -18,8 +18,9 @@ ) SET_PROPERTY(TARGET assimp_cmd PROPERTY DEBUG_POSTFIX ${DEBUG_POSTFIX}) - -TARGET_LINK_LIBRARIES( assimp_cmd assimp ${ZLIB_LIBRARIES}) +INCLUDE_DIRECTORIES(${IRRXML_INCLUDE_PATH}) +TARGET_LINK_LIBRARIES( assimp_cmd assimp ${ZLIB_LIBRARIES} ${POLY2TRI_LIB}) +TARGET_LINK_LIBRARIES( assimp_cmd ${IRRXML_LIB}) SET_TARGET_PROPERTIES( assimp_cmd PROPERTIES OUTPUT_NAME assimp ) diff -ruN assimp--3.0.1270-source-only/tools/assimp_cmd/ImageExtractor.cpp assimp--3.0.1270-source-only-fedora/tools/assimp_cmd/ImageExtractor.cpp --- assimp--3.0.1270-source-only/tools/assimp_cmd/ImageExtractor.cpp 2012-03-21 00:41:40.000000000 -0400 +++ assimp--3.0.1270-source-only-fedora/tools/assimp_cmd/ImageExtractor.cpp 2013-05-01 20:06:46.771944353 -0400 @@ -44,7 +44,7 @@ */ #include "Main.h" -#include <../code/fast_atof.h> +#include #include <../code/StringComparison.h> const char* AICMD_MSG_DUMP_HELP_E =