[SCM] GiNaC -- a C++ library for symbolic computations branch, master, updated. release_1-4-0-250-gc0fcba1
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, master has been updated via c0fcba137d26486085ed5d4104b34d2c44978693 (commit) via 866b3eb23253a272788d8791b1ed023e63674d50 (commit) via 9177e7536ea82b739c72d3e41a319af7dbc15661 (commit) via a6e5a7a5974dc95afe71c077f6a5e66b322c9d2c (commit) via ab6a9475aef3d8f97a1b520731ad528603946410 (commit) via 4b8098a96848d75490e04ba4746f67acb74daa9f (commit) via 94ead6345f31939c9c9eff70ce88d74cf36a8004 (commit) via c4da34c70ce1b9e3803317ebfe48b162cf9d3408 (commit) via e56d94889fcfb729ad15d5088d5db3e9409bb6a4 (commit) via adb222a4d30fade5b53e94e2750b8c0ba83e90b6 (commit) via d6ab150eb3016ddb416f0533606ae3a393003e9e (commit) via 3aec0ba298693329c1194e547043fef1a78b1b0d (commit) from f5abf61d2cb1a1d1809d270a24fa098575b172c4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c0fcba137d26486085ed5d4104b34d2c44978693 Author: Alexei Sheplyakov <alexei.sheplyakov@gmail.com> Date: Wed Jan 6 19:55:43 2010 +0200 Use C style cast when converting void* into function pointer. Building GiNaC 1.5.5 with GCC 3.4 fails with the following error: libtool: compile: ccache g++-3.4 -DHAVE_CONFIG_H -I. -I../../ginac -I../config -I/home/pc7135/varg/target/x86_64-linux-gnu/include -O2 -g -Wall -pipe -MT builtin_fcns.lo -MD -MP -MF .deps/builtin_fcns.Tpo -c ../../ginac/parser/builtin_fcns.cpp -fPIC -DPIC -o .libs/builtin_fcns.o ../../ginac/parser/builtin_fcns.cpp: In function `GiNaC::ex (* GiNaC::encode_serial_as_reader_func(unsigned int))(const GiNaC::exvector&)': /home/pc7135/varg/tmp/build/GiNaC/build-linux-gcc-3.4/ginac/../../ginac/parser/builtin_fcns.cpp|67| error: ISO C++ forbids casting between pointer-to-function and pointer-to-object make[2]: *** [builtin_fcns.lo] Error 1 The C++98 standard [expr.reinterpret.cast] does not allow reinterpret_cast<function_pointer>(void*) reinterpret_cast<void*>(function_pointer) But the ability to do so is important for a lot of practical uses. So soon after the C++98 standard was approved, a language defect report was filed on this topic, see http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#195 The result is that compilers will be allowed to support reinterpret_cast conversions of function pointers to other (pointers) types, and vice a versa. Such conversions work with *current* compilers (GCC 4.x), but don't work with older ones, hence this patch. commit 866b3eb23253a272788d8791b1ed023e63674d50 Author: Jens Vollinga <jensv@nikhef.nl> Date: Sun Aug 9 23:38:48 2009 +0200 Added get_builtin_reader() that parses only the builtin GiNaC functions and pow, sqrt, and power. commit 9177e7536ea82b739c72d3e41a319af7dbc15661 Author: Jens Vollinga <jensv@nikhef.nl> Date: Sun Aug 9 23:27:10 2009 +0200 Fixed include of stdint.h (parser.cpp needs the header as well). commit a6e5a7a5974dc95afe71c077f6a5e66b322c9d2c Author: Alexei Sheplyakov <varg@metalica.kh.ua> Date: Sat Aug 8 11:43:12 2009 +0300 Fix the compliation error *for real* ... and restore performance Commit 8bf0597dde55e4c94a2ff39f1d8130902e3d7a9b (titled as 'Fixed the parser such that it can read in user defined classes again.') made the parser a bit slower, especially if the input contains many terms of user-defined type. The reason for that is quite simple: we throw and catch an exception every time we construct an object of user-defined type: // dirty hack to distinguish between serial numbers of functions and real // pointers. GiNaC::function* f = NULL; try { unsigned serial = (unsigned)(unsigned long)(void *)(reader->second); f = new GiNaC::function(serial, args); } catch ( std::runtime_error ) { if ( f ) delete f; ex ret = reader->second(args); return ret; } Fortunately functions are aligned and we can use much more efficient technique to distinguish between serial and pointers to functions. commit ab6a9475aef3d8f97a1b520731ad528603946410 Author: Alexei Sheplyakov <varg@metalica.kh.ua> Date: Fri Aug 7 23:22:18 2009 +0300 Fix the compliation error *for real* commit 4b8098a96848d75490e04ba4746f67acb74daa9f Author: Jens Vollinga <jensv@balin.nikhef.nl> Date: Fri Jul 31 17:54:16 2009 +0200 Fixed memory leak. commit 94ead6345f31939c9c9eff70ce88d74cf36a8004 Author: Jens Vollinga <jensv@balin.nikhef.nl> Date: Fri Jul 31 15:29:17 2009 +0200 Fixed the fix in commit f059ebe117d15292e0d262e6e8e232e835c7e33c. commit c4da34c70ce1b9e3803317ebfe48b162cf9d3408 Author: Jens Vollinga <jensv@balin.nikhef.nl> Date: Fri Jul 31 14:41:08 2009 +0200 Fixed dirty hack in parser to distinguish between serial numbers and pointers. commit e56d94889fcfb729ad15d5088d5db3e9409bb6a4 Author: Jens Vollinga <jensv@balin.nikhef.nl> Date: Fri Jul 31 12:48:58 2009 +0200 Fixed the parser such that it can read in user defined classes again. Fixed default reader to parse also pow, sqrt and power. commit adb222a4d30fade5b53e94e2750b8c0ba83e90b6 Author: Jens Vollinga <jensv@balin.nikhef.nl> Date: Fri Jul 31 11:14:01 2009 +0200 Fixed cast that caused compile error on 64bit machines. commit d6ab150eb3016ddb416f0533606ae3a393003e9e Author: Jens Vollinga <jensv@nikhef.nl> Date: Wed Jul 15 08:26:33 2009 +0200 Allow user defined functions to be parsed. This patch is an ugly hack that does the same as the commit f38cbcd651246fb5c1294705d29399f3cbfddaf5 but without changing the ABI (so it can be used in ginac_1-5). commit 3aec0ba298693329c1194e547043fef1a78b1b0d Author: Alexei Sheplyakov <Alexei.Sheplyakov@gmail.com> Date: Thu Dec 9 20:42:50 2010 +0200 Revert "Changed the parser such that it understands all defined functions" This reverts commit f38cbcd651246fb5c1294705d29399f3cbfddaf5, which broke parsing user-defined classes. ----------------------------------------------------------------------- Summary of changes: INSTALL | 3 +- configure.ac | 4 + ginac/Makefile.am | 18 +++++- ginac/function.pl | 8 ++- ginac/parser/builtin_fcns.def | 14 ++++ ginac/parser/default_reader.tpl | 145 +++++++++++++++++++++++++++++++++++++++ ginac/parser/parse_context.cpp | 20 ------ ginac/parser/parse_context.h | 32 +++++++-- ginac/parser/parser.cpp | 42 +++++++++++- 9 files changed, 253 insertions(+), 33 deletions(-) create mode 100644 ginac/parser/builtin_fcns.def create mode 100644 ginac/parser/default_reader.tpl hooks/post-receive -- GiNaC -- a C++ library for symbolic computations
participants (1)
-
git@ginac.de