Commit graph

275 commits

Author SHA1 Message Date
Vladimir Kalinin
e18044185e fixes for director class naming when nested classes are used 2014-03-13 18:58:29 +04:00
William S Fulton
b31507a657 Use proxy class for rvalue reference parameters 2014-03-07 12:32:07 +00:00
William S Fulton
dbf44fc181 Fix std::map and smart pointers.
Fixes problem with method overloading when some methods are added by %extend
and others are real methods and using template default parameters with smart pointers.
This is noticeable as a regression since 2.0.12 when using the default smart pointer
handling for some languages when the smart pointer wraps std::map and other STL containers.

Fixes SF Bug 1363
2014-03-06 19:52:03 +00:00
William S Fulton
d957d37636 Minor code improvements after Lua changes. 2014-02-28 19:49:53 +00:00
Artem Serebriyskiy
4a94345c9a Switched to Swig_name_* functions 2014-02-25 12:51:28 +04:00
Artem Serebriyskiy
4eef510e33 Rename methods to make it clear what 'symbols table' they operate on. 2014-02-19 13:34:50 +04:00
Artem Serebriyskiy
e6d0f1327b Eliminating namespaces_hash and using symbols table instead 2014-02-19 13:34:49 +04:00
Artem Serebriyskiy
a3515ca450 Removing obsolete debug code 2014-02-19 13:34:48 +04:00
Artem Serebriyskiy
295788c8a0 nspace.i example is working 2014-02-19 13:34:47 +04:00
Artem Serebriyskiy
1c5a0f8b9c Initial implementation - everything compiles but might not work 2014-02-19 13:34:47 +04:00
Vladimir Kalinin
2f3d93e93a Nested classes support is diversified, depending on the language capability. If the language cannot support nested classes, they will be unconditionally moved to the global namespace. If language module does not override Language::nestedClassesSupport() function, nested classes will be ignored, unless "feature:flatnested" is used. 2014-02-02 22:38:13 +04:00
William S Fulton
5c6bc5db3e Remove -nonaturalvar and nonaturalvar option in %module
These didn't work, were not documented and don't seem necessary
2014-01-11 19:34:44 +00:00
William S Fulton
c34d7f6d23 %naturalvar feature fixes and documentation
Fix and document the naturalvar feature override behaviour - the naturalvar
feature attached to a variable name has precedence over the naturalvar
feature attached to the variable's type. The overriding was not working
when turning the feature off on the variable's name.

Fix so that any use of the naturalvar feature will override the global
setting. Previously when set globally by -naturalvar or %module(naturalvar=1),
use of the naturalvar feature was not always honoured.
2014-01-11 19:32:43 +00:00
Vladimir Kalinin
715e254e05 fixed enums & enum values language symbol table namespace
fixed skipping of %templates in %extend if they are in the wrong scope
2013-12-20 07:37:49 +04:00
Vladimir Kalinin
b4fef06c42 fixed %template within %extend, test added
fixed language symbol table nested classes name separator, test added
fixed %feature "flatnested" working with %extend
fixed Swig_offset_string for empty string
added simple template to save/restore values in current scope (readability reasons)
2013-12-19 02:11:22 +04:00
Vladimir Kalinin
25689857eb Language::addSymbol fix, to handle classes correctly 2013-12-17 12:14:33 +04:00
William S Fulton
7103a06849 Swig_offset_string moved to misc.c 2013-12-05 20:59:09 +00:00
William S Fulton
b65ba2a8db Minor code improvements 2013-11-29 07:33:55 +00:00
William S Fulton
44a883a057 Cosmetics/code beautification of nested class support 2013-11-29 07:29:58 +00:00
Vladimir Kalinin
b63c4839fe Nested classes support
Closes #89
Squash merge branch 'master' of https://github.com/wkalinin/swig into wkalinin-nested

