Previously this had to be present to set the method modifiers. Now this feature is only
used if it exists for the method being wrapped. The default is "public" as previous
however, when wrapping protected director methods it is "protected".
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5553 626c5289-ae23-0410-ae9c-e8d60b6d4f22
the supported languages.
- Added keyword list for most of the languages that didn't
have one.
- "All keywords" warning support, through the -DSWIG_ALLKW
option.
Read the Changes.current
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5543 626c5289-ae23-0410-ae9c-e8d60b6d4f22
in addition to the native one ( '\' on Windows). This can be used in %import, %include
and commandline options taking a path, for example -I.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5538 626c5289-ae23-0410-ae9c-e8d60b6d4f22
the function 'need_protected' outside parser.y,
ie, if more subtle cases appear, they can be
fixed without changing parser.y.
Now parser.y looks much more like the original 1.32.
Source/CParse/parser.y: moving and fixing 'need_protected'
Source/CParse/util.c: moving and fixing 'need_protected'
Examples/test-suite/director_protected.i: more %rename cases
Examples/test-suite/director_using.i: fixing bad module name
The errors in question where related to the mix of
%rename + (typedef|static) + protected + dirprot_mode:
%rename(s) Foo::p;
%rename(q) Foo::r;
%inline {
class Foo {
public:
virtual ~Foo() {}
int p(){ return 1;}
int r(){ return 1;}
protected:
typedef int q();
static int s();
};
since q and s look like functions, the parser was adding them
completly to the symbol table, and clashing latter with the
attemped renames.
The error was only visible when dirprot was enabled, with
the old behavior it was ok.
Marcelo
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5533 626c5289-ae23-0410-ae9c-e8d60b6d4f22
side for protected director members.
Lib/python/director.swg: added needed code for runtime checking
Source/Modules/python.cxx: added needed code for runtime checking
director_protected_runme.py: checks now that the runtime protection is working
The extra runtime checking is only done for protected members,
so, the old public directors members don't feel any overhead.
This finished the director protected support for the python language.
Java and Ocalm will need to add the "reprotection" mechanism latter.
But as in the python case, the changes will be localized in the
languages files, and there will be no need to touch the core
files anymore.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5532 626c5289-ae23-0410-ae9c-e8d60b6d4f22
When used, it reduces the time for compile the
test-suite from 23 minutes to 2 minutes. It also
reduces plain swig compilation
This is how it is used:
1.- copy or link the Tools/sleep program
into a directory in your path, like ${HOME}/bin.
2.- check the right path for the real sleep program,
now it says
SLEEP=/bin/sleep
but in your system could be different
3.- compile like this
NOSLEEP=1 make
NOSLEEP=1 make check-python-test-suite
or
export NOSLEEP=1
make
make check-python-test-suite
just rembember to unset NOSLEEP if you are
not using it anymore.
I don't see any problem in the compilation
if sleep is deactivated. But if in your
system/platform the compilation fails,
just don't set NOSLEEP, and the compilation
will go back to sleep as usual again.
This is just a work around until the the 'sleep 3'
problem is further analized.
Marcelo
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5531 626c5289-ae23-0410-ae9c-e8d60b6d4f22
%inline %{
class Foo {
protected:
void x();
public:
void y();
};
%}
will work in plain or plain director mode, but it will complain the
same as before with director protected support.
The reason is that the parser emmits the warning, and at that stage it
is not possible to decide if the protected Foo::x() could or not
conflict with the renamed Foo::y(), since Foo::x() could be virtual,
even when no "virtual" attribute is used.
Core:
parser.y: Detect the dirprot mode and prevents the generation of
protected symbols at the parsing stage.
lang.cxx: Export the director_protected_mode for parser.y and the
director protected member detection is much cleaner.
main.cxx: Fix the -dirprot flag, it was working in SWIG_FEATURE but
not in the command line.(minor thing not relate to the error).
swigmod.h: added Lang::dirprot_mode() for cleaner detection.
utils.cxx: is_member_director() centralizes and improve the test.
Test suite:
protected_rename.i: added %inline, so it can compile now.
director_protected.i: more cases, checking using %rename.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5530 626c5289-ae23-0410-ae9c-e8d60b6d4f22
by calling rb_define_protected_method(), even if the corresponding C++
member function is declared protected. The "protected" access modifier
has different interpretations in C++ and Ruby, and this was causing the
using_protected runtime test for Ruby to break.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5516 626c5289-ae23-0410-ae9c-e8d60b6d4f22