From: <wel...@us...> - 2011-05-12 04:41:48
|
Revision: 7250 http://planeshift.svn.sourceforge.net/planeshift/?rev=7250&view=rev Author: weltall2 Date: 2011-05-12 04:41:41 +0000 (Thu, 12 May 2011) Log Message: ----------- updated fparser to 4.4.2 * Complex-only internal functions were being not properly disabled in the non-complex versions of the parser, causing mayhem if they were called from those. Modified Paths: -------------- trunk/src/tools/fparser/docs/fparser.html trunk/src/tools/fparser/fp_opcode_add.inc trunk/src/tools/fparser/fparser.cpp trunk/src/tools/fparser/fparser.h trunk/src/tools/fparser/fparser_gmpint.h trunk/src/tools/fparser/fparser_mpfr.h trunk/src/tools/fparser/fpaux.h trunk/src/tools/fparser/fpconfig.h trunk/src/tools/fparser/fpoptimizer.cpp trunk/src/tools/fparser/fptypes.h Modified: trunk/src/tools/fparser/docs/fparser.html =================================================================== --- trunk/src/tools/fparser/docs/fparser.html 2011-05-12 04:22:18 UTC (rev 7249) +++ trunk/src/tools/fparser/docs/fparser.html 2011-05-12 04:41:41 UTC (rev 7250) @@ -3,11 +3,11 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <link href="style.css" rel="stylesheet" type="text/css" title="normal" media=screen> - <title>Function Parser for C++ v4.4.1 : Documentation</title> + <title>Function Parser for C++ v4.4.2 : Documentation</title> </head> <body> -<h1>Function Parser for C++ v4.4.1 </h1> +<h1>Function Parser for C++ v4.4.2 </h1> <p>Authors: Juha Nieminen (<a href="http://iki.fi/warp/">http://iki.fi/warp/</a>), @@ -67,6 +67,13 @@ <a name="whatsnew"></a> <h2>What's new</h2> +<p>What's new in v4.4.2 + <ul> + <li>Complex-only internal functions were being not properly disabled in the + non-complex versions of the parser, causing mayhem if they were called + from those. + </ul> + <p>What's new in v4.4.1 <ul> <li>Added missing documentation on complex literals. @@ -117,6 +124,8 @@ <p>Different numerical types are supported: <code>double</code>, <code>float</code>, <code>long double</code>, <code>long int</code>, + <code>std::complex</code> (of types <code>double</code>, + <code>float</code> and <code>long double</code>), multiple-precision floating point numbers using the MPFR library, and arbitrary precision integers using the GMP library. (Note that it's not necessary for these two libraries to exist in the system in order Modified: trunk/src/tools/fparser/fp_opcode_add.inc =================================================================== --- trunk/src/tools/fparser/fp_opcode_add.inc 2011-05-12 04:22:18 UTC (rev 7249) +++ trunk/src/tools/fparser/fp_opcode_add.inc 2011-05-12 04:41:41 UTC (rev 7250) @@ -1,4 +1,4 @@ -/* Function Parser for C++ v4.4.1 +/* Function Parser for C++ v4.4.2 NOTE: Do not include this file in your project. The fparser.cc file #includes Modified: trunk/src/tools/fparser/fparser.cpp =================================================================== --- trunk/src/tools/fparser/fparser.cpp 2011-05-12 04:22:18 UTC (rev 7249) +++ trunk/src/tools/fparser/fparser.cpp 2011-05-12 04:41:41 UTC (rev 7250) @@ -1,5 +1,5 @@ /***************************************************************************\ -|* Function Parser for C++ v4.4.1 *| +|* Function Parser for C++ v4.4.2 *| |*-------------------------------------------------------------------------*| |* Copyright: Juha Nieminen, Joel Yliluoma *| |* *| @@ -399,7 +399,7 @@ return value also contains the internal function opcode (defined in fptypes.h) that matches the name. */ - unsigned readIdentifierForFloatType(const char* input) + unsigned readIdentifierCommon(const char* input) { /* Assuming unsigned = 32 bits: 76543210 76543210 76543210 76543210 @@ -417,21 +417,27 @@ return 0; } - inline unsigned readIdentifierForIntType(const char* input) - { - const unsigned value = readIdentifierForFloatType(input); - if((value & 0x80000000U) != 0 && - !Functions[(value >> 16) & 0x7FFF].okForInt()) - return value & 0xFFFF; - return value; - } - template<typename Value_t> inline unsigned readIdentifier(const char* input) { - return IsIntType<Value_t>::result - ? readIdentifierForIntType(input) - : readIdentifierForFloatType(input); + const unsigned value = readIdentifierCommon(input); + if( (value & 0x80000000U) != 0) // Function? + { + // Verify that the function actually exists for this datatype + if(IsIntType<Value_t>::result + && !Functions[(value >> 16) & 0x7FFF].okForInt()) + { + // If it does not exist, return it as an identifier instead + return value & 0xFFFFu; + } + if(!IsComplexType<Value_t>::result + && Functions[(value >> 16) & 0x7FFF].complexOnly()) + { + // If it does not exist, return it as an identifier instead + return value & 0xFFFFu; + } + } + return value; } // Returns true if the entire string is a valid identifier Modified: trunk/src/tools/fparser/fparser.h =================================================================== --- trunk/src/tools/fparser/fparser.h 2011-05-12 04:22:18 UTC (rev 7249) +++ trunk/src/tools/fparser/fparser.h 2011-05-12 04:41:41 UTC (rev 7250) @@ -1,5 +1,5 @@ /***************************************************************************\ -|* Function Parser for C++ v4.4.1 *| +|* Function Parser for C++ v4.4.2 *| |*-------------------------------------------------------------------------*| |* Copyright: Juha Nieminen, Joel Yliluoma *| |* *| Modified: trunk/src/tools/fparser/fparser_gmpint.h =================================================================== --- trunk/src/tools/fparser/fparser_gmpint.h 2011-05-12 04:22:18 UTC (rev 7249) +++ trunk/src/tools/fparser/fparser_gmpint.h 2011-05-12 04:41:41 UTC (rev 7250) @@ -1,5 +1,5 @@ /***************************************************************************\ -|* Function Parser for C++ v4.4.1 *| +|* Function Parser for C++ v4.4.2 *| |*-------------------------------------------------------------------------*| |* Copyright: Juha Nieminen *| \***************************************************************************/ Modified: trunk/src/tools/fparser/fparser_mpfr.h =================================================================== --- trunk/src/tools/fparser/fparser_mpfr.h 2011-05-12 04:22:18 UTC (rev 7249) +++ trunk/src/tools/fparser/fparser_mpfr.h 2011-05-12 04:41:41 UTC (rev 7250) @@ -1,5 +1,5 @@ /***************************************************************************\ -|* Function Parser for C++ v4.4.1 *| +|* Function Parser for C++ v4.4.2 *| |*-------------------------------------------------------------------------*| |* Copyright: Juha Nieminen *| \***************************************************************************/ Modified: trunk/src/tools/fparser/fpaux.h =================================================================== --- trunk/src/tools/fparser/fpaux.h 2011-05-12 04:22:18 UTC (rev 7249) +++ trunk/src/tools/fparser/fpaux.h 2011-05-12 04:41:41 UTC (rev 7250) @@ -1,5 +1,5 @@ /***************************************************************************\ -|* Function Parser for C++ v4.4.1 *| +|* Function Parser for C++ v4.4.2 *| |*-------------------------------------------------------------------------*| |* Copyright: Juha Nieminen, Joel Yliluoma *| |* *| Modified: trunk/src/tools/fparser/fpconfig.h =================================================================== --- trunk/src/tools/fparser/fpconfig.h 2011-05-12 04:22:18 UTC (rev 7249) +++ trunk/src/tools/fparser/fpconfig.h 2011-05-12 04:41:41 UTC (rev 7250) @@ -1,5 +1,5 @@ /***************************************************************************\ -|* Function Parser for C++ v4.4.1 *| +|* Function Parser for C++ v4.4.2 *| |*-------------------------------------------------------------------------*| |* Copyright: Juha Nieminen *| |* *| Modified: trunk/src/tools/fparser/fpoptimizer.cpp =================================================================== --- trunk/src/tools/fparser/fpoptimizer.cpp 2011-05-12 04:22:18 UTC (rev 7249) +++ trunk/src/tools/fparser/fpoptimizer.cpp 2011-05-12 04:41:41 UTC (rev 7250) @@ -1,5 +1,5 @@ /***************************************************************************\ -|* Function Parser for C++ v4.4.1 *| +|* Function Parser for C++ v4.4.2 *| |*-------------------------------------------------------------------------*| |* Function optimizer *| |*-------------------------------------------------------------------------*| Modified: trunk/src/tools/fparser/fptypes.h =================================================================== --- trunk/src/tools/fparser/fptypes.h 2011-05-12 04:22:18 UTC (rev 7249) +++ trunk/src/tools/fparser/fptypes.h 2011-05-12 04:41:41 UTC (rev 7250) @@ -1,5 +1,5 @@ /***************************************************************************\ -|* Function Parser for C++ v4.4.1 *| +|* Function Parser for C++ v4.4.2 *| |*-------------------------------------------------------------------------*| |* Copyright: Juha Nieminen, Joel Yliluoma *| |* *| @@ -110,6 +110,7 @@ inline bool enabled() const { return flags != 0; } inline bool okForInt() const { return (flags & OkForInt) != 0; } + inline bool complexOnly() const { return (flags & ComplexOnly) != 0; } }; #ifndef FP_DISABLE_EVAL This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |