Commit graph

31 commits

Author SHA1 Message Date
William S Fulton
1079ba7ff8 Merge branch 'm7thon-python23-division-operators'
* m7thon-python23-division-operators:
  [Python] improved wrapping of division operators
2016-11-26 22:00:21 +00:00
William S Fulton
4f777b181c Correct notes on customising Python builtin comparison operators
Also add example for python:compare feature
2016-08-22 07:22:40 +01:00
William S Fulton
4f681f751d Update Python docs on builtin slots 2016-08-18 07:11:00 +01:00
Michael Thon
59f72544fa [Python] improved wrapping of division operators
The division operators `operator /` and `operator /=` are now
wrapped as `__truediv__` and `__itruediv__`, with alias methods
`__div__` and `__idiv__` generated for compatibility with Python 2.

This allows correct wrapping independent of the `-py3` flag, and
fixes these operators for Python 2 when using `from __future__
import division` (this was broken).
2016-06-12 23:29:31 +02:00
William S Fulton
5e6ab1d61d Merge branch 'ejulien-python_operator_overload_test_suite'
* ejulien-python_operator_overload_test_suite:
  Add __str__ to operator_overload testcase for python builtin
  Python operator_overload runtime testcase cleanup
  Work around a limitation of the Python binding generator related to the += family of operators.
  Fix Python 3 division member operator when -builtin is not used.
  Fix class member division operator.
  Remove the PY3BUILTIN switch as its behavior can be achieved with the existing SWIG_FEATURES=-builtin switch.
  Implement the operator overload test suite for Python.

Conflicts:
	Examples/test-suite/operator_overload.i
2016-05-05 23:01:35 +01:00
Emmanuel Julien
8df7c5fb7e Fix Python 3 division member operator when -builtin is not used. 2016-02-22 16:30:24 +01:00
Emmanuel Julien
cf370fb504 Fix class member division operator.
Define the nb_divide/nb_inplace_divide slots in the interface and use it them as nb_divide/nb_inplace_divide for Python 2.x and as nb_true_divide/nb_inplace_trus_divide for Python 3.x.

The Python 3.x nb_floor_divide/nb_inplace_floor_divide slots (operator // in Python) are not populated by the interface.
2016-02-22 14:54:19 +01:00
William S Fulton
625a405b8e Add python inplace operator caveats to pyopers.swg
Observations reported in issue #562
2015-12-05 19:25:18 +00:00
Stefan Zager
498367bc9d From swig-user 7/6/11: fix closure for tp_call.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12761 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-07-20 15:20:24 +00:00
Stefan Zager
5c4f47302a Initialize all fields of PyTypeObject, to eliminate compiler warnings. Fixed typo in docs.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12612 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-04-05 23:16:13 +00:00
Stefan Zager
6cecfe4fcf Added documentation about tp_richcompare.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/szager-python-builtin@12578 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-03-31 04:12:29 +00:00
Stefan Zager
0aa8729d50 Added more documentation of -builtin.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/szager-python-builtin@12571 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-03-30 07:59:52 +00:00
Stefan Zager
3d444101d1 A slew of changes based on William Fulton's code review.
- Fixed naming conventions; SwigPyBuiltin is used a lot
- Removed use of std::vector
- builtin.swg isn't included if -builtin isn't specified
- Changed many feature names to use a "python:" prefix
- Eliminated static vars in std_pair.i
- Eliminated C++-style comments (//)
- Enabled autodoc and docstring with -builtin
- Fixed non-ansi generated C code
- Detect and complain if two incompatible swig modules are loaded
- Removed argcargvtest_runme3.py, and fixed argcargvtest_runme.py
  so that 2to3 handles it better
- Removed anonymous namespaces
- Eliminated builtin_init typemaps; consolidated functionality into
  SWIG_Python_NewPointerObj
- Eliminate printf warnings from %U conversion character by switching
  to %S, which works just as well
- Fixed li_std_set_runme.py for python3, which returns set members in
  a different order from python2





git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/szager-python-builtin@12562 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-03-29 06:57:02 +00:00
Stefan Zager
d4b8048e9a Stopped using template class SwigPyBuiltin, because it caused problems
when two typedef-equivalent types are wrapped as separate classes.

Now failing on refcount.cpptest.



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/szager-python-builtin@12392 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-01-12 00:43:01 +00:00
Stefan Zager
3a86f2068f Added support for multiple inheritance. Not as hard as I feared.
Apply operator features to both the operator name, and the renamed
"__*__" method.  That's the only way to hit all corners.

Added support for %pythonnondynamic.  I believe this implementation
is more correct than the existing implementation, but I'm still
waiting for an adjudication on the behavior of the python_nondynamic
test.

Current list of unsupported features that require minor tweaks
to the test suite:

- 'this' member variable is obsolete.

- No support for reversible operator overloads (e.g., __radd__).  You
can still support this:

a = MyString("foo")
b = "bar"
c = a + b

... but you can't do this:

a = "foo"
b = MyString("bar")
c = a + b

With the tweaks, the test suite now fails on python_nondynamic.



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/szager-python-builtin@12353 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-12-20 23:35:18 +00:00
Stefan Zager
8a7ad756d0 Added sequence and mapping support for builtin types.
Fixed object ownership in %pyswigbinoperator.

Test suite now fails on li_std_vector_extra.



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/szager-python-builtin@12346 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-12-14 21:11:02 +00:00
Stefan Zager
b1682d4d80 Added support for operator overrides (PyNumberMethods) and
member variable access.

test suite now croaks on inplaceadd.



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/szager-python-builtin@12345 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-12-14 00:08:45 +00:00
Haoyu Bai
8f84447860 Commited SF#2158938: change all SWIG symbols start with Py to a new name.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10961 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2008-12-03 18:43:44 +00:00
Haoyu Bai
3d8ddfc442 Merged the Python 3.0 support branch. The merging progress is not so smooth, so hope this commit won't make anything broken.
This is the (incomplemete) log produced by svnmerge.py:

Merged revisions 10405-10409,10420-10422,10426,10438,10445,10451,10454-10465,10467,10473-10475,10485,10488-10489,10493-10495,10497,10509-10510,10513-10514,10517,10520,10525,10528-10529,10533-10535,10554-10557,10570,10573,10593,10614,10666-10669,10673,10678,10687,10690,10704-10706,10731,10744,10750-10752,10755,10759,10770,10775-10776,10813,10819 via svnmerge from 
https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2008-bhy



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10834 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2008-09-11 17:18:07 +00:00
William S Fulton
b697a8fc75 operator bool mapping to __nonzero__ as per Josh Cherry suggestion
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10315 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2008-03-20 22:01:39 +00:00
Marcelo Matus
97775a5c80 more fixes to use one line macro when possible
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8769 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2006-02-10 09:00:00 +00:00
Marcelo Matus
c4337c7356 add operator aliases
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8277 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2006-01-07 09:36:58 +00:00
Marcelo Matus
6e95b6433b add macros/names to avoid numeric warning codes. use them in tcl,perl,ruby and python
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8274 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2006-01-07 06:59:32 +00:00
Marcelo Matus
50ae3fe87e add C++ operator aliases
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7924 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2005-12-04 05:08:50 +00:00
Marcelo Matus
307f0104c6 recognize the and/not/or keywords and operator names
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7746 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2005-10-27 15:02:56 +00:00
Marcelo Matus
54ba818937 fixes for new flag attribute convention
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7605 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2005-10-07 13:19:06 +00:00
Marcelo Matus
b1ed62fc81 global fix for operator*(), now mapped as __ref__
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6859 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2004-12-11 23:38:07 +00:00
Marcelo Matus
37c727888b fixes for operator*()
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6858 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2004-12-11 10:20:05 +00:00
Marcelo Matus
a4a7a2ff1f better error messages, more comments, clean up for the next major modifications
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6284 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2004-10-02 01:43:17 +00:00
Marcelo Matus
fd1c9fb316 fix inplace python opers
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5859 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2004-04-09 21:58:47 +00:00
Marcelo Matus
68024b15ce Reducing pyrun.swg and splitting python.swg into different files
for clarity and for easier maintainance.

pyrun.swg almost the same than 1.3.20, therefore there will be
compatible again.

code generated is reduced by the use and reuse of %fragments.

as usual, all the test-suite is compiling and a much bigger
"test project" too.

with the new typemaps definition should be much eaiser and
uniform add stl/std and user types.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5706 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2004-02-10 09:50:24 +00:00