Commit graph

63 commits

Author SHA1 Message Date
William S Fulton
c5610fd4b3 Guile - Add error checking to SWIGTYPE and SWIGTYPE & in typemaps
To prevent seg faults when passing #nil to these parameter types.
2022-09-16 18:52:52 +01:00
William S Fulton
e139a36511 SWIGTYPE && input typemaps now assume object has been moved
Replicated Java implementation.

Fully implemented for:
- C#
- D
- Guile
- Javascript (UTL)
- Lua
- MzScheme
- Octave (UTL)
- Perl (UTL)
- PHP
- Python (UTL)
- Ruby (UTL)
- Tcl (UTL)

PHP std::auto_ptr std::unique_ptr minor tweaks and testcase corrections
2022-08-31 19:40:14 +01:00
William S Fulton
c10a84c775 Cosmetic stray semi-colon removal after %typemap using quotes 2022-08-31 19:40:13 +01:00
Olly Betts
336de2f745 [guile] Stop using deprecated aliases
The replacements should all work with Guile 1.8.0, which is the
oldest version we still aim to support.

Fixes #1624
2022-08-04 10:39:02 +12:00
William S Fulton
bf36bf7d8a Movable and move-only types supported in "out" typemaps.
Enhance SWIGTYPE "out" typemaps to use std::move when copying
objects, thereby making use of move semantics when wrapping a function returning
by value if the returned type supports move semantics.

Wrapping functions that return move only types 'by value' now work out the box
without having to provide custom typemaps.

The implementation removed all casts in the "out" typemaps to allow the compiler to
appropriately choose calling a move constructor, where possible, otherwise a copy
constructor. The implementation alsoand required modifying SwigValueWrapper to
change a cast operator from:

  SwigValueWrapper::operator T&() const;

to

  #if __cplusplus >=201103L
    SwigValueWrapper::operator T&&() const;
  #else
    SwigValueWrapper::operator T&() const;
  #endif

This is not backwards compatible for C++11 and later when using the valuewrapper feature
if a cast is explicitly being made in user supplied "out" typemaps. Suggested change
in custom "out" typemaps for C++11 and later code:

1. Try remove the cast altogether to let the compiler use an appropriate implicit cast.
2. Change the cast, for example, from static_cast<X &> to static_cast<X &&>, using the
   __cplusplus macro if all versions of C++ need to be supported.

Issue #999
Closes #1044

More about the commit:
Added some missing "varout" typemaps for Ocaml which was falling back to
use "out" typemaps as they were missing.