By Vladimir Kalinin
* 'master' of https://github.com/wkalinin/swig:
  CPlusPlusOut mode for Octave
  nested class illustration
  fixed "Abstract" flag for nested classes added an example enabled anonymous nested structs runtime test
  porting
  warnings disabled
  porting fixes
  java runtime tests ported
  nested class closing bracket offset fixed
  removed double nested template (not supported by %template parsing)
  template_nested test extended
  parent field made public
  property access fixed
  replaced tabs with spaces
  warning W-reorder
  deprecated warnings removed, derived_nested runtime test added
  optimized string indenting
  Nested classes indenting
  nested classes docs
  fixed the order in which flattened inner classes are added after the outer
  Private nested classes were getting into the type table.
  Java getProxyName() fix for nested classes fixes the case when nested classes is forward declared
  Fix for a case when a nested class inherits from the same base as the outer. (Base class constructor declaration is found first in this case)
  merge fix
  nested C struct first immediate declaration incorrectly renamed sample fixed
  tests updated to reflect nested classes support
  Java nested classes support (1)
  flattening should remove the link to the outer class
  access mode correctly set/restored for nested classes
  nested templates should be skipped while flattening (template nodes themselves, not expanded versions) also non-public nested classes should be ignored
  If nested classes are not supported, default behaviour is flattening, not ignoring flag "nested" is preserved, so, the nested classes can be ignored by user
  nested workaround test updated
  template instantiated within a class is marked as nested for ignoring purposes
  %ignore not applied to the nested classed, because "nested" flag is set too late
  typedef name takes precedence over the real name (reason?)
  unnamed structs should be processed for all the languages
  nested C struct instances are wrapped as "immutable"
  tree building
  typedef declaration for unnamed C structures fixed
  nested classes "flattening"
  fixed %ignoring nested classes
  renamed "nested" attribute to "nested:outer" added "nested" flag, to be used with $ignore (it is not removed while flattening) added nestedClassesSupported() function to the Language interface
  renamed "nested" attribute to "nested:outer" added "nested" flag, to be used with $ignore (it is not removed while flattening) added nestedClassesSupported() function to the Language interface
  tree iteration fix
  dirclassname variable names unified memory issue fixed
  merge error
  ignore unnamed structs for C++
  unnamed nested C structs naming & unnesting
  class added to classes hash under typedef name
  private nested classes skipped
  test updated due to nested templates support
  anonymous structs with inheritance fixed nested_class test to allow anonymous structs w/o declarator
  tests updated: nested workaround removed from namespace_class.i propagated nested template declaration to the C++ file
  injected members scope
  nested tempplates fixes, nested structures in "C" mode parsing added utility function "appendSibling" (like "appendChild")
  nested unnamed structures parsing fixes, access mode restored on nested class end, tdname is properly patched with outer class name prefix
  memory management fixes
  nested templates (1)
  Nested unnamed structs
  Nested class support (1)
  Nested class support (1)
2013-11-29 07:02:34 +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
William S Fulton
3fcbb40af9 Remove incorrectly and newly introduced assert
Was failing in li_boost_shared_ptr.i for some languages. A similar
testcase has been added into naturalvar_more.i.
2013-10-05 02:16:02 +01:00
William S Fulton
e186d2176a Fix %naturalvar and templated methods using enums
%naturalvar was not being picked up - use the symbol table instead for
looking up the feature.

use_naturalvar_mode() has been moved to Language class (not strictly necessary though)
2013-10-04 23:08:33 +01:00
Olly Betts
12708c9241 Fix typos 2013-09-25 17:29:33 +12:00
William S Fulton
9d0b20916f Add ability to suppress some director warnings by their method name, not just the containing class name 2013-03-19 19:50:43 +00:00
William S Fulton
d1b40b468b Fix C code where a typedef name was used for constructor and destructor names in %extend. Deprecate use of typedef names for constructor and destructor names going forwards. 2013-02-18 22:40:42 +00:00
William S Fulton
e44656cfe5 Add support for extern "C" thread_local 2013-02-08 18:45:29 +00:00
William S Fulton
7fcfdeee08 Fixes detecting if a variable is extern when using 'extern thread_local' 2013-02-08 07:38:10 +00:00
William S Fulton
b725625e6f Add support for thread_local when specified with other legitimate storage class specifiers - extern and static 2013-02-08 06:36:39 +00:00
William S Fulton
6399428a62 Add lambda functions to the symbol tables and add ability to suppress lambda warnings. 2013-02-04 20:05:34 +00:00
William S Fulton
38f37ef5ae Apply patch SF #335 - Truly ignore constructors in directors with %ignore and correct testcase that tests this 2013-01-29 06:55:22 +00:00
William S Fulton
7841a0d097 Remove cvs/svn Id strings 2013-01-12 01:21:16 +00:00
Brant K. Kyser
6cb5b5487f Use NSPACE_SEPARATOR rather than liter string for package seperator. 2013-01-08 21:28:13 -06:00
Brant K. Kyser
3c12306b21 Remove extra underscore from generated director names to maintain prevent breaking languages that do not support nspace. 2013-01-05 03:40:06 -06:00
Brant K. Kyser
747b50e2d7 Clean up fix for SourceForge Bug #1299. 2013-01-03 23:10:28 -06:00
Brant K. Kyser
f6ce5f089f Qualify generated SwigDirector class names with namespaces 2013-01-03 21:26:08 -06:00
William S Fulton
f38147c154 Remove some pointless code creating implicit constructors
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13948 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-12-02 18:11:56 +00:00
William S Fulton
9b40eb58e3 cosmetic variable name changes for abstracts to match previous commit
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13936 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-11-24 14:15:20 +00:00
William S Fulton
d93dc0f8e2 Distinguish between an "abstract" attribute on a class containing a list of abstract members and an "abstract" flag on pure virtual methods - renamed former to "abstracts"
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13935 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-11-24 14:13:58 +00:00
William S Fulton
0d2c459046 Remove some unused code and pointless variable assignments
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13932 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-11-23 07:38:00 +00:00
William S Fulton
f3e253771c Remove incorrect Delete
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13931 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-11-23 07:36:10 +00:00
William S Fulton
14446c365b Minor logic and memory leak fix.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13930 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-11-22 23:23:15 +00:00
William S Fulton
afec99c64f Remove some useless code
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13929 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-11-22 23:22:34 +00:00
William S Fulton
dad2476091 Minor logic fix.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13928 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-11-22 23:21:54 +00:00
William S Fulton
be3236cb67 Better handling of null sym:name
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13927 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-11-22 23:21:19 +00:00
William S Fulton
61b4c1cbcd Fix 'name' attribute for explicitly defined constructors and destructors if the associated class was in a namespace, eg a correct fully qualified name might be Space::Klass::~Klass, but it was Space::~Klass, now it is simply ~Klass (names are now consistent with implicitly added constructors/destructors).
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13884 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-11-13 22:21:51 +00:00
William S Fulton
aeebd394f3 Fix incorrect implicit constructor and destructor names in the symbol tables. Fix some feature matching issues for implicit destructors and implicit constructors and impliciti copy constructors added with %copyctor. Also improves consistency in named typemap lookup rules.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13882 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-11-13 22:19:47 +00:00
William S Fulton
421139a5fe Fix some subtle named output typemap lookup misses, the fully qualified name was not always being in all cases such as member variables
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13878 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-11-13 22:16:28 +00:00
William S Fulton
f6229d4b73 Fix director typemap searching so that a typemap specified with a name will be correctly matched. Previously the name was ignored during the typemap search. Implemented by ensuring the 'type' attribute in the Node is set up correctly and using the usual Swig_typemap_lookup on the Node.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13873 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-10-27 17:37:34 +00:00
William S Fulton
77d9ad5354 Fix multiply defined symbol in target language scope
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13869 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-10-11 19:22:13 +00:00