Ruby std::set fix for SwigValueWrapper C++11 changes.
2022-06-30 17:26:48 +01:00
Olly Betts
7ec2f89fe2
Remove redundant NULL checks before free()/delete (#2184)
Remove redundant NULL checks before free()/delete

The ISO C and C++ standards guarantee that it's safe to call these
on a NULL pointer, so it's not necessary for the calling code to
also check.

Fixes https://sourceforge.net/p/swig/feature-requests/70/
2022-01-29 22:03:48 +13:00
William S Fulton
13158bda9a Member function pointer typemap tweaks
Use sizeof variable name rather than variable type.
Workaround Visual C++ unable to parse some complex C++11 types, such as
  sizeof(short (Funcs::*)(bool) const &&)
2021-04-26 22:32:52 +01:00
William S Fulton
eb151e43be Fix overloading for non-pointers and NULL - Guile 2018-12-30 09:26:33 +00:00
Geert Janssens
d1f7054b7e guile - replace obsolete scm_listify with scm_list_n
scm_list_n is available in all guile versions supported by swig, while
scm_listify no longer is in guile 2.2
2018-04-20 08:36:48 +02:00
William S Fulton
72ba741d1c Fix wrapping of references/pointers and qualifiers to member pointers
Also fix Go wrapping of member const function pointers.
2017-03-16 21:04:38 +00:00
William S Fulton
cf3be359cf Add c++11 strongly typed enum support for Guile 2014-11-28 23:27:22 +00:00
William S Fulton
bcb7aee022 Merge branch 'master' into gsoc2009-matevz
Conflicts:
	Examples/Makefile.in
	Examples/guile/Makefile.in
	Lib/php/php.swg
	Makefile.in
	Source/CParse/parser.y
	configure.ac
2013-10-10 07:26:09 +01:00
Geert Janssens
d689d9a860 Fix deprecation warnings for test suite under guile 2.0 2013-04-28 22:06:24 +02:00
Geert Janssens
b819d2a91e Drop guilegh interface
All of guile's interface files now use the scm interface.
This should not affect any users. Swig generated code
using the scm interface can be mixed with gh interface
using user code.
It does simplify maintenance of the guile swig code though.
2013-04-28 22:06:24 +02:00
Geert Janssens
2c23a5d2cd Add support for guile 2.0: update swg and interface files
Note: only the scm interface is considered.
2013-04-28 22:06:22 +02:00
William S Fulton
e805d5f925 Merge branch 'master' into gsoc2009-matevz
parser.y still to be fixed up

Conflicts:
	Doc/Devel/engineering.html
	Examples/Makefile.in
	Lib/allegrocl/allegrocl.swg
	Lib/csharp/csharp.swg
	Lib/csharp/enums.swg
	Lib/csharp/enumsimple.swg
	Lib/csharp/enumtypesafe.swg
	Lib/java/java.swg
	Lib/python/pydocs.swg
	Lib/r/rtype.swg
	Source/Include/swigwarn.h
	Source/Modules/octave.cxx
	Source/Modules/python.cxx
	Source/Modules/ruby.cxx
	Source/Swig/scanner.c
	Source/Swig/stype.c
	Source/Swig/swig.h
	configure.ac
2013-01-28 07:01:37 +00:00
William S Fulton
9bd2fb2cad Add rvalue reference typemaps 2013-01-24 20:27:28 +00:00
William S Fulton
924be5044d cosmetic style fix on pointer declarations
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12716 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-05-25 17:13:45 +00:00
William S Fulton
ac06518319 Patch #3191625 fixing overloading of integer types.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12692 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-05-19 19:49:48 +00:00
William S Fulton
ef865e06d5 Added some missing multi-argument typemaps: (char *STRING, size_t LENGTH) and (char *STRING, int LENGTH) - Java patch is from Volker Grabsch. Elements of the primitive_types.i testcase for this moved into char_binary.i. Documentation for this enhanced.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12393 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2011-01-14 19:06:43 +00:00
William S Fulton
bdb136d611 Change typemap matching rules for the default type (SWIGTYPE) to follow template partial specialization type deduction. Fixes some containers of const pointers. SWIGTYPE*& typemps removed and replaced with SWIGTYPE *const&.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11958 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-04-01 18:26:37 +00:00
William S Fulton
4308dd03cf SWIG license change - The Examples and Lib move to a very permissive license in the LICENSE file, removing the BSD license restrictions as agreed by committers since it was inadvertently introduced. Remove some examples where the impact of the license change is not clear.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11874 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2010-02-27 23:26:02 +00:00
William S Fulton
336b50b43d Add the optimal attribute to the out typemap for more optimal code generation when returning objects by value
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10450 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2008-05-14 22:12:31 +00:00
Matthias Köppe
c102472282 Another fix for test case apply_strings, for guile -gh, by adding explicit casts to the appropriate .
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10026 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2007-10-23 00:11:16 +00:00
Matthias Köppe
e6a07ee55b Fix testcases apply_signed_char and apply_strings by adding explicit casts to the appropriate .
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10022 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2007-10-22 21:49:36 +00:00
William S Fulton
389b4813ca more %apply char* fixes
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@9093 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2006-05-05 23:26:57 +00:00
William S Fulton
2d24918a97 ensure %apply with char*, unsigned char* and signed char* works
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@9072 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2006-05-03 20:58:19 +00:00
William S Fulton
49be05f4fd Common template for head of each file detailing licence, distribution and authors information
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8973 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2006-03-07 00:14:10 +00:00
Matthias Köppe
6cbd9a9b3c [Guile -scm] Add typemaps for "long long"; whether the generated code
compiles, however, depends on the version and configuration of Guile.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8936 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2006-03-03 04:00:31 +00:00
Matthias Köppe
b63f275984 [MzScheme] Typemaps for all integral types now accept the full range
of integral values, and they signal an error when a value outside the
valid range is passed.

[Guile] Typemaps for all integral types now signal an error when a
value outside the valid range is passed.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8844 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2006-02-19 19:28:42 +00:00
Matthias Köppe
6ba7c1600b Define and use %argument_fail, %as_voidptr.
Use SWIG_IsOK, SWIG_CheckState.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8622 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2006-01-29 20:36:57 +00:00
Matthias Köppe
edba3add6b Add support for member function pointers.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8617 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2006-01-29 18:47:18 +00:00
William S Fulton
b83ac2646b Fix for typedef to void *
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8529 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2006-01-23 21:47:16 +00:00
Matthias Köppe
b29ce687b3 Fix last change, add throw typemap for enums.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7536 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2005-09-26 21:46:23 +00:00
Matthias Köppe
8e61ee737c Added throw typemaps.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7531 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2005-09-25 21:36:01 +00:00
Matthias Köppe
47f0f21ebf Fix handling of anonymous-enum variables.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7276 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2005-06-11 16:36:46 +00:00
Matthias Köppe
6edd2e4561 Fix for global "const char *" variables.
Fix testcases arrays_dimensionless, arrays_global.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7272 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2005-06-10 11:43:46 +00:00
Matthias Köppe
c0c0689298 Fix typecheck for SWIGTYPE.
This fixes the following bug:

Luigi Ballabio wrote:

> The following interface produces Guile wrappers which
> do not compile:
>
> %module Foo
> class Foo {};
> class Bar : public Foo {};
> void baz(Foo f);
>
> The reason seems to be the function baz() taking a Foo by value, which
> causes functions to be emitted in the CONVERSIONS section such as:
>
> static void *_BarTo_Foo(void *x) {
>      return (void *)((Foo)  ((Bar) x));
> }
> static void *_p_BarTo_p_Foo(void *x) {
>      return (void *)((Foo *)  ((Bar *) x));
> }
>
> of which the former doesn't compile; on the other hand, only the second
> function is emitted if baz() takes a Foo by const reference.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7266 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2005-06-10 10:31:18 +00:00
Matthias Köppe
05a6e3b6da Remove %apply for size_t; add %typecheck for size_t and ptrdiff_t
directly.  This fixes warnings in test case wrapmacro.

Add %typecheck for SWIGTYPE.  This fixes warnings in test cases
director_basic, extend_placement, overload_template,
template_default_arg, valuewrapper_opaque.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6941 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2005-02-13 12:30:39 +00:00
John Lenz
93618727bb Cast guile enum in typemap corretly
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6928 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2005-01-24 03:01:09 +00:00
William S Fulton
a87c96ec8e size_t fix
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6581 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2004-11-01 21:12:01 +00:00
Matthias Köppe
f0c73a2a80 Improvements to object-ownership management in
"-scm" mode.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5330 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2003-11-18 15:52:49 +00:00
Matthias Köppe
e5ac3696bc Merged first chunk of Guile changes contributed by John Lenz.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4858 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2003-06-03 22:12:50 +00:00
Luigi Ballabio
7764b8227a Added correct (I hope) typechecking for native scripting objects
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4821 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2003-05-22 13:01:44 +00:00
Luigi Ballabio
2c29e8ea58 Fixed typecheck for bools
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4348 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2003-02-19 08:28:59 +00:00
Dave Beazley
12a43edc2d The great merge
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4141 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2002-11-30 22:01:28 +00:00
Matthias Köppe
b53f74cb5f [Guile] New typemaps for FILE *.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@875 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2000-09-21 21:06:17 +00:00
Matthias Köppe
e867ed25a8 Incorporated patch #101430, fixing bugs in the Guile module.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@852 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2000-09-18 09:35:36 +00:00
Matthias Köppe
4f2b313968 Free malloc'ed string copies after function call.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@753 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2000-08-31 15:27:58 +00:00
Matthias Köppe
d5431492ae Fixed handling of char types.
Added support for optional arguments.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@739 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2000-08-30 21:53:49 +00:00