From: <ma...@us...> - 2009-06-04 23:25:41
|
Revision: 11245 http://swig.svn.sourceforge.net/swig/?rev=11245&view=rev Author: matevz Date: 2009-06-04 23:25:39 +0000 (Thu, 04 Jun 2009) Log Message: ----------- Added support for template double brackets for C++0x. Added test cases. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/Swig/scanner.c Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/template_double_brackets.i branches/gsoc2009-matevz/Examples/test-suite/template_double_brackets_broke.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-06-02 21:13:03 UTC (rev 11244) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-06-04 23:25:39 UTC (rev 11245) @@ -82,6 +82,7 @@ nested_struct \ overload_complicated \ template_default_pointer \ + template_double_brackets_broke \ template_expr @@ -311,6 +312,7 @@ template_default_inherit \ template_default_qualify \ template_default_vw \ + template_double_brackets \ template_enum \ template_enum_ns_inherit \ template_enum_typedef \ Added: branches/gsoc2009-matevz/Examples/test-suite/template_double_brackets.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/template_double_brackets.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/template_double_brackets.i 2009-06-04 23:25:39 UTC (rev 11245) @@ -0,0 +1,26 @@ +%module foo +#include <map> +std::map<int,std::map<int, double>> m; +std::map<int,std::map<int, double> > n; +std::map< std::map<(6>>1), double>, double> o; +//std::map< std::map<6>>1, double>, double> p; // fails as it should + +class ABC { +public: + int a; + int operator>>(ABC &); + int operator<<(ABC &); +}; + +template<class T> +class ABC2 { +public: + int a; + + template<typename U> + int operator>>(ABC &, U); + + template<typename U> + int operator<<(ABC &, U); +}; + Added: branches/gsoc2009-matevz/Examples/test-suite/template_double_brackets_broke.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/template_double_brackets_broke.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/template_double_brackets_broke.i 2009-06-04 23:25:39 UTC (rev 11245) @@ -0,0 +1,26 @@ +%module foo +#include <map> +std::map<int,std::map<int, double>> m; +std::map<int,std::map<int, double> > n; +std::map< std::map<(6>>1), double>, double> o; +std::map< std::map<6>>1, double>, double> p; // fails as it should + +class ABC { +public: + int a; + int operator>>(ABC &); + int operator<<(ABC &); +}; + +template<class T> +class ABC2 { +public: + int a; + + template<typename U> + int operator>>(ABC &, U); + + template<typename U> + int operator<<(ABC &, U); +}; + Modified: branches/gsoc2009-matevz/Source/Swig/scanner.c =================================================================== --- branches/gsoc2009-matevz/Source/Swig/scanner.c 2009-06-02 21:13:03 UTC (rev 11244) +++ branches/gsoc2009-matevz/Source/Swig/scanner.c 2009-06-04 23:25:39 UTC (rev 11245) @@ -31,8 +31,12 @@ String *error; /* Last error message (if any) */ int error_line; /* Error line number */ int freeze_line; /* Suspend line number updates */ + List *brackets; /* Current level of < > brackets on each level */ }; +void Scanner_push_brackets(Scanner*); +void Scanner_clear_brackets(Scanner*); + /* ----------------------------------------------------------------------------- * NewScanner() * @@ -53,6 +57,8 @@ s->str = 0; s->error = 0; s->freeze_line = 0; + s->brackets = NewList(); + Scanner_push_brackets(s); return s; } @@ -65,6 +71,7 @@ void DelScanner(Scanner * s) { assert(s); Delete(s->scanobjs); + Delete(s->brackets); Delete(s->text); Delete(s->file); Delete(s->error); @@ -84,6 +91,7 @@ Delete(s->str); Clear(s->text); Clear(s->scanobjs); + Scanner_clear_brackets(s); Delete(s->error); s->error = 0; s->line = 1; @@ -246,6 +254,74 @@ } /* ----------------------------------------------------------------------------- + * Scanner_brackets() + * + * Returns the number of brackets at the current depth. + * ----------------------------------------------------------------------------- */ +int* +Scanner_brackets(Scanner *s) { + return (int*)(**((void***)Getitem(s->brackets, 0))); /* TODO: Use VoidObj*->ptr instead of void** */ +} + +/* ----------------------------------------------------------------------------- + * Scanner_clear_brackets() + * + * Resets the current depth and clears all brackets. + * Usually called at the end of statements; + * ----------------------------------------------------------------------------- */ +void +Scanner_clear_brackets(Scanner *s) { + Clear(s->brackets); + Scanner_push_brackets(s); /* base bracket count should always be created */ +} + +/* ----------------------------------------------------------------------------- + * Scanner_inc_brackets() + * + * Increases the number of brackets at the current depth. + * Usually called when '<' was found. + * ----------------------------------------------------------------------------- */ +void +Scanner_inc_brackets(Scanner *s) { + (*Scanner_brackets(s))++; +} + +/* ----------------------------------------------------------------------------- + * Scanner_dec_brackets() + * + * Decreases the number of brackets at the current depth. + * Usually called when '>' was found. + * ----------------------------------------------------------------------------- */ +void +Scanner_dec_brackets(Scanner *s) { + (*Scanner_brackets(s))--; +} + +/* ----------------------------------------------------------------------------- + * Scanner_push_brackets() + * + * Increases the depth of brackets. + * Usually called when '(' was found. + * ----------------------------------------------------------------------------- */ +void +Scanner_push_brackets(Scanner *s) { + int *newInt = malloc(sizeof(int)); + *newInt = 0; + Push(s->brackets, NewVoid(newInt, free)); +} + +/* ----------------------------------------------------------------------------- + * Scanner_pop_brackets() + * + * Decreases the depth of brackets. + * Usually called when ')' was found. + * ----------------------------------------------------------------------------- */ +void +Scanner_pop_brackets(Scanner *s) { + Delitem(s->brackets, 0); +} + +/* ----------------------------------------------------------------------------- * retract() * * Retract n characters @@ -432,12 +508,18 @@ /* Look for single character symbols */ - else if (c == '(') + else if (c == '(') { + Scanner_push_brackets(s); return SWIG_TOKEN_LPAREN; - else if (c == ')') + } + else if (c == ')') { + Scanner_pop_brackets(s); return SWIG_TOKEN_RPAREN; - else if (c == ';') + } + else if (c == ';') { + Scanner_clear_brackets(s); return SWIG_TOKEN_SEMI; + } else if (c == ',') return SWIG_TOKEN_COMMA; else if (c == '*') @@ -704,6 +786,7 @@ break; case 60: /* shift operators */ + Scanner_inc_brackets(s); if ((c = nextchar(s)) == 0) return SWIG_TOKEN_LESSTHAN; if (c == '<') @@ -716,9 +799,10 @@ } break; case 61: + Scanner_dec_brackets(s); if ((c = nextchar(s)) == 0) return SWIG_TOKEN_GREATERTHAN; - if (c == '>') + if (c == '>' && ((*Scanner_brackets(s))<0)) /* go to double >> only, if no template < has been used */ state = 250; else if (c == '=') return SWIG_TOKEN_GTEQUAL; @@ -1024,6 +1108,7 @@ break; case 240: /* LSHIFT, LSEQUAL */ + Scanner_inc_brackets(s); if ((c = nextchar(s)) == 0) return SWIG_TOKEN_LSHIFT; else if (c == '=') @@ -1035,6 +1120,7 @@ break; case 250: /* RSHIFT, RSEQUAL */ + Scanner_dec_brackets(s); if ((c = nextchar(s)) == 0) return SWIG_TOKEN_RSHIFT; else if (c == '=') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-06-26 20:24:24
|
Revision: 11321 http://swig.svn.sourceforge.net/swig/?rev=11321&view=rev Author: matevz Date: 2009-06-26 20:24:22 +0000 (Fri, 26 Jun 2009) Log Message: ----------- Introduced new CXXFLAGS symbol for the compilation of test suite. Added -std=c++0x to g++ compiler to enable compilation of the new C++0x tests. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/Makefile.in branches/gsoc2009-matevz/configure.in Modified: branches/gsoc2009-matevz/Examples/Makefile.in =================================================================== --- branches/gsoc2009-matevz/Examples/Makefile.in 2009-06-26 01:49:33 UTC (rev 11320) +++ branches/gsoc2009-matevz/Examples/Makefile.in 2009-06-26 20:24:22 UTC (rev 11321) @@ -25,6 +25,7 @@ CC = @CC@ CXX = @CXX@ CFLAGS = @PLATFLAGS@ +CXXFLAGS = @PLATCXXFLAGS@ prefix = @prefix@ exec_prefix= @exec_prefix@ SRCS = @@ -113,7 +114,7 @@ tclsh_cpp: $(SRCS) $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -ltclsh.i $(INTERFACEPATH) - $(CXX) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) \ + $(CXX) $(CXXFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) \ $(TCL_LIB) $(TCL_OPTS) $(LIBS) $(SYSLIBS) -o $(TARGET) # ----------------------------------------------------------- @@ -128,7 +129,7 @@ wish_cpp: $(SRCS) $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -lwish.i $(INTERFACEPATH) - $(CXX) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) \ + $(CXX) $(CXXFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) \ $(XINCLUDE) $(TCL_LIB) $(TK_OPTS) $(XLIB) $(LIBS) $(SYSLIBS) -o $(TARGET) # ----------------------------------------------------------- @@ -146,8 +147,8 @@ tcl_cpp: $(SRCS) $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) - $(TCLCXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(TCL_SO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) + $(TCLCXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(TCL_SO) # ----------------------------------------------------------------- # Cleaning the Tcl examples @@ -187,8 +188,8 @@ perl5_cpp: $(SRCS) $(SWIG) -perl5 -c++ $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PERL5_CCFLAGS) -I$(PERL5_INCLUDE) - $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(PERL5_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PERL5_CCFLAGS) -I$(PERL5_INCLUDE) + $(CXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(PERL5_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) # ---------------------------------------------------------------- # Build a module from existing XS C source code. (ie. from xsubpp). @@ -209,7 +210,7 @@ perl5_static_cpp: $(SRCS) $(SWIG) -perl5 -c++ -static -lperlmain.i $(SWIGOPT) $(INTERFACEPATH) - $(CXX) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET) + $(CXX) $(CXXFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET) # ----------------------------------------------------------------- # Cleaning the Perl5 examples @@ -267,8 +268,8 @@ python_cpp: $(SRCS) $(SWIGPYTHON) -c++ $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(PYTHON_INCLUDE) - $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(PYTHON_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)_$(TARGET)$(PYTHON_SO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(PYTHON_INCLUDE) + $(CXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(PYTHON_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)_$(TARGET)$(PYTHON_SO) # ----------------------------------------------------------------- # Build statically linked Python interpreter @@ -288,7 +289,7 @@ python_static_cpp: $(SRCS) $(SWIGPYTHON) -c++ -lembed.i $(SWIGOPT) $(INTERFACEPATH) - $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \ + $(CXX) $(CXXFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \ $(PYTHON_INCLUDE) $(LIBS) -L$(PYTHON_LIB) $(PYTHON_LIBOPTS) -o $(TARGET) # ----------------------------------------------------------------- @@ -339,7 +340,7 @@ octave: $(SRCS) $(SWIG) -octave $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -g -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(CXXSRCS) $(INCLUDES) -I$(OCTAVE_INCLUDE) + $(CXX) -g -c $(CCSHARED) $(CXXFLAGS) $(ICXXSRCS) $(CXXSRCS) $(INCLUDES) -I$(OCTAVE_INCLUDE) $(CC) -g -c $(CCSHARED) $(CFLAGS) $(SRCS) $(INCLUDES) $(OCTAVE_INCLUDE) $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(OCTAVE_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(OCTAVE_SO) @@ -349,8 +350,8 @@ octave_cpp: $(SRCS) $(SWIG) -c++ -octave $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -g -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) -I$(OCTAVE_INCLUDE) - $(CXXSHARED) -g $(CFLAGS) $(OBJS) $(IOBJS) $(OCTAVE_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(OCTAVE_SO) + $(CXX) -g -c $(CCSHARED) $(CXXFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) -I$(OCTAVE_INCLUDE) + $(CXXSHARED) -g $(CXXFLAGS) $(OBJS) $(IOBJS) $(OCTAVE_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(OCTAVE_SO) # ----------------------------------------------------------------- # Cleaning the octave examples @@ -381,8 +382,8 @@ guile_cpp: $(SRCS) $(SWIG) -c++ -guile -scm -Linkage passive $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS) - $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS) + $(CXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO) guile_externalhdr: $(SWIG) -guile -external-runtime $(TARGET) @@ -397,8 +398,8 @@ guile_gh_cpp: $(SRCS) $(SWIG) -c++ -guile -gh -Linkage passive $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS) - $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS) + $(CXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO) # ----------------------------------------------------------------- # Build a dynamically loadable module with passive linkage @@ -411,8 +412,8 @@ guile_passive_cpp: $(SRCS) $(SWIG) -c++ -guile -Linkage passive $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS) - $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS) + $(CXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO) # ----------------------------------------------------------------- # Build statically linked Guile interpreter @@ -428,7 +429,7 @@ guile_static_cpp: $(SRCS) $(SWIG) -c++ -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) $(INTERFACEPATH) - $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \ + $(CXX) $(CXXFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \ -DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \ $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile @@ -439,7 +440,7 @@ guile_simple_cpp: $(SRCS) $(SWIG) -c++ -guile -lguilemain.i -Linkage simple $(SWIGOPT) $(INTERFACEPATH) - $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \ + $(CXX) $(CXXFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \ $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile # ----------------------------------------------------------------- @@ -483,8 +484,8 @@ java_cpp: $(SRCS) $(SWIG) -java -c++ $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(JAVACFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(JAVA_INCLUDE) - $(JAVACXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(JAVA_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(JAVA_LIBPREFIX)$(TARGET)$(JAVASO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(JAVACFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(JAVA_INCLUDE) + $(JAVACXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(JAVA_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(JAVA_LIBPREFIX)$(TARGET)$(JAVASO) # ----------------------------------------------------------------- # Cleaning the java examples @@ -542,7 +543,7 @@ mzscheme_cpp: $(SRCS) $(SWIG) -mzscheme -c++ $(SWIGOPT) $(INTERFACEPATH) $(COMPILETOOL) $(MZC) `echo $(INCLUDES) | sed 's/-I/++ccf -I/g'` --cc $(ICXXSRCS) $(SRCS) $(CXXSRCS) - $(CXXSHARED) $(CFLAGS) -o $(LIBPREFIX)$(TARGET)$(MZSCHEME_SO) $(OBJS) $(IOBJS) $(MZDYNOBJ) $(CPP_DLLIBS) + $(CXXSHARED) $(CXXFLAGS) -o $(LIBPREFIX)$(TARGET)$(MZSCHEME_SO) $(OBJS) $(IOBJS) $(MZDYNOBJ) $(CPP_DLLIBS) # ----------------------------------------------------------------- # Cleaning the mzscheme examples @@ -592,7 +593,7 @@ $(OCAMLCORE) $(SWIG) -ocaml $(SWIGOPT) $(INTERFACEPATH) $(OCC) -g -c -ccopt -g -ccopt "$(INCLUDES)" $(ISRCS) $(SRCS) - $(CXXSHARED) $(CFLAGS) $(CCSHARED) $(CFLAGS) -o $(INTERFACE:%.i=%@SO@) \ + $(CXXSHARED) $(CXXFLAGS) $(CCSHARED) $(CFLAGS) -o $(INTERFACE:%.i=%@SO@) \ $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) $(LIBS) $(OCAMLDLGEN) $(INTERFACE:%.i=%.ml) $(INTERFACE:%.i=%@SO@) > \ $(INTERFACE:%.i=%_dynamic.ml) @@ -663,7 +664,7 @@ cp $(ICXXSRCS) $(ICXXSRCS:%.cxx=%.c) $(OCC) -cc '$(CXX)' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" \ $(ICXXSRCS:%.cxx=%.c) $(SRCS) $(CXXSRCS) -ccopt -fPIC - $(CXXSHARED) $(CFLAGS) -o $(INTERFACE:%.i=%@SO@) \ + $(CXXSHARED) $(CXXFLAGS) -o $(INTERFACE:%.i=%@SO@) \ $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) \ $(CPP_DLLIBS) $(LIBS) $(OCAMLDLGEN) $(INTERFACE:%.i=%.ml) $(INTERFACE:%.i=%@SO@) > \ @@ -710,8 +711,8 @@ ruby_cpp: $(SRCS) $(SWIG) -c++ -ruby $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(RUBY_INCLUDE) - $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(RUBY_INCLUDE) + $(CXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) # ----------------------------------------------------------------- # Build statically linked Ruby interpreter @@ -729,7 +730,7 @@ ruby_cpp_static: $(SRCS) $(SWIG) -c++ -ruby -lembed.i $(SWIGOPT) $(INTERFACEPATH) - $(CXX) $(CFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \ + $(CXX) $(CXXFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \ $(RUBY_INCLUDE) $(LIBS) -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET) @@ -764,8 +765,8 @@ php_cpp: $(SRCS) $(SWIG) -php -cppext cxx -c++ $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PHP_INCLUDE) - $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(PHP_SO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PHP_INCLUDE) + $(CXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(PHP_SO) # ----------------------------------------------------------------- # Running a PHP example @@ -811,7 +812,7 @@ pike_cpp: $(SRCS) $(SWIG) -c++ -pike $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(PIKE_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(PIKE_INCLUDE) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(PIKE_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(PIKE_INCLUDE) $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(PIKE_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) # ----------------------------------------------------------------- @@ -830,7 +831,7 @@ pike_cpp_static: $(SRCS) $(SWIG) -c++ -pike -lembed.i $(SWIGOPT) $(INTERFACEPATH) - $(CXX) $(CFLAGS) $(PIKE_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \ + $(CXX) $(CXXFLAGS) $(PIKE_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \ $(PIKE_INCLUDE) $(LIBS) -L$(PIKE_LIB) $(PIKE_LIBOPTS) -o $(TARGET) # ----------------------------------------------------------------- @@ -885,9 +886,9 @@ $(CHICKEN) $(CHICKEN_GENERATED_SCHEME) $(CHICKENOPTS) \ -dynamic -feature chicken-compile-shared \ -output-file $(CHICKEN_COMPILED_SCHEME) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(CHICKEN_CFLAGS) \ + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(CHICKEN_CFLAGS) \ $(INCLUDES) $(CHICKEN_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(CHICKEN_COMPILED_SCHEME) - $(CXXSHARED) $(CFLAGS) $(CHICKEN_COMPILED_OBJECT) $(OBJS) $(IOBJS) \ + $(CXXSHARED) $(CXXFLAGS) $(CHICKEN_COMPILED_OBJECT) $(OBJS) $(IOBJS) \ $(LIBS) $(CPP_DLLIBS) $(CHICKEN_SHAREDLIBOPTS) -o $(LIBPREFIX)$(TARGET)$(SO) # ----------------------------------------------------------------- @@ -913,7 +914,7 @@ -output-file $(CHICKEN_COMPILED_SCHEME) $(CHICKEN) $(CHICKEN_MAIN) $(CHICKENOPTS) \ -output-file $(CHICKEN_MAIN:.scm=_chicken.c) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(CHICKEN_CFLAGS) \ + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(CHICKEN_CFLAGS) \ $(INCLUDES) $(CHICKEN_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS) \ $(CHICKEN_COMPILED_SCHEME) $(CHICKEN_COMPILED_MAIN) $(CXX) $(CHICKEN_COMPILED_OBJECT) $(CHICKEN_COMPILED_MAIN_OBJECT) \ @@ -966,8 +967,8 @@ csharp_cpp: $(SRCS) $(SWIG) -csharp -c++ $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(CSHARPCFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) - $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(CSHARP_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(CSHARP_LIBPREFIX)$(TARGET)$(CSHARPSO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(CSHARPCFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) + $(CXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(CSHARP_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(CSHARP_LIBPREFIX)$(TARGET)$(CSHARPSO) # ---------------------------------------------------------------- # Compile CSharp files @@ -1015,8 +1016,8 @@ lua_cpp: $(SRCS) $(SWIG) -c++ -lua $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(LUA_INCLUDE) - $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(LUA_LIB) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(LUA_SO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(LUA_INCLUDE) + $(CXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(LUA_LIB) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(LUA_SO) # ----------------------------------------------------------------- # Build statically linked Lua interpreter @@ -1029,7 +1030,7 @@ lua_static_cpp: $(SRCS) $(SWIG) -c++ -lua -module example $(SWIGOPT) $(INTERFACEPATH) - $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(LUA_INTERP) $(INCLUDES) \ + $(CXX) $(CXXFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(LUA_INTERP) $(INCLUDES) \ $(LUA_INCLUDE) $(LIBS) $(LUA_LIB) -o $(TARGET) # ----------------------------------------------------------------- @@ -1052,8 +1053,8 @@ allegrocl_cpp: $(SRCS) $(SWIG) -c++ -allegrocl $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) - $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) + $(CXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) allegrocl_clean: rm -f *_wrap* *~ .~* @@ -1086,8 +1087,8 @@ cffi_cpp: $(SRCS) $(SWIG) -c++ -cffi $(SWIGOPT) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) - $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) + $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) + $(CXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) cffi_clean: rm -f *_wrap* *~ .~* @@ -1105,8 +1106,8 @@ uffi_cpp: $(SRCS) $(SWIG) -c++ -uffi $(SWIGOPT) $(INTERFACEPATH) -# $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) -# $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) +# $(CXX) -c $(CCSHARED) $(CXXFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) +# $(CXXSHARED) $(CXXFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) uffi_clean: rm -f *_wrap* *~ .~* Modified: branches/gsoc2009-matevz/configure.in =================================================================== --- branches/gsoc2009-matevz/configure.in 2009-06-26 01:49:33 UTC (rev 11320) +++ branches/gsoc2009-matevz/configure.in 2009-06-26 20:24:22 UTC (rev 11321) @@ -321,6 +321,13 @@ *) PLATFLAGS="";; esac +# Add switch to enable C++0x support +AC_SUBST(PLATCXXFLAGS) +if test "$GCC" = yes; then + PLATCXXFLAGS=$PLATFLAGS" -std=c++0x " +else + PLATCXXFLAGS=$PLATFLAGS +fi # Check for specific libraries. Used for SWIG examples AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-06-26 21:48:50
|
Revision: 11322 http://swig.svn.sourceforge.net/swig/?rev=11322&view=rev Author: matevz Date: 2009-06-26 21:48:48 +0000 (Fri, 26 Jun 2009) Log Message: ----------- Added constexpr keywords and CONSTEXPR terminal to Swig parser. Added cpp0x_constexpr.i testcase. Fixed compilation bug of cpp0x_template_double_brackets.i testcase. Removed obsolete cpp0x_template_double_brackets_broken. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets.i branches/gsoc2009-matevz/Source/CParse/cscanner.c branches/gsoc2009-matevz/Source/CParse/parser.y Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_constexpr.i Removed Paths: ------------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets_broken.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-06-26 20:24:22 UTC (rev 11321) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-06-26 21:48:48 UTC (rev 11322) @@ -93,6 +93,7 @@ # C++ test cases. (Can be run individually using make testcase.cpptest.) CPP_TEST_CASES += \ + $(CPP0X_TEST_CASES) \ abstract_access \ abstract_inherit \ abstract_inherit_ok \ @@ -395,16 +396,15 @@ virtual_destructor \ virtual_poly \ voidtest \ - wrapmacro \ - $(CPP0X_TEST_CASES) + wrapmacro # C++0x test cases. CPP0X_TEST_CASES = \ cpp0x_template_double_brackets +# cpp0x_constexpr # not supported by any compilers yet # Broken C++0x test cases. -CPP0X_TEST_BROKEN = \ - cpp0x_template_double_brackets_broken +CPP0X_TEST_BROKEN = # # Put all the heavy STD/STL cases here, where they can be skipped if needed @@ -497,7 +497,7 @@ ####################################################################### # The following applies for all module languages ####################################################################### -all: $(BROKEN_TEST_CASES) $(NOT_BROKEN_TEST_CASES) +all: $(NOT_BROKEN_TEST_CASES) $(BROKEN_TEST_CASES) check: $(NOT_BROKEN_TEST_CASES) Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_constexpr.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_constexpr.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_constexpr.i 2009-06-26 21:48:48 UTC (rev 11322) @@ -0,0 +1,8 @@ +%module foo + +%inline %{ +class TestClass { + constexpr int func() { return 10; } +}; +%} + Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets.i 2009-06-26 20:24:22 UTC (rev 11321) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets.i 2009-06-26 21:48:48 UTC (rev 11322) @@ -1,9 +1,8 @@ %module foo +%inline %{ #include <map> std::map<int,std::map<int, double>> m; -std::map<int,std::map<int, double> > n; -std::map< std::map<(6>>1), double>, double> o; -//std::map< std::map<6>>1, double>, double> p; // fails as it should +std::map< int,std::map<int, double> > n; class ABC { public: @@ -18,9 +17,10 @@ int a; template<typename U> - int operator>>(ABC &, U); + U operator>>(ABC &); template<typename U> - int operator<<(ABC &, U); + U operator<<(ABC &); }; +%} Deleted: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets_broken.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets_broken.i 2009-06-26 20:24:22 UTC (rev 11321) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets_broken.i 2009-06-26 21:48:48 UTC (rev 11322) @@ -1,26 +0,0 @@ -%module foo -#include <map> -std::map<int,std::map<int, double>> m; -std::map<int,std::map<int, double> > n; -std::map< std::map<(6>>1), double>, double> o; -std::map< std::map<6>>1, double>, double> p; // fails as it should - -class ABC { -public: - int a; - int operator>>(ABC &); - int operator<<(ABC &); -}; - -template<class T> -class ABC2 { -public: - int a; - - template<typename U> - int operator>>(ABC &, U); - - template<typename U> - int operator<<(ABC &, U); -}; - Modified: branches/gsoc2009-matevz/Source/CParse/cscanner.c =================================================================== --- branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-06-26 20:24:22 UTC (rev 11321) +++ branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-06-26 21:48:48 UTC (rev 11322) @@ -630,6 +630,8 @@ return (PROTECTED); if (strcmp(yytext, "friend") == 0) return (FRIEND); + if (strcmp(yytext, "constexpr") == 0) + return (CONSTEXPR); if (strcmp(yytext, "virtual") == 0) return (VIRTUAL); if (strcmp(yytext, "operator") == 0) { Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-06-26 20:24:22 UTC (rev 11321) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-06-26 21:48:48 UTC (rev 11322) @@ -1492,7 +1492,7 @@ %token ILLEGAL CONSTANT %token NAME RENAME NAMEWARN EXTEND PRAGMA FEATURE VARARGS %token ENUM -%token CLASS TYPENAME PRIVATE PUBLIC PROTECTED COLON STATIC VIRTUAL FRIEND THROW CATCH EXPLICIT +%token CLASS TYPENAME PRIVATE PUBLIC PROTECTED COLON STATIC VIRTUAL FRIEND THROW CATCH EXPLICIT CONSTEXPR %token USING %token <node> NAMESPACE %token NATIVE INLINE @@ -4490,6 +4490,7 @@ | VIRTUAL { $$ = "virtual"; } | FRIEND { $$ = "friend"; } | EXPLICIT { $$ = "explicit"; } + | CONSTEXPR { $$ = "constexpr"; } | empty { $$ = 0; } ; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-06-28 14:52:37
|
Revision: 11327 http://swig.svn.sourceforge.net/swig/?rev=11327&view=rev Author: matevz Date: 2009-06-28 14:51:10 +0000 (Sun, 28 Jun 2009) Log Message: ----------- Added support for unicode strings and fixed support for wstrings. Added test case cpp0x_raw_string_literals.i. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/Swig/scanner.c Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-06-27 16:51:07 UTC (rev 11326) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-06-28 14:51:10 UTC (rev 11327) @@ -401,7 +401,8 @@ # C++0x test cases. CPP0X_TEST_CASES = \ cpp0x_template_double_brackets \ - cpp0x_explicit_conversion_operators + cpp0x_explicit_conversion_operators \ + cpp0x_raw_string_literals # cpp0x_constexpr # not supported by any compilers yet # Broken C++0x test cases. Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i 2009-06-28 14:51:10 UTC (rev 11327) @@ -0,0 +1,30 @@ +/* This module tests whether Swig correctly parses: + - ordinary strings (char_t) + - L wide strings (wchar_t) + - u8 unicode8 strings (char_t) + - u unicode16 strings (char16_t) + - U unicode32 strings (char32_t) + + This module also tests whether Swig correctly parses custom string delimiters. +*/ + +%module raw_string_literals + +%inline %{ +#include <iostream> +#include <string> + +using namespace std; + +string a="ABC"; +wstring wide=L"ABC"; +string c=u8"ABC"; +string b=u"ABC"; +string d=U"ABC"; + +/*string e=R"XXX[ABC"blah]XXX"; +string g=u8R"XXX[ABC"blah]XXX"; +string f=uR"XXX[ABC"blah]XXX"; +string h=UR"XXX[ABC"blah]XXX"; +*/ +%} Modified: branches/gsoc2009-matevz/Source/Swig/scanner.c =================================================================== --- branches/gsoc2009-matevz/Source/Swig/scanner.c 2009-06-27 16:51:07 UTC (rev 11326) +++ branches/gsoc2009-matevz/Source/Swig/scanner.c 2009-06-28 14:51:10 UTC (rev 11327) @@ -32,6 +32,8 @@ int error_line; /* Error line number */ int freeze_line; /* Suspend line number updates */ List *brackets; /* Current level of < > brackets on each level */ + int str_delimiter; /* Custom string delimiter: true, false */ + String *str_delimiter_val; /* Custom string delimiter. eg. R"XXX[my custom string "value"]XXX" */ }; void Scanner_push_brackets(Scanner*); @@ -58,6 +60,8 @@ s->error = 0; s->freeze_line = 0; s->brackets = NewList(); + s->str_delimiter = 0; + s->str_delimiter_val = NewStringEmpty(); Scanner_push_brackets(s); return s; } @@ -76,8 +80,9 @@ Delete(s->file); Delete(s->error); Delete(s->str); + Delete(s->str_delimiter_val); free(s->idstart); - free(s); + free(s); } /* ----------------------------------------------------------------------------- @@ -93,6 +98,8 @@ Clear(s->scanobjs); Scanner_clear_brackets(s); Delete(s->error); + Clear(s->str_delimiter_val); + s->str_delimiter = 0; s->error = 0; s->line = 1; s->nexttoken = -1; @@ -496,15 +503,16 @@ case 1000: if ((c = nextchar(s)) == 0) - return (0); + return (0); if (c == '%') state = 4; /* Possibly a SWIG directive */ + + /* Look for possible identifiers or unicode strings */ - /* Look for possible identifiers */ - else if ((isalpha(c)) || (c == '_') || - (s->idstart && strchr(s->idstart, c))) + (s->idstart && strchr(s->idstart, c))) { state = 7; + } /* Look for single character symbols */ @@ -569,16 +577,16 @@ state = 1; /* Comment (maybe) */ s->start_line = s->line; } - else if (c == '\"') { - state = 2; /* Possibly a string */ - s->start_line = s->line; - Clear(s->text); - } else if (c == ':') state = 5; /* maybe double colon */ else if (c == '0') state = 83; /* An octal or hex value */ + else if (c == '\"') { + state = 2; /* A string or Unicode string constant */ + s->start_line = s->line; + Clear(s->text); + } else if (c == '\'') { s->start_line = s->line; Clear(s->text); @@ -811,22 +819,61 @@ return SWIG_TOKEN_GREATERTHAN; } break; - case 7: /* Identifier */ + case 7: /* Identifier or unicode string */ + if (c!='u' && c!='U' && c!='L') { /* Definitely an identifier */ + state = 70; + break; + } + + if ((c = nextchar(s)) == 0) { + return SWIG_TOKEN_ID; + } + else if (c=='\"') { /* u or U string */ + retract(s, 1); + state = 1000; + } + else if (c=='8') { /* Possibly u8 string */ + state = 71; + break; + } + else { + retract(s, 1); /* Definitely an identifier */ + state = 70; + break; + } + break; + + case 70: /* Identifier */ if ((c = nextchar(s)) == 0) return SWIG_TOKEN_ID; if (isalnum(c) || (c == '_') || (c == '$')) { - state = 7; + state = 70; } else { retract(s, 1); return SWIG_TOKEN_ID; } break; + + case 71: /* Possibly u8 string */ + if ((c = nextchar(s)) == 0) { + return SWIG_TOKEN_ID; + } + if (c=='\"') { + retract(s, 1); + state = 1000; + } + else { + retract(s, 2); /* Definitely an identifier. Retract 8" */ + state = 70; + } + + break; case 75: /* Special identifier $ */ if ((c = nextchar(s)) == 0) return SWIG_TOKEN_DOLLAR; if (isalnum(c) || (c == '_') || (c == '*') || (c == '&')) { - state = 7; + state = 70; } else { retract(s,1); if (Len(s->text) == 1) return SWIG_TOKEN_DOLLAR; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-06-28 19:35:08
|
Revision: 11328 http://swig.svn.sourceforge.net/swig/?rev=11328&view=rev Author: matevz Date: 2009-06-28 19:35:05 +0000 (Sun, 28 Jun 2009) Log Message: ----------- Added support for custom string delimiters. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i branches/gsoc2009-matevz/Source/Swig/scanner.c Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i 2009-06-28 14:51:10 UTC (rev 11327) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i 2009-06-28 19:35:05 UTC (rev 11328) @@ -16,15 +16,27 @@ using namespace std; -string a="ABC"; -wstring wide=L"ABC"; -string c=u8"ABC"; -string b=u"ABC"; -string d=U"ABC"; +int L = 100; +int u8 = 100; +int u = 100; +int U = 100; -/*string e=R"XXX[ABC"blah]XXX"; -string g=u8R"XXX[ABC"blah]XXX"; -string f=uR"XXX[ABC"blah]XXX"; -string h=UR"XXX[ABC"blah]XXX"; -*/ +int R = 100; +int LR = 100; +int u8R = 100; +int uR = 100; +int UR = 100; + +string a ="ABC"; +wstring wide =L"ABC"; +string b =u8"ABC"; +string c =u"ABC"; +string d =U"ABC"; + +string e =R"XXX[to be or "not" to be [these are parenthesis], this is the question!]XXX"; +wstring wide2 =LR"XXX[to be or "not" to be [these are parenthesis], this is the question!]XXX"; +string f =u8R"XXX[to be or "not" to be [these are parenthesis], this is the question!]XXX"; +string g =uR"XXX[to be or "not" to be [these are parenthesis], this is the question!]XXX"; +string h =UR"XXX[to be or "not" to be [these are parenthesis], this is the question!]XXX"; + %} Modified: branches/gsoc2009-matevz/Source/Swig/scanner.c =================================================================== --- branches/gsoc2009-matevz/Source/Swig/scanner.c 2009-06-28 14:51:10 UTC (rev 11327) +++ branches/gsoc2009-matevz/Source/Swig/scanner.c 2009-06-28 19:35:05 UTC (rev 11328) @@ -32,8 +32,6 @@ int error_line; /* Error line number */ int freeze_line; /* Suspend line number updates */ List *brackets; /* Current level of < > brackets on each level */ - int str_delimiter; /* Custom string delimiter: true, false */ - String *str_delimiter_val; /* Custom string delimiter. eg. R"XXX[my custom string "value"]XXX" */ }; void Scanner_push_brackets(Scanner*); @@ -60,8 +58,6 @@ s->error = 0; s->freeze_line = 0; s->brackets = NewList(); - s->str_delimiter = 0; - s->str_delimiter_val = NewStringEmpty(); Scanner_push_brackets(s); return s; } @@ -80,7 +76,6 @@ Delete(s->file); Delete(s->error); Delete(s->str); - Delete(s->str_delimiter_val); free(s->idstart); free(s); } @@ -98,8 +93,6 @@ Clear(s->scanobjs); Scanner_clear_brackets(s); Delete(s->error); - Clear(s->str_delimiter_val); - s->str_delimiter = 0; s->error = 0; s->line = 1; s->nexttoken = -1; @@ -475,13 +468,15 @@ * ----------------------------------------------------------------------------- */ static int look(Scanner * s) { - int state; + int state = 0; int c = 0; + String *str_delimiter = 0; - state = 0; Clear(s->text); s->start_line = s->line; Setfile(s->text, Getfile(s->str)); + + while (1) { switch (state) { case 0: @@ -507,7 +502,7 @@ if (c == '%') state = 4; /* Possibly a SWIG directive */ - /* Look for possible identifiers or unicode strings */ + /* Look for possible identifiers or unicode/delimiter strings */ else if ((isalpha(c)) || (c == '_') || (s->idstart && strchr(s->idstart, c))) { @@ -583,7 +578,7 @@ else if (c == '0') state = 83; /* An octal or hex value */ else if (c == '\"') { - state = 2; /* A string or Unicode string constant */ + state = 2; /* A string constant */ s->start_line = s->line; Clear(s->text); } @@ -665,20 +660,65 @@ break; case 2: /* Processing a string */ + if (!str_delimiter) { + state=20; + break; + } + if ((c = nextchar(s)) == 0) { Swig_error(cparse_file, cparse_start_line, "Unterminated string\n"); return SWIG_TOKEN_ERROR; } - if (c == '\"') { - Delitem(s->text, DOH_END); - return SWIG_TOKEN_STRING; - } else if (c == '\\') { - Delitem(s->text, DOH_END); - get_escape(s); - } else - state = 2; + else if (c == '[') { + state = 20; + } + else { + char temp[2] = { 0, 0 }; + temp[0] = c; + Append( str_delimiter, temp ); + } + break; + case 20: /* Inside the string */ + if ((c = nextchar(s)) == 0) { + Swig_error(cparse_file, cparse_start_line, "Unterminated string\n"); + return SWIG_TOKEN_ERROR; + } + + if (!str_delimiter) { /* Ordinary string: "value" */ + if (c == '\"') { + Delitem(s->text, DOH_END); + return SWIG_TOKEN_STRING; + } else if (c == '\\') { + Delitem(s->text, DOH_END); + get_escape(s); + } + } else { /* Custom delimiter string: R"XXXX[value]XXXX" */ + if (c==']') { + int i=0; + String *end_delimiter = NewStringEmpty(); + while ((c = nextchar(s)) != 0 && c!='\"') { + char temp[2] = { 0, 0 }; + temp[0] = c; + Append( end_delimiter, temp ); + i++; + } + + if (Strcmp( str_delimiter, end_delimiter )==0) { + Delete( end_delimiter ); /* Correct end delimiter ]XXXX" occured */ + Delete( str_delimiter ); + str_delimiter = 0; + return SWIG_TOKEN_STRING; + } else { /* Incorrect end delimiter occured */ + retract( s, i ); + Delete( end_delimiter ); + } + } + } + + break; + case 3: /* Maybe a not equals */ if ((c = nextchar(s)) == 0) return SWIG_TOKEN_LNOT; @@ -819,8 +859,13 @@ return SWIG_TOKEN_GREATERTHAN; } break; - case 7: /* Identifier or unicode string */ - if (c!='u' && c!='U' && c!='L') { /* Definitely an identifier */ + + case 7: /* Identifier or unicode/custom delimiter string */ + if (c=='R') { /* Possibly CUSTOM DELIMITER string */ + state = 72; + break; + } + else if (c!='u' && c!='U' && c!='L') { /* Definitely an identifier */ state = 70; break; } @@ -828,18 +873,19 @@ if ((c = nextchar(s)) == 0) { return SWIG_TOKEN_ID; } - else if (c=='\"') { /* u or U string */ + else if (c=='\"') { /* Definitely u, U or L string */ retract(s, 1); state = 1000; } + else if (c=='R') { /* Possibly CUSTOM DELIMITER u, U, L string */ + state = 73; + } else if (c=='8') { /* Possibly u8 string */ state = 71; - break; } else { retract(s, 1); /* Definitely an identifier */ state = 70; - break; } break; @@ -859,9 +905,12 @@ return SWIG_TOKEN_ID; } if (c=='\"') { - retract(s, 1); + retract(s, 1); /* Definitely u8 string */ state = 1000; } + else if (c=='R') { + state = 74; /* Possibly CUSTOM DELIMITER u8 string */ + } else { retract(s, 2); /* Definitely an identifier. Retract 8" */ state = 70; @@ -869,6 +918,32 @@ break; + case 72: /* Possibly CUSTOM DELIMITER string */ + case 73: + case 74: + if ((c = nextchar(s)) == 0) { + return SWIG_TOKEN_ID; + } + if (c=='\"') { + retract(s, 1); /* Definitely custom delimiter u, U or L string */ + str_delimiter = NewStringEmpty(); + state = 1000; + } + else { + if (state==72) { + retract(s, 1); /* Definitely an identifier. Retract ? */ + } + else if (state==73) { + retract(s, 2); /* Definitely an identifier. Retract R? */ + } + else if (state==74) { + retract(s, 3); /* Definitely an identifier. Retract 8R? */ + } + state = 70; + } + + break; + case 75: /* Special identifier $ */ if ((c = nextchar(s)) == 0) return SWIG_TOKEN_DOLLAR; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-07-05 14:33:46
|
Revision: 11369 http://swig.svn.sourceforge.net/swig/?rev=11369&view=rev Author: matevz Date: 2009-07-05 14:33:40 +0000 (Sun, 05 Jul 2009) Log Message: ----------- Added support for C++0x static_assert(). Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/CParse/cscanner.c branches/gsoc2009-matevz/Source/CParse/parser.y Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_static_assert.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-05 05:40:50 UTC (rev 11368) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-05 14:33:40 UTC (rev 11369) @@ -402,7 +402,8 @@ CPP0X_TEST_CASES = \ cpp0x_template_double_brackets \ cpp0x_explicit_conversion_operators \ - cpp0x_raw_string_literals + cpp0x_raw_string_literals \ + cpp0x_static_assert # cpp0x_constexpr # not supported by any compilers yet # Broken C++0x test cases. Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_static_assert.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_static_assert.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_static_assert.i 2009-07-05 14:33:40 UTC (rev 11369) @@ -0,0 +1,17 @@ +/* This test case checks whether swig correctly parses and ignores the + keywords "static_assert()" inside the class or struct. +*/ +%module static_assert + +%inline %{ +template <typename T> +struct Check1 { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); +}; + +template <typename T> +class Check2 { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); +}; +%} + Modified: branches/gsoc2009-matevz/Source/CParse/cscanner.c =================================================================== --- branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-07-05 05:40:50 UTC (rev 11368) +++ branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-07-05 14:33:40 UTC (rev 11369) @@ -634,6 +634,8 @@ return (CONSTEXPR); if (strcmp(yytext, "virtual") == 0) return (VIRTUAL); + if (strcmp(yytext, "static_assert") == 0) + return (STATIC_ASSERT); if (strcmp(yytext, "operator") == 0) { int nexttok; String *s = NewString("operator "); Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-05 05:40:50 UTC (rev 11368) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-05 14:33:40 UTC (rev 11369) @@ -1493,6 +1493,7 @@ %token NAME RENAME NAMEWARN EXTEND PRAGMA FEATURE VARARGS %token ENUM %token CLASS TYPENAME PRIVATE PUBLIC PROTECTED COLON STATIC VIRTUAL FRIEND THROW CATCH EXPLICIT CONSTEXPR +%token STATIC_ASSERT %token USING %token <node> NAMESPACE %token NATIVE INLINE @@ -1539,7 +1540,7 @@ /* C++ declarations */ %type <node> cpp_declaration cpp_class_decl cpp_forward_class_decl cpp_template_decl; %type <node> cpp_members cpp_member; -%type <node> cpp_constructor_decl cpp_destructor_decl cpp_protection_decl cpp_conversion_operator; +%type <node> cpp_constructor_decl cpp_destructor_decl cpp_protection_decl cpp_conversion_operator cpp_static_assert; %type <node> cpp_swig_directive cpp_temp_possible cpp_nested cpp_opt_declarators ; %type <node> cpp_using_decl cpp_namespace_decl cpp_catch_decl ; %type <node> kwargs options; @@ -3864,6 +3865,9 @@ | cpp_constructor_decl { $$ = $1; } + | cpp_static_assert { + $$ = $1; + } | cpp_template_decl { $$ = 0; } @@ -4110,6 +4114,7 @@ default_arguments($$); } | cpp_destructor_decl { $$ = $1; } + | cpp_static_assert { $$ = $1; } | cpp_protection_decl { $$ = $1; } | cpp_swig_directive { $$ = $1; } | cpp_conversion_operator { $$ = $1; } @@ -4281,6 +4286,13 @@ } ; +/* static_assert(bool, const char*); */ +cpp_static_assert : STATIC_ASSERT LPAREN { + skip_balanced('(',')'); + $$ = 0; + } + ; + /* public: */ cpp_protection_decl : PUBLIC COLON { $$ = new_node("access"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-07-11 20:13:40
|
Revision: 11385 http://swig.svn.sourceforge.net/swig/?rev=11385&view=rev Author: matevz Date: 2009-07-11 20:13:36 +0000 (Sat, 11 Jul 2009) Log Message: ----------- Added C++0x support for 'extern' explicit template instantiation without the translation unit. Added test cases. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Examples/test-suite/cpp0x_constexpr.i branches/gsoc2009-matevz/Examples/test-suite/cpp0x_explicit_conversion_operators.i branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i branches/gsoc2009-matevz/Examples/test-suite/cpp0x_static_assert.i branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets.i branches/gsoc2009-matevz/Source/CParse/parser.y Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-11 06:12:32 UTC (rev 11384) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-11 20:13:36 UTC (rev 11385) @@ -403,7 +403,8 @@ cpp0x_template_double_brackets \ cpp0x_explicit_conversion_operators \ cpp0x_raw_string_literals \ - cpp0x_static_assert + cpp0x_static_assert \ + cpp0x_template_explicit # cpp0x_constexpr # not supported by any compilers yet # Broken C++0x test cases. Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_constexpr.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_constexpr.i 2009-07-11 06:12:32 UTC (rev 11384) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_constexpr.i 2009-07-11 20:13:36 UTC (rev 11385) @@ -1,10 +1,11 @@ /* This interface tests whether Swig supports the new "constexpr" keyword introduced by C++0x. */ -%module foo +%module cpp0x_constexpr %inline %{ class TestClass { +public: constexpr int func() { return 10; } }; %} Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_explicit_conversion_operators.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_explicit_conversion_operators.i 2009-07-11 06:12:32 UTC (rev 11384) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_explicit_conversion_operators.i 2009-07-11 20:13:36 UTC (rev 11385) @@ -1,7 +1,7 @@ /* This interface checks whether Swig correctly compiles the new explicit conversion operators feature introduced in C++0x. */ -%module foo +%module cpp0x_explicit_conversion_operators %inline %{ Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i 2009-07-11 06:12:32 UTC (rev 11384) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i 2009-07-11 20:13:36 UTC (rev 11385) @@ -7,9 +7,8 @@ This module also tests whether Swig correctly parses custom string delimiters. */ +%module cpp0x_raw_string_literals -%module raw_string_literals - %inline %{ #include <iostream> #include <string> Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_static_assert.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_static_assert.i 2009-07-11 06:12:32 UTC (rev 11384) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_static_assert.i 2009-07-11 20:13:36 UTC (rev 11385) @@ -1,7 +1,7 @@ /* This test case checks whether swig correctly parses and ignores the keywords "static_assert()" inside the class or struct. */ -%module static_assert +%module cpp0x_static_assert %inline %{ template <typename T> Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets.i 2009-07-11 06:12:32 UTC (rev 11384) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets.i 2009-07-11 20:13:36 UTC (rev 11385) @@ -2,7 +2,7 @@ in the template syntax without having a space inbetween. This feature was introduced in new C++0x standard. */ -%module foo +%module cpp0x_template_double_brackets %inline %{ #include <map> std::map<int,std::map<int, double>> m; Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-11 06:12:32 UTC (rev 11384) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-11 20:13:36 UTC (rev 11385) @@ -3850,10 +3850,14 @@ Namespaceprefix = Swig_symbol_qualifiedscopename(0); if (error) $$ = 0; } - | TEMPLATE cpptype idcolon { + | TEMPLATE cpptype idcolon { /* Explicit template instantiation */ Swig_warning(WARN_PARSE_EXPLICIT_TEMPLATE, cparse_file, cparse_line, "Explicit template instantiation ignored.\n"); $$ = 0; - } + } + | EXTERN TEMPLATE cpptype idcolon { /* Explicit template instantiation without the translation unit */ + Swig_warning(WARN_PARSE_EXPLICIT_TEMPLATE, cparse_file, cparse_line, "Explicit template instantiation ignored.\n"); + $$ = 0; + } ; cpp_temp_possible: c_decl { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-07-14 12:05:15
|
Revision: 11393 http://swig.svn.sourceforge.net/swig/?rev=11393&view=rev Author: matevz Date: 2009-07-14 12:05:05 +0000 (Tue, 14 Jul 2009) Log Message: ----------- Added keyword 'thread_local' to Swig. Added testcase. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/CParse/cscanner.c branches/gsoc2009-matevz/Source/CParse/parser.y Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_thread_local.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-13 11:47:40 UTC (rev 11392) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-14 12:05:05 UTC (rev 11393) @@ -404,7 +404,8 @@ cpp0x_explicit_conversion_operators \ cpp0x_raw_string_literals \ cpp0x_static_assert \ - cpp0x_template_explicit + cpp0x_template_explicit \ + cpp0x_thread_local # cpp0x_constexpr # not supported by any compilers yet # Broken C++0x test cases. Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_thread_local.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_thread_local.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_thread_local.i 2009-07-14 12:05:05 UTC (rev 11393) @@ -0,0 +1,11 @@ +/* This testcase checks whether Swig correctly parses the 'thread_local' + keyword before the member type and name. */ + +%module cpp0x_thread_local + +%inline %{ +struct A { + thread_local int val; +}; +%} + Modified: branches/gsoc2009-matevz/Source/CParse/cscanner.c =================================================================== --- branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-07-13 11:47:40 UTC (rev 11392) +++ branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-07-14 12:05:05 UTC (rev 11393) @@ -632,6 +632,8 @@ return (FRIEND); if (strcmp(yytext, "constexpr") == 0) return (CONSTEXPR); + if (strcmp(yytext, "thread_local") == 0) + return (THREAD_LOCAL); if (strcmp(yytext, "virtual") == 0) return (VIRTUAL); if (strcmp(yytext, "static_assert") == 0) Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-13 11:47:40 UTC (rev 11392) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-14 12:05:05 UTC (rev 11393) @@ -1492,8 +1492,8 @@ %token ILLEGAL CONSTANT %token NAME RENAME NAMEWARN EXTEND PRAGMA FEATURE VARARGS %token ENUM -%token CLASS TYPENAME PRIVATE PUBLIC PROTECTED COLON STATIC VIRTUAL FRIEND THROW CATCH EXPLICIT CONSTEXPR -%token STATIC_ASSERT +%token CLASS TYPENAME PRIVATE PUBLIC PROTECTED COLON STATIC VIRTUAL FRIEND THROW CATCH EXPLICIT +%token STATIC_ASSERT CONSTEXPR THREAD_LOCAL /* C++0x keywords */ %token USING %token <node> NAMESPACE %token NATIVE INLINE @@ -4507,6 +4507,7 @@ | FRIEND { $$ = "friend"; } | EXPLICIT { $$ = "explicit"; } | CONSTEXPR { $$ = "constexpr"; } + | THREAD_LOCAL { $$ = "thread_local"; } | empty { $$ = 0; } ; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-07-17 10:21:36
|
Revision: 11413 http://swig.svn.sourceforge.net/swig/?rev=11413&view=rev Author: matevz Date: 2009-07-17 10:21:25 +0000 (Fri, 17 Jul 2009) Log Message: ----------- Added support for cpp0x uniform initialization. Added testcases. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/CParse/parser.y Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_uniform_initialization.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-16 14:51:20 UTC (rev 11412) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-17 10:21:25 UTC (rev 11413) @@ -405,7 +405,8 @@ cpp0x_raw_string_literals \ cpp0x_static_assert \ cpp0x_template_explicit \ - cpp0x_thread_local + cpp0x_thread_local \ + cpp0x_uniform_initialization # cpp0x_smart_pointers # not supported by standard library yet # cpp0x_constexpr # not supported by any compilers yet Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_uniform_initialization.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_uniform_initialization.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_uniform_initialization.i 2009-07-17 10:21:25 UTC (rev 11413) @@ -0,0 +1,20 @@ +%module cpp0x_uniform_initialization + +%inline %{ +struct BasicStruct { + int x; + double y; +}; + +struct AltStruct { + AltStruct(int x, double y) : x_{x}, y_{y} {} + +private: + int x_; + double y_; +}; + +BasicStruct var1{5, 3.2}; // only fills the struct components +AltStruct var2{2, 4.3}; // calls the constructor + +%} Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-16 14:51:20 UTC (rev 11412) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-17 10:21:25 UTC (rev 11413) @@ -5846,6 +5846,17 @@ skip_balanced('(',')'); Clear(scanner_ccode); } + | idcolon LBRACE { + /* Uniform initialization. eg. + struct MyStruct { + MyStruct(int x, double y) : x_{x}, y_{y} {} + int x_; + double y_; + }; + */ + skip_balanced('{','}'); + Clear(scanner_ccode); + } ; template_decl : LESSTHAN valparms GREATERTHAN { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-07-17 11:17:05
|
Revision: 11414 http://swig.svn.sourceforge.net/swig/?rev=11414&view=rev Author: matevz Date: 2009-07-17 11:17:01 +0000 (Fri, 17 Jul 2009) Log Message: ----------- Added support for C++0x alternate function syntax. Added testcase. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/CParse/cscanner.c branches/gsoc2009-matevz/Source/CParse/parser.y branches/gsoc2009-matevz/Source/Swig/stype.c branches/gsoc2009-matevz/Source/Swig/swig.h branches/gsoc2009-matevz/Source/Swig/typesys.c Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_alternate_function_syntax.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-17 10:21:25 UTC (rev 11413) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-17 11:17:01 UTC (rev 11414) @@ -406,7 +406,8 @@ cpp0x_static_assert \ cpp0x_template_explicit \ cpp0x_thread_local \ - cpp0x_uniform_initialization + cpp0x_uniform_initialization \ + cpp0x_alternate_function_syntax # cpp0x_smart_pointers # not supported by standard library yet # cpp0x_constexpr # not supported by any compilers yet Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_alternate_function_syntax.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_alternate_function_syntax.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_alternate_function_syntax.i 2009-07-17 11:17:01 UTC (rev 11414) @@ -0,0 +1,11 @@ +%module cpp0x_alternate_function_syntax + +%inline %{ +struct SomeStruct { + auto FuncName(int x, int y) -> int; +}; + +auto SomeStruct::FuncName(int x, int y) -> int { + return x + y; +} +%} Modified: branches/gsoc2009-matevz/Source/CParse/cscanner.c =================================================================== --- branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-07-17 10:21:25 UTC (rev 11413) +++ branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-07-17 11:17:01 UTC (rev 11414) @@ -340,6 +340,8 @@ return GREATERTHANOREQUALTO; case SWIG_TOKEN_RSHIFT: return RSHIFT; + case SWIG_TOKEN_ARROW: + return ARROW; case SWIG_TOKEN_PERIOD: return PERIOD; case SWIG_TOKEN_MODULO: @@ -593,6 +595,10 @@ yylval.type = NewSwigType(T_BOOL); return (TYPE_BOOL); } + if (strcmp(yytext, "auto") == 0) { + yylval.type = NewSwigType(T_AUTO); + return (TYPE_AUTO); + } /* Non ISO (Windows) C extensions */ if (strcmp(yytext, "__int8") == 0) { Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-17 10:21:25 UTC (rev 11413) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-17 11:17:01 UTC (rev 11414) @@ -1486,7 +1486,7 @@ %token <str> CHARCONST %token <dtype> NUM_INT NUM_FLOAT NUM_UNSIGNED NUM_LONG NUM_ULONG NUM_LONGLONG NUM_ULONGLONG %token <ivalue> TYPEDEF -%token <type> TYPE_INT TYPE_UNSIGNED TYPE_SHORT TYPE_LONG TYPE_FLOAT TYPE_DOUBLE TYPE_CHAR TYPE_WCHAR TYPE_VOID TYPE_SIGNED TYPE_BOOL TYPE_COMPLEX TYPE_TYPEDEF TYPE_RAW TYPE_NON_ISO_INT8 TYPE_NON_ISO_INT16 TYPE_NON_ISO_INT32 TYPE_NON_ISO_INT64 +%token <type> TYPE_INT TYPE_UNSIGNED TYPE_SHORT TYPE_LONG TYPE_FLOAT TYPE_DOUBLE TYPE_CHAR TYPE_WCHAR TYPE_VOID TYPE_SIGNED TYPE_BOOL TYPE_COMPLEX TYPE_TYPEDEF TYPE_RAW TYPE_NON_ISO_INT8 TYPE_NON_ISO_INT16 TYPE_NON_ISO_INT32 TYPE_NON_ISO_INT64 TYPE_AUTO %token LPAREN RPAREN COMMA SEMI EXTERN INIT LBRACE RBRACE PERIOD %token CONST_QUAL VOLATILE REGISTER STRUCT UNION EQUAL SIZEOF MODULE LBRACKET RBRACKET %token ILLEGAL CONSTANT @@ -1501,6 +1501,7 @@ %token WARN %token LESSTHAN GREATERTHAN MODULO DELETE_KW %token LESSTHANOREQUALTO GREATERTHANOREQUALTO EQUALTO NOTEQUALTO +%token ARROW %token QUESTIONMARK %token TYPES PARMS %token NONID DSTAR DCNOT @@ -1534,7 +1535,7 @@ %type <node> types_directive template_directive warn_directive ; /* C declarations */ -%type <node> c_declaration c_decl c_decl_tail c_enum_decl c_enum_forward_decl c_constructor_decl ; +%type <node> c_declaration c_decl c_decl_tail c_enum_decl c_enum_forward_decl c_constructor_decl c_rettype ; %type <node> enumlist edecl; /* C++ declarations */ @@ -2939,25 +2940,25 @@ A C global declaration of some kind (may be variable, function, typedef, etc.) ------------------------------------------------------------ */ -c_decl : storage_class type declarator initializer c_decl_tail { +c_decl : storage_class type declarator c_rettype initializer c_decl_tail { $$ = new_node("cdecl"); - if ($4.qualifier) SwigType_push($3.type,$4.qualifier); + if ($5.qualifier) SwigType_push($3.type,$5.qualifier); Setattr($$,"type",$2); Setattr($$,"storage",$1); Setattr($$,"name",$3.id); Setattr($$,"decl",$3.type); Setattr($$,"parms",$3.parms); - Setattr($$,"value",$4.val); - Setattr($$,"throws",$4.throws); - Setattr($$,"throw",$4.throwf); - if (!$5) { + Setattr($$,"value",$5.val); + Setattr($$,"throws",$5.throws); + Setattr($$,"throw",$5.throwf); + if (!$6) { if (Len(scanner_ccode)) { String *code = Copy(scanner_ccode); Setattr($$,"code",code); Delete(code); } } else { - Node *n = $5; + Node *n = $6; /* Inherit attributes */ while (n) { String *type = Copy($2); @@ -2967,8 +2968,8 @@ Delete(type); } } - if ($4.bitfield) { - Setattr($$,"bitfield", $4.bitfield); + if ($5.bitfield) { + Setattr($$,"bitfield", $5.bitfield); } /* Look for "::" declarations (ignored) */ @@ -2982,22 +2983,33 @@ String *lstr = Swig_scopename_last($3.id); Setattr($$,"name",lstr); Delete(lstr); - set_nextSibling($$,$5); + set_nextSibling($$,$6); } else { Delete($$); - $$ = $5; + $$ = $6; } Delete(p); } else { Delete($$); - $$ = $5; + $$ = $6; } } else { - set_nextSibling($$,$5); + set_nextSibling($$,$6); } } ; +/* Alternate function syntax: + auto funcName(int x, int y) -> int; */ + +c_rettype : ARROW type { + $$ = new_node("rettype"); + Setattr($$,"type",$2); + } + | empty { + $$ = 0; + } + ; /* Allow lists of variables and functions to be built up */ c_decl_tail : SEMI { @@ -5209,6 +5221,7 @@ } | TYPE_BOOL { $$ = $1; } | TYPE_VOID { $$ = $1; } + | TYPE_AUTO { $$ = $1; } | TYPE_TYPEDEF template_decl { $$ = NewStringf("%s%s",$1,$2); } | ENUM idcolon { $$ = NewStringf("enum %s", $2); } | TYPE_RAW { $$ = $1; } Modified: branches/gsoc2009-matevz/Source/Swig/stype.c =================================================================== --- branches/gsoc2009-matevz/Source/Swig/stype.c 2009-07-17 10:21:25 UTC (rev 11413) +++ branches/gsoc2009-matevz/Source/Swig/stype.c 2009-07-17 11:17:01 UTC (rev 11414) @@ -141,6 +141,9 @@ case T_VOID: return NewString("void"); break; + case T_AUTO: + return NewString("auto"); + break; default: break; } Modified: branches/gsoc2009-matevz/Source/Swig/swig.h =================================================================== --- branches/gsoc2009-matevz/Source/Swig/swig.h 2009-07-17 10:21:25 UTC (rev 11413) +++ branches/gsoc2009-matevz/Source/Swig/swig.h 2009-07-17 11:17:01 UTC (rev 11414) @@ -73,6 +73,7 @@ #define T_FLTCPLX 23 #define T_DBLCPLX 24 #define T_NUMERIC 25 +#define T_AUTO 26 #define T_COMPLEX T_DBLCPLX Modified: branches/gsoc2009-matevz/Source/Swig/typesys.c =================================================================== --- branches/gsoc2009-matevz/Source/Swig/typesys.c 2009-07-17 10:21:25 UTC (rev 11413) +++ branches/gsoc2009-matevz/Source/Swig/typesys.c 2009-07-17 11:17:01 UTC (rev 11414) @@ -1257,6 +1257,8 @@ return T_ULONGLONG; if (strncmp(c, "enum ", 5) == 0) return T_INT; + if (strcmp(c, "auto") == 0) + return T_AUTO; if (strcmp(c, "v(...)") == 0) return T_VARARGS; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-07-18 21:34:58
|
Revision: 11418 http://swig.svn.sourceforge.net/swig/?rev=11418&view=rev Author: matevz Date: 2009-07-18 21:34:53 +0000 (Sat, 18 Jul 2009) Log Message: ----------- Added initial support for hash tables unordered_ types. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_hash_tables.i branches/gsoc2009-matevz/Lib/std/std_multimap.i branches/gsoc2009-matevz/Lib/std/std_multiset.i Added Paths: ----------- branches/gsoc2009-matevz/Lib/python/std_unordered_map.i branches/gsoc2009-matevz/Lib/python/std_unordered_multimap.i branches/gsoc2009-matevz/Lib/python/std_unordered_multiset.i branches/gsoc2009-matevz/Lib/python/std_unordered_set.i branches/gsoc2009-matevz/Lib/std/std_unordered_map.i branches/gsoc2009-matevz/Lib/std/std_unordered_multimap.i branches/gsoc2009-matevz/Lib/std/std_unordered_multiset.i branches/gsoc2009-matevz/Lib/std/std_unordered_set.i Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_hash_tables.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_hash_tables.i 2009-07-18 19:15:36 UTC (rev 11417) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_hash_tables.i 2009-07-18 21:34:53 UTC (rev 11418) @@ -2,17 +2,19 @@ %inline %{ #include <set> -#include <map> +//#include <map> #include <unordered_set> -#include <unordered_map> +//#include <unordered_map> %} %include "std_set.i" -%include "std_map.i" +//%include "std_map.i" +%include "std_unordered_set.i" +//%include "std_unordered_map.i" %template (SetInt) std::set<int>; -%template (MapIntInt) std::map<int, int>; +//%template (MapIntInt) std::map<int, int>; %template (UnorderedSetInt) std::unordered_set<int>; -%template (UnorderedMapIntInt) std::unordered_map<int, int>; +//%template (UnorderedMapIntInt) std::unordered_map<int, int>; %inline %{ using namespace std; @@ -21,19 +23,19 @@ public: set<int> getSet() { return _set; } void addSet(int elt) { _set.insert(_set.begin(), elt); } - map<int, int> getMap() { return _map; } - void addMap(int elt1, int elt2) { _map.insert(make_pair(elt1, elt2)); } +// map<int, int> getMap() { return _map; } +// void addMap(int elt1, int elt2) { _map.insert(make_pair(elt1, elt2)); } unordered_set<int> getUnorderedSet() { return _unordered_set; } void addUnorderedSet(int elt) { _unordered_set.insert(_unordered_set.begin(), elt); } - unordered_map<int, int> getUnorderedMap() { return _unordered_map; } - void addUnorderedMap(int elt1, int elt2) { _unordered_map.insert(make_pair(elt1, elt2)); } +// unordered_map<int, int> getUnorderedMap() { return _unordered_map; } +// void addUnorderedMap(int elt1, int elt2) { _unordered_map.insert(make_pair(elt1, elt2)); } private: set<int> _set; - map<int, int> _map; +// map<int, int> _map; unordered_set<int> _unordered_set; - unordered_map<int, int> _unordered_map; +// unordered_map<int, int> _unordered_map; }; %} Added: branches/gsoc2009-matevz/Lib/python/std_unordered_map.i =================================================================== --- branches/gsoc2009-matevz/Lib/python/std_unordered_map.i (rev 0) +++ branches/gsoc2009-matevz/Lib/python/std_unordered_map.i 2009-07-18 21:34:53 UTC (rev 11418) @@ -0,0 +1,251 @@ +/* + Unordered Maps +*/ + +%fragment("StdMapTraits","header",fragment="StdSequenceTraits") +{ + namespace swig { + template <class SwigPySeq, class K, class T > + inline void + assign(const SwigPySeq& swigpyseq, std::unordered_map<K,T > *unordered_map) { + typedef typename std::unordered_map<K,T>::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + unordered_map->insert(value_type(it->first, it->second)); + } + } + + template <class K, class T> + struct traits_asptr<std::unordered_map<K,T> > { + typedef std::unordered_map<K,T> unordered_map_type; + static int asptr(PyObject *obj, unordered_map_type **val) { + int res = SWIG_ERROR; + if (PyDict_Check(obj)) { + SwigVar_PyObject items = PyObject_CallMethod(obj,(char *)"items",NULL); +%#if PY_VERSION_HEX >= 0x03000000 + /* In Python 3.x the ".items()" method return a dict_items object */ + items = PySequence_Fast(items, ".items() havn't returned a sequence!"); +%#endif + res = traits_asptr_stdseq<std::unordered_map<K,T>, std::pair<K, T> >::asptr(items, val); + } else { + unordered_map_type *p; + res = SWIG_ConvertPtr(obj,(void**)&p,swig::type_info<unordered_map_type>(),0); + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + + template <class K, class T > + struct traits_from<std::unordered_map<K,T> > { + typedef std::unordered_map<K,T> unordered_map_type; + typedef typename unordered_map_type::const_iterator const_iterator; + typedef typename unordered_map_type::size_type size_type; + + static PyObject *from(const unordered_map_type& unordered_map) { + swig_type_info *desc = swig::type_info<unordered_map_type>(); + if (desc && desc->clientdata) { + return SWIG_NewPointerObj(new unordered_map_type(unordered_map), desc, SWIG_POINTER_OWN); + } else { + size_type size = unordered_map.size(); + int pysize = (size <= (size_type) INT_MAX) ? (int) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, + "unordered_map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject *obj = PyDict_New(); + for (const_iterator i= unordered_map.begin(); i!= unordered_map.end(); ++i) { + swig::SwigVar_PyObject key = swig::from(i->first); + swig::SwigVar_PyObject val = swig::from(i->second); + PyDict_SetItem(obj, key, val); + } + return obj; + } + } + }; + + template <class ValueType> + struct from_key_oper + { + typedef const ValueType& argument_type; + typedef PyObject *result_type; + result_type operator()(argument_type v) const + { + return swig::from(v.first); + } + }; + + template <class ValueType> + struct from_value_oper + { + typedef const ValueType& argument_type; + typedef PyObject *result_type; + result_type operator()(argument_type v) const + { + return swig::from(v.second); + } + }; + + template<class OutIterator, class FromOper, class ValueType = typename OutIterator::value_type> + struct SwigPyMapIterator_T : SwigPyIteratorClosed_T<OutIterator, ValueType, FromOper> + { + SwigPyMapIterator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyIteratorClosed_T<OutIterator,ValueType,FromOper>(curr, first, last, seq) + { + } + }; + + + template<class OutIterator, + class FromOper = from_key_oper<typename OutIterator::value_type> > + struct SwigPyMapKeyIterator_T : SwigPyMapIterator_T<OutIterator, FromOper> + { + SwigPyMapKeyIterator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyMapIterator_T<OutIterator, FromOper>(curr, first, last, seq) + { + } + }; + + template<typename OutIter> + inline SwigPyIterator* + make_output_key_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, PyObject *seq = 0) + { + return new SwigPyMapKeyIterator_T<OutIter>(current, begin, end, seq); + } + + template<class OutIterator, + class FromOper = from_value_oper<typename OutIterator::value_type> > + struct SwigPyMapValueITerator_T : SwigPyMapIterator_T<OutIterator, FromOper> + { + SwigPyMapValueITerator_T(OutIterator curr, OutIterator first, OutIterator last, PyObject *seq) + : SwigPyMapIterator_T<OutIterator, FromOper>(curr, first, last, seq) + { + } + }; + + + template<typename OutIter> + inline SwigPyIterator* + make_output_value_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, PyObject *seq = 0) + { + return new SwigPyMapValueITerator_T<OutIter>(current, begin, end, seq); + } + } +} + +%define %swig_unordered_map_common(Map...) + %swig_sequence_iterator(Map); + %swig_container_methods(Map) + + %extend { + mapped_type __getitem__(const key_type& key) const throw (std::out_of_range) { + Map::const_iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + + void __delitem__(const key_type& key) throw (std::out_of_range) { + Map::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + + bool has_key(const key_type& key) const { + Map::const_iterator i = self->find(key); + return i != self->end(); + } + + PyObject* keys() { + Map::size_type size = self->size(); + int pysize = (size <= (Map::size_type) INT_MAX) ? (int) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, + "unordered_map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* keyList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (int j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(keyList, j, swig::from(i->first)); + } + return keyList; + } + + PyObject* values() { + Map::size_type size = self->size(); + int pysize = (size <= (Map::size_type) INT_MAX) ? (int) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, + "unordered_map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* valList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (int j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(valList, j, swig::from(i->second)); + } + return valList; + } + + PyObject* items() { + Map::size_type size = self->size(); + int pysize = (size <= (Map::size_type) INT_MAX) ? (int) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, + "unordered_map size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject* itemList = PyList_New(pysize); + Map::const_iterator i = self->begin(); + for (int j = 0; j < pysize; ++i, ++j) { + PyList_SET_ITEM(itemList, j, swig::from(*i)); + } + return itemList; + } + + // Python 2.2 methods + bool __contains__(const key_type& key) { + return self->find(key) != self->end(); + } + + %newobject key_iterator(PyObject **PYTHON_SELF); + swig::SwigPyIterator* key_iterator(PyObject **PYTHON_SELF) { + return swig::make_output_key_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %newobject value_iterator(PyObject **PYTHON_SELF); + swig::SwigPyIterator* value_iterator(PyObject **PYTHON_SELF) { + return swig::make_output_value_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); + } + + %pythoncode {def __iter__(self): return self.key_iterator()} + %pythoncode {def iterkeys(self): return self.key_iterator()} + %pythoncode {def itervalues(self): return self.value_iterator()} + %pythoncode {def iteritems(self): return self.iterator()} + } +%enddef + +%define %swig_unordered_map_methods(Map...) + %swig_unordered_map_common(Map) + %extend { + void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { + (*self)[key] = x; + } + } +%enddef + + +%include <std/std_unordered_map.i> Added: branches/gsoc2009-matevz/Lib/python/std_unordered_multimap.i =================================================================== --- branches/gsoc2009-matevz/Lib/python/std_unordered_multimap.i (rev 0) +++ branches/gsoc2009-matevz/Lib/python/std_unordered_multimap.i 2009-07-18 21:34:53 UTC (rev 11418) @@ -0,0 +1,79 @@ +/* + Unordered Multimaps +*/ +%include <std_unordered_map.i> + +%fragment("StdUnorderedMultimapTraits","header",fragment="StdSequenceTraits") +{ + namespace swig { + template <class SwigPySeq, class K, class T > + inline void + assign(const SwigPySeq& swigpyseq, std::unordered_multimap<K,T > *unordered_multimap) { + typedef typename std::unordered_multimap<K,T>::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + unordered_multimap->insert(value_type(it->first, it->second)); + } + } + + template <class K, class T> + struct traits_asptr<std::unordered_multimap<K,T> > { + typedef std::unordered_multimap<K,T> unordered_multimap_type; + static int asptr(PyObject *obj, std::unordered_multimap<K,T> **val) { + int res = SWIG_ERROR; + if (PyDict_Check(obj)) { + SwigVar_PyObject items = PyObject_CallMethod(obj,(char *)"items",NULL); + return traits_asptr_stdseq<std::unordered_multimap<K,T>, std::pair<K, T> >::asptr(items, val); + } else { + unordered_multimap_type *p; + res = SWIG_ConvertPtr(obj,(void**)&p,swig::type_info<unordered_multimap_type>(),0); + if (SWIG_IsOK(res) && val) *val = p; + } + return res; + } + }; + + template <class K, class T > + struct traits_from<std::unordered_multimap<K,T> > { + typedef std::unordered_multimap<K,T> unordered_multimap_type; + typedef typename unordered_multimap_type::const_iterator const_iterator; + typedef typename unordered_multimap_type::size_type size_type; + + static PyObject *from(const unordered_multimap_type& unordered_multimap) { + swig_type_info *desc = swig::type_info<unordered_multimap_type>(); + if (desc && desc->clientdata) { + return SWIG_NewPointerObj(new unordered_multimap_type(unordered_multimap), desc, SWIG_POINTER_OWN); + } else { + size_type size = unordered_multimap.size(); + int pysize = (size <= (size_type) INT_MAX) ? (int) size : -1; + if (pysize < 0) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(PyExc_OverflowError, + "unordered_multimap size not valid in python"); + SWIG_PYTHON_THREAD_END_BLOCK; + return NULL; + } + PyObject *obj = PyDict_New(); + for (const_iterator i= unordered_multimap.begin(); i!= unordered_multimap.end(); ++i) { + swig::SwigVar_PyObject key = swig::from(i->first); + swig::SwigVar_PyObject val = swig::from(i->second); + PyDict_SetItem(obj, key, val); + } + return obj; + } + } + }; + } +} + +%define %swig_unordered_multimap_methods(Type...) + %swig_map_common(Type); + %extend { + void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { + self->insert(Type::value_type(key,x)); + } + } +%enddef + +%include <std/std_unordered_multimap.i> + Added: branches/gsoc2009-matevz/Lib/python/std_unordered_multiset.i =================================================================== --- branches/gsoc2009-matevz/Lib/python/std_unordered_multiset.i (rev 0) +++ branches/gsoc2009-matevz/Lib/python/std_unordered_multiset.i 2009-07-18 21:34:53 UTC (rev 11418) @@ -0,0 +1,41 @@ +/* + Unordered Multisets +*/ + +%include <std_unordered_set.i> + +%fragment("StdUnorderedMultisetTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template <class SwigPySeq, class T> + inline void + assign(const SwigPySeq& swigpyseq, std::unordered_multiset<T>* seq) { + // seq->insert(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template <class T> + struct traits_asptr<std::unordered_multiset<T> > { + static int asptr(PyObject *obj, std::unordered_multiset<T> **m) { + return traits_asptr_stdseq<std::unordered_multiset<T> >::asptr(obj, m); + } + }; + + template <class T> + struct traits_from<std::unordered_multiset<T> > { + static PyObject *from(const std::unordered_multiset<T>& vec) { + return traits_from_stdseq<std::unordered_multiset<T> >::from(vec); + } + }; + } +%} + +#define %swig_unordered_multiset_methods(Set...) %swig_set_methods(Set) + + + +%include <std/std_unordered_multiset.i> Added: branches/gsoc2009-matevz/Lib/python/std_unordered_set.i =================================================================== --- branches/gsoc2009-matevz/Lib/python/std_unordered_set.i (rev 0) +++ branches/gsoc2009-matevz/Lib/python/std_unordered_set.i 2009-07-18 21:34:53 UTC (rev 11418) @@ -0,0 +1,55 @@ +/* + Unordered Sets +*/ + +%fragment("StdUnorderedSetTraits","header",fragment="StdSequenceTraits") +%{ + namespace swig { + template <class SwigPySeq, class T> + inline void + assign(const SwigPySeq& swigpyseq, std::unordered_set<T>* seq) { + // seq->insert(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template <class T> + struct traits_asptr<std::unordered_set<T> > { + static int asptr(PyObject *obj, std::unordered_set<T> **s) { + return traits_asptr_stdseq<std::unordered_set<T> >::asptr(obj, s); + } + }; + + template <class T> + struct traits_from<std::unordered_set<T> > { + static PyObject *from(const std::unordered_set<T>& vec) { + return traits_from_stdseq<std::unordered_set<T> >::from(vec); + } + }; + } +%} + +%define %swig_unordered_set_methods(unordered_set...) + %swig_sequence_iterator(unordered_set); + %swig_container_methods(unordered_set); + + %extend { + void append(value_type x) { + self->insert(x); + } + + bool __contains__(value_type x) { + return self->find(x) != self->end(); + } + + value_type __getitem__(difference_type i) const throw (std::out_of_range) { + return *(swig::cgetpos(self, i)); + } + + }; +%enddef + +%include <std/std_unordered_set.i> Modified: branches/gsoc2009-matevz/Lib/std/std_multimap.i =================================================================== --- branches/gsoc2009-matevz/Lib/std/std_multimap.i 2009-07-18 19:15:36 UTC (rev 11417) +++ branches/gsoc2009-matevz/Lib/std/std_multimap.i 2009-07-18 21:34:53 UTC (rev 11418) @@ -1,5 +1,5 @@ // -// std::map +// std::multimap // %include <std_map.i> Modified: branches/gsoc2009-matevz/Lib/std/std_multiset.i =================================================================== --- branches/gsoc2009-matevz/Lib/std/std_multiset.i 2009-07-18 19:15:36 UTC (rev 11417) +++ branches/gsoc2009-matevz/Lib/std/std_multiset.i 2009-07-18 21:34:53 UTC (rev 11418) @@ -1,5 +1,5 @@ // -// std::set +// std::multiset // %include <std_set.i> Added: branches/gsoc2009-matevz/Lib/std/std_unordered_map.i =================================================================== --- branches/gsoc2009-matevz/Lib/std/std_unordered_map.i (rev 0) +++ branches/gsoc2009-matevz/Lib/std/std_unordered_map.i 2009-07-18 21:34:53 UTC (rev 11418) @@ -0,0 +1,124 @@ +// +// std::unordered_map +// + +%include <std_pair.i> +%include <std_container.i> + +%define %std_unordered_map_methods_common(unordered_map...) + %std_container_methods(unordered_map); + + size_type erase(const key_type& x); + size_type count(const key_type& x) const; + +#ifdef SWIG_EXPORT_ITERATOR_METHODS +// iterator insert(iterator position, const value_type& x); + void erase(iterator position); + void erase(iterator first, iterator last); + + iterator find(const key_type& x); + iterator lower_bound(const key_type& x); + iterator upper_bound(const key_type& x); +#endif +%enddef + +%define %std_unordered_map_methods(unordered_map...) + %std_unordered_map_methods_common(unordered_map); + + #ifdef SWIG_EXPORT_ITERATOR_METHODS +// iterator insert(const value_type& x); + #endif +%enddef + + +// ------------------------------------------------------------------------ +// std::unordered_map +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::unordered_map<T>), f(const std::unordered_map<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::unordered_map<T> can be passed. +// -- f(std::unordered_map<T>&), f(std::unordered_map<T>*): +// the parameter may be modified; therefore, only a wrapped std::unordered_map +// can be passed. +// -- std::unordered_map<T> f(), const std::unordered_map<T>& f(): +// the unordered_map is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::unordered_map<T>& f(), std::unordered_map<T>* f(): +// the unordered_map is returned by reference; therefore, a wrapped std::unordered_map +// is returned +// -- const std::unordered_map<T>* f(), f(const std::unordered_map<T>*): +// for consistency, they expect and return a plain unordered_map pointer. +// ------------------------------------------------------------------------ + +%{ +#include <unordered_map> +#include <algorithm> +#include <stdexcept> +%} + +// exported class + +namespace std { + + template<class _Key, class _Tp, class _Compare = std::less<_Key >, + class _Alloc = allocator<std::pair<const _Key, _Tp > > > + class unordered_map { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair<const _Key, _Tp> value_type; + + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::pair< _Key, _Tp >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment=SWIG_Traits_frag(_Tp), + fragment="StdPairTraits") { + namespace swig { + template <> struct traits<std::pair< _Key, _Tp > > { + typedef pointer_category category; + static const char* type_name() { + return "std::pair<" #_Key "," #_Tp " >"; + } + }; + } + } + + %fragment(SWIG_Traits_frag(std::unordered_map<_Key, _Tp, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(std::pair<_Key, _Tp >), + fragment="StdMapTraits") { + namespace swig { + template <> struct traits<std::unordered_map<_Key, _Tp, _Compare, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::unordered_map<" #_Key "," #_Tp "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MAP, std::unordered_map<_Key, _Tp, _Compare, _Alloc >); + + unordered_map( const _Compare& ); + +#ifdef %swig_unordered_map_methods + // Add swig/language extra methods + %swig_unordered_map_methods(std::unordered_map<_Key, _Tp, _Compare, _Alloc >); +#endif + + %std_unordered_map_methods(unordered_map); + }; + +} Added: branches/gsoc2009-matevz/Lib/std/std_unordered_multimap.i =================================================================== --- branches/gsoc2009-matevz/Lib/std/std_unordered_multimap.i (rev 0) +++ branches/gsoc2009-matevz/Lib/std/std_unordered_multimap.i 2009-07-18 21:34:53 UTC (rev 11418) @@ -0,0 +1,87 @@ +// +// std::unordered_multimap +// + +%include <std_unordered_map.i> + + +%define %std_unordered_multimap_methods(mmap...) + %std_map_methods_common(mmap); + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + std::pair<iterator,iterator> equal_range(const key_type& x); + std::pair<const_iterator,const_iterator> equal_range(const key_type& x) const; +#endif +%enddef + +// ------------------------------------------------------------------------ +// std::unordered_multimap +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::unordered_multimap<T>), f(const std::unordered_multimap<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::unordered_multimap<T> can be passed. +// -- f(std::unordered_multimap<T>&), f(std::unordered_multimap<T>*): +// the parameter may be modified; therefore, only a wrapped std::unordered_multimap +// can be passed. +// -- std::unordered_multimap<T> f(), const std::unordered_multimap<T>& f(): +// the map is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::unordered_multimap<T>& f(), std::unordered_multimap<T>* f(): +// the map is returned by reference; therefore, a wrapped std::unordered_multimap +// is returned +// -- const std::unordered_multimap<T>* f(), f(const std::unordered_multimap<T>*): +// for consistency, they expect and return a plain map pointer. +// ------------------------------------------------------------------------ + + +// exported class + + +namespace std { + template<class _Key, class _Tp, class _Compare = std::less<_Key >, + class _Alloc = allocator<std::pair<const _Key, _Tp > > > + class unordered_multimap { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair<const _Key, _Tp> value_type; + + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + %traits_swigtype(_Tp); + + %fragment(SWIG_Traits_frag(std::unordered_multimap<_Key, _Tp, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(std::pair<_Key, _Tp >), + fragment="StdMultimapTraits") { + namespace swig { + template <> struct traits<std::unordered_multimap<_Key, _Tp, _Compare, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::unordered_multimap<" #_Key "," #_Tp "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MULTIMAP, std::unordered_multimap<_Key, _Tp, _Compare, _Alloc >); + + unordered_multimap( const _Compare& ); + +#ifdef %swig_unordered_multimap_methods + // Add swig/language extra methods + %swig_unordered_multimap_methods(std::unordered_multimap<_Key, _Tp, _Compare, _Alloc >); +#endif + + %std_unordered_multimap_methods(unordered_multimap); + }; +} Added: branches/gsoc2009-matevz/Lib/std/std_unordered_multiset.i =================================================================== --- branches/gsoc2009-matevz/Lib/std/std_unordered_multiset.i (rev 0) +++ branches/gsoc2009-matevz/Lib/std/std_unordered_multiset.i 2009-07-18 21:34:53 UTC (rev 11418) @@ -0,0 +1,83 @@ +// +// std::unordered_multiset +// + +%include <std_unordered_set.i> + +// Unordered Multiset + +%define %std_unordered_multiset_methods(unordered_multiset...) + %std_unordered_set_methods_common(unordered_multiset); +%enddef + + +// ------------------------------------------------------------------------ +// std::unordered_multiset +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::unordered_multiset<T>), f(const std::unordered_multiset<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::unordered_multiset<T> can be passed. +// -- f(std::unordered_multiset<T>&), f(std::unordered_multiset<T>*): +// the parameter may be modified; therefore, only a wrapped std::unordered_multiset +// can be passed. +// -- std::unordered_multiset<T> f(), const std::unordered_multiset<T>& f(): +// the set is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::unordered_multiset<T>& f(), std::unordered_multiset<T>* f(): +// the set is returned by reference; therefore, a wrapped std::unordered_multiset +// is returned +// -- const std::unordered_multiset<T>* f(), f(const std::unordered_multiset<T>*): +// for consistency, they expect and return a plain set pointer. +// ------------------------------------------------------------------------ + + +// exported classes + +namespace std { + + //unordered_multiset + + template <class _Key, class _Compare = std::less<_Key>, + class _Alloc = allocator<_Key> > + class unordered_multiset { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Key value_type; + typedef _Key key_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + + %fragment(SWIG_Traits_frag(std::unordered_multiset<_Key, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment="StdMultisetTraits") { + namespace swig { + template <> struct traits<std::unordered_multiset<_Key, _Compare, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::unordered_multiset<" #_Key "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_MULTISET, std::unordered_multiset<_Key, _Compare, _Alloc >); + + unordered_multiset( const _Compare& ); + +#ifdef %swig_unordered_multiset_methods + // Add swig/language extra methods + %swig_unordered_multiset_methods(std::unordered_multiset<_Key, _Compare, _Alloc >); +#endif + + %std_unordered_multiset_methods(unordered_multiset); + }; +} Added: branches/gsoc2009-matevz/Lib/std/std_unordered_set.i =================================================================== --- branches/gsoc2009-matevz/Lib/std/std_unordered_set.i (rev 0) +++ branches/gsoc2009-matevz/Lib/std/std_unordered_set.i 2009-07-18 21:34:53 UTC (rev 11418) @@ -0,0 +1,116 @@ +// +// std::unordered_set +// + +%include <std_container.i> +%include <std_pair.i> + +// Unordered Set +%define %std_unordered_set_methods_common(unordered_set...) + unordered_set(); + unordered_set( const unordered_set& ); + + bool empty() const; + size_type size() const; + void clear(); + + void swap(unordered_set& v); + + + size_type erase(const key_type& x); + size_type count(const key_type& x) const; + +#ifdef SWIG_EXPORT_ITERATOR_METHODS + class iterator; + + iterator begin(); + iterator end(); + + void erase(iterator pos); + void erase(iterator first, iterator last); + + iterator find(const key_type& x); + std::pair<iterator,iterator> equal_range(const key_type& x); +#endif +%enddef + +%define %std_unordered_set_methods(unordered_set...) + %std_unordered_set_methods_common(unordered_set); +#ifdef SWIG_EXPORT_ITERATOR_METHODS + std::pair<iterator,bool> insert(const value_type& __x); +#endif +%enddef + +// ------------------------------------------------------------------------ +// std::unordered_set +// +// const declarations are used to guess the intent of the function being +// exported; therefore, the following rationale is applied: +// +// -- f(std::unordered_set<T>), f(const std::unordered_set<T>&): +// the parameter being read-only, either a sequence or a +// previously wrapped std::unordered_set<T> can be passed. +// -- f(std::unordered_set<T>&), f(std::unordered_set<T>*): +// the parameter may be modified; therefore, only a wrapped std::unordered_set +// can be passed. +// -- std::unordered_set<T> f(), const std::unordered_set<T>& f(): +// the unordered_set is returned by copy; therefore, a sequence of T:s +// is returned which is most easily used in other functions +// -- std::unordered_set<T>& f(), std::unordered_set<T>* f(): +// the unordered_set is returned by reference; therefore, a wrapped std::unordered_set +// is returned +// -- const std::unordered_set<T>* f(), f(const std::unordered_set<T>*): +// for consistency, they expect and return a plain unordered_set pointer. +// ------------------------------------------------------------------------ + +%{ +#include <unordered_set> +%} + +// exported classes + +namespace std { + + template <class _Key, class _Hash = std::hash<_Key>, + class _Compare = std::equal_to<_Key>, + class _Alloc = allocator<_Key> > + class unordered_set { + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Hash hasher; + typedef _Key value_type; + typedef _Key key_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef _Alloc allocator_type; + + %traits_swigtype(_Key); + + %fragment(SWIG_Traits_frag(std::unordered_set<_Key, _Hash, _Compare, _Alloc >), "header", + fragment=SWIG_Traits_frag(_Key), + fragment="StdUnorderedSetTraits") { + namespace swig { + template <> struct traits<std::unordered_set<_Key, _Hash, _Compare, _Alloc > > { + typedef pointer_category category; + static const char* type_name() { + return "std::unordered_set<" #_Key "," #_Hash "," #_Compare "," #_Alloc " >"; + } + }; + } + } + + %typemap_traits_ptr(SWIG_TYPECHECK_SET, std::unordered_set<_Key, _Hash, _Compare, _Alloc >); + + unordered_set( const _Compare& ); + +#ifdef %swig_unordered_set_methods + // Add swig/language extra methods + %swig_unordered_set_methods(std::unordered_set<_Key, _Hash, _Compare, _Alloc >); +#endif + + %std_unordered_set_methods(unordered_set); + }; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-07-25 16:48:38
|
Revision: 11449 http://swig.svn.sourceforge.net/swig/?rev=11449&view=rev Author: matevz Date: 2009-07-25 16:48:30 +0000 (Sat, 25 Jul 2009) Log Message: ----------- Added initial support for parsing C++0x strongly typed enumerations. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/CParse/parser.y Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_strongly_typed_enumerations.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-24 12:00:59 UTC (rev 11448) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-25 16:48:30 UTC (rev 11449) @@ -406,7 +406,8 @@ cpp0x_static_assert \ cpp0x_template_explicit \ cpp0x_uniform_initialization \ - cpp0x_function_objects + cpp0x_function_objects \ + cpp0x_strongly_typed_enumerations # cpp0x_alternate_function_syntax # not fully implemented yet # cpp0x_hash_types # not fully implemented yet # cpp0x_unrestricted_unions # not supported by any compilers yet Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_strongly_typed_enumerations.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_strongly_typed_enumerations.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_strongly_typed_enumerations.i 2009-07-25 16:48:30 UTC (rev 11449) @@ -0,0 +1,36 @@ +%module cpp0x_strongly_typed_enumerations + +%inline %{ +enum class Enum1 { + Val1, + Val2, + Val3 = 100, + Val4 /* = 101 */ +}; + +enum class Enum2 : short { + Val1, + Val2, + Val3 = 100, + Val4 +}; + +/* Forward declarations. GCC doesn't support them */ +//enum Enum3; // Illegal in C++ and C++0x; no size is explicitly specified. +//enum Enum4 : unsigned int; // Legal in C++0x. +//enum class Enum5; // Legal in C++0x, because enum class declarations have a default type of "int". +//enum class Enum6 : unsigned int; // Legal C++0x. +//enum Enum2 : unsigned short; // Illegal in C++0x, because Enum2 was previously declared with a different type. + +enum Enum4 : unsigned int { + Val1, Val2, Val3 = 100, Val4 +}; + +enum class Enum5 { + Val1, Val2, Val3 = 100, Val4 +}; + +enum class Enum6 : unsigned int { + Val1, Val2, Val3 = 300, Val4 +}; +%} Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-24 12:00:59 UTC (rev 11448) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-25 16:48:30 UTC (rev 11449) @@ -1,4 +1,4 @@ -/* ----------------------------------------------------------------------------- + /* ----------------------------------------------------------------------------- * See the LICENSE file for information on copyright, usage and redistribution * of SWIG, and the README file for authors - http://www.swig.org/release.html. * @@ -1535,7 +1535,7 @@ %type <node> types_directive template_directive warn_directive ; /* C declarations */ -%type <node> c_declaration c_decl c_decl_tail c_enum_decl c_enum_forward_decl c_constructor_decl c_rettype ; +%type <node> c_declaration c_decl c_decl_tail c_enum_keyword c_enum_inherit c_enum_decl c_enum_forward_decl c_constructor_decl c_rettype ; %type <node> enumlist edecl; /* C++ declarations */ @@ -3071,15 +3071,40 @@ ; + /* ------------------------------------------------------------ - enum Name; + enum + or + enum class ------------------------------------------------------------ */ -c_enum_forward_decl : storage_class ENUM ID SEMI { +c_enum_keyword : ENUM { + $$ = (char*)"enumkeyword"; + } + | ENUM CLASS { + $$ = (char*)"enumclasskeyword"; + } + ; + +/* ------------------------------------------------------------ + base enum type (eg. unsigned short) + ------------------------------------------------------------ */ + +c_enum_inherit : COLON primitive_type { + $$ = $2; + } + | empty { $$ = 0; } + ; +/* ------------------------------------------------------------ + enum [class] Name; + ------------------------------------------------------------ */ + +c_enum_forward_decl : storage_class c_enum_keyword c_enum_inherit ID SEMI { SwigType *ty = 0; $$ = new_node("enumforward"); - ty = NewStringf("enum %s", $3); - Setattr($$,"name",$3); + ty = NewStringf("enum %s", $4); + Setattr($$,"enumkeyword",$2); + Setattr($$,"name",$4); Setattr($$,"type",ty); Setattr($$,"sym:weak", "1"); add_symbols($$); @@ -3087,52 +3112,58 @@ ; /* ------------------------------------------------------------ - enum { ... } + enum [class] Name [: base_type] { ... }; + or + enum [class] Name [: base_type] { ... } MyEnum [= ...]; * ------------------------------------------------------------ */ -c_enum_decl : storage_class ENUM ename LBRACE enumlist RBRACE SEMI { +c_enum_decl : storage_class c_enum_keyword ename c_enum_inherit LBRACE enumlist RBRACE SEMI { SwigType *ty = 0; $$ = new_node("enum"); ty = NewStringf("enum %s", $3); + Setattr($$,"enumkeyword",$2); Setattr($$,"name",$3); + Setattr($$,"inherit",$4); Setattr($$,"type",ty); - appendChild($$,$5); - add_symbols($$); /* Add to tag space */ - add_symbols($5); /* Add enum values to id space */ + appendChild($$,$6); + add_symbols($$); /* Add to tag space */ + add_symbols($6); /* Add enum values to id space */ } - | storage_class ENUM ename LBRACE enumlist RBRACE declarator c_decl_tail { + | storage_class c_enum_keyword ename c_enum_inherit LBRACE enumlist RBRACE declarator c_decl_tail { Node *n; SwigType *ty = 0; String *unnamed = 0; int unnamedinstance = 0; $$ = new_node("enum"); + Setattr($$,"enumkeyword",$2); + Setattr($$,"inherit",$4); if ($3) { Setattr($$,"name",$3); ty = NewStringf("enum %s", $3); - } else if ($7.id) { + } else if ($8.id) { unnamed = make_unnamed(); ty = NewStringf("enum %s", unnamed); Setattr($$,"unnamed",unnamed); /* name is not set for unnamed enum instances, e.g. enum { foo } Instance; */ if ($1 && Cmp($1,"typedef") == 0) { - Setattr($$,"name",$7.id); + Setattr($$,"name",$8.id); } else { unnamedinstance = 1; } Setattr($$,"storage",$1); } - if ($7.id && Cmp($1,"typedef") == 0) { - Setattr($$,"tdname",$7.id); + if ($8.id && Cmp($1,"typedef") == 0) { + Setattr($$,"tdname",$8.id); Setattr($$,"allows_typedef","1"); } - appendChild($$,$5); + appendChild($$,$6); n = new_node("cdecl"); Setattr(n,"type",ty); - Setattr(n,"name",$7.id); + Setattr(n,"name",$8.id); Setattr(n,"storage",$1); - Setattr(n,"decl",$7.type); - Setattr(n,"parms",$7.parms); + Setattr(n,"decl",$8.type); + Setattr(n,"parms",$8.parms); Setattr(n,"unnamed",unnamed); if (unnamedinstance) { @@ -3142,8 +3173,8 @@ Setattr(n,"unnamedinstance","1"); Delete(cty); } - if ($8) { - Node *p = $8; + if ($9) { + Node *p = $9; set_nextSibling(n,p); while (p) { SwigType *cty = Copy(ty); @@ -3163,8 +3194,8 @@ /* Ensure that typedef enum ABC {foo} XYZ; uses XYZ for sym:name, like structs. * Note that class_rename/yyrename are bit of a mess so used this simple approach to change the name. */ - if ($7.id && $3 && Cmp($1,"typedef") == 0) { - String *name = NewString($7.id); + if ($8.id && $3 && Cmp($1,"typedef") == 0) { + String *name = NewString($8.id); Setattr($$, "parser:makename", name); Delete(name); } @@ -3172,7 +3203,7 @@ add_symbols($$); /* Add enum to tag space */ set_nextSibling($$,n); Delete(n); - add_symbols($5); /* Add enum values to id space */ + add_symbols($6); /* Add enum values to id space */ add_symbols(n); Delete(unnamed); } @@ -5223,7 +5254,7 @@ | TYPE_VOID { $$ = $1; } | TYPE_AUTO { $$ = $1; } | TYPE_TYPEDEF template_decl { $$ = NewStringf("%s%s",$1,$2); } - | ENUM idcolon { $$ = NewStringf("enum %s", $2); } + | c_enum_keyword idcolon { $$ = NewStringf("enum %s", $2); } | TYPE_RAW { $$ = $1; } | idcolon { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-07-25 18:51:44
|
Revision: 11450 http://swig.svn.sourceforge.net/swig/?rev=11450&view=rev Author: matevz Date: 2009-07-25 18:51:37 +0000 (Sat, 25 Jul 2009) Log Message: ----------- Added support for C++0x rvalue and move semantics. Added testcase. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/CParse/parser.y Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_rvalue_reference.i branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_rvalue_reference_runme.py Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-25 16:48:30 UTC (rev 11449) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-25 18:51:37 UTC (rev 11450) @@ -407,7 +407,8 @@ cpp0x_template_explicit \ cpp0x_uniform_initialization \ cpp0x_function_objects \ - cpp0x_strongly_typed_enumerations + cpp0x_strongly_typed_enumerations \ + cpp0x_rvalue_reference # cpp0x_alternate_function_syntax # not fully implemented yet # cpp0x_hash_types # not fully implemented yet # cpp0x_unrestricted_unions # not supported by any compilers yet Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_rvalue_reference.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_rvalue_reference.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_rvalue_reference.i 2009-07-25 18:51:37 UTC (rev 11450) @@ -0,0 +1,23 @@ +%module cpp0x_rvalue_reference + +%inline %{ +class A { +public: + int getAcopy() { return _a; } + int *getAptr() { return &_a; } + int &getAref() { return _a; } + int &&getAmove() { return _a; } + + void setAcopy(int a) { _a = a; } + void setAptr(int *a) { _a = *a; } + void setAref(int &a) { _a = a; } + void setAmove(int &&a) { _a = a; } + + void arg(int a); + void arg(int *a); + void arg(int &a); +// void arg(int &&a); // redefinition not allowed +private: + int _a; +}; +%} Added: branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_rvalue_reference_runme.py =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_rvalue_reference_runme.py (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_rvalue_reference_runme.py 2009-07-25 18:51:37 UTC (rev 11450) @@ -0,0 +1,22 @@ +import cpp0x_rvalue_reference + +a = cpp0x_rvalue_reference.A() + +a.setAcopy(5) +if a.getAcopy() != 5: + raise RunTimeError, "int A::getAcopy() value is ", a.getAcopy(), " should be 5" + +ptr = a.getAptr() + +a.setAptr(ptr) +if a.getAcopy() != 5: + raise RunTimeError, "after A::setAptr(): int A::getAcopy() value is ", a.getAcopy(), " should be 5" + +a.setAref(ptr) +if a.getAcopy() != 5: + raise RunTimeError, "after A::setAref(): int A::getAcopy() value is ", a.getAcopy(), " should be 5" + +a.setAmove(ptr) +if a.getAcopy() != 5: + raise RunTimeError, "after A::setAmove(): int A::getAcopy() value is ", a.getAcopy(), " should be 5" + Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-25 16:48:30 UTC (rev 11449) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-25 18:51:37 UTC (rev 11450) @@ -4804,7 +4804,7 @@ $$ = $1; if (!$$.type) $$.type = NewStringEmpty(); } - | AND notso_direct_declarator { + | AND notso_direct_declarator { $$ = $2; $$.type = NewStringEmpty(); SwigType_add_reference($$.type); @@ -4813,6 +4813,15 @@ Delete($2.type); } } + | LAND notso_direct_declarator { + $$ = $2; + $$.type = NewStringEmpty(); + SwigType_add_reference($$.type); + if ($2.type) { + SwigType_push($$.type,$2.type); + Delete($2.type); + } + } | idcolon DSTAR notso_direct_declarator { SwigType *t = NewStringEmpty(); @@ -5082,7 +5091,7 @@ Delete($2.type); } } - | AND { + | AND { $$.id = 0; $$.parms = 0; $$.have_parms = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-07-27 19:07:46
|
Revision: 11458 http://swig.svn.sourceforge.net/swig/?rev=11458&view=rev Author: matevz Date: 2009-07-27 19:07:38 +0000 (Mon, 27 Jul 2009) Log Message: ----------- Added initial support for variadic templates. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/CParse/parser.y Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-27 02:57:09 UTC (rev 11457) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-27 19:07:38 UTC (rev 11458) @@ -408,7 +408,8 @@ cpp0x_uniform_initialization \ cpp0x_function_objects \ cpp0x_strongly_typed_enumerations \ - cpp0x_rvalue_reference + cpp0x_rvalue_reference \ + cpp0x_variadic_templates # cpp0x_alternate_function_syntax # not fully implemented yet # cpp0x_hash_types # not fully implemented yet # cpp0x_unrestricted_unions # not supported by any compilers yet Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i 2009-07-27 19:07:38 UTC (rev 11458) @@ -0,0 +1,8 @@ +%module cpp0x_variadic_templates + +%inline %{ +template<typename... Values> +class tuple { +}; + +%} Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-27 02:57:09 UTC (rev 11457) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-27 19:07:38 UTC (rev 11458) @@ -5808,6 +5808,14 @@ $$ = (char *)"typename"; if (!inherit_list) last_cpptype = $$; } + | CLASS PERIOD PERIOD PERIOD { + $$ = (char*)"class"; + if (!inherit_list) last_cpptype = $$; + } + | TYPENAME PERIOD PERIOD PERIOD { + $$ = (char *)"typename"; + if (!inherit_list) last_cpptype = $$; + } ; cpptype : templcpptype { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-07-29 13:38:40
|
Revision: 11467 http://swig.svn.sourceforge.net/swig/?rev=11467&view=rev Author: matevz Date: 2009-07-29 13:38:22 +0000 (Wed, 29 Jul 2009) Log Message: ----------- Added variadic '...' syntax for inheritance introduced in C++0x. Added sizeof... syntax introduced in C++0x. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i branches/gsoc2009-matevz/Source/CParse/parser.y Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i 2009-07-29 11:03:22 UTC (rev 11466) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i 2009-07-29 13:38:22 UTC (rev 11467) @@ -1,8 +1,67 @@ +/* This testcase checks whether Swig correctly parses and generates the code + for variadic templates. This covers the variadic number of arguments inside + the template brackets, new functions sizeof... and multiple inheritance + using variadic number of classes. +*/ %module cpp0x_variadic_templates +//////////////////////// +// Variadic templates // +//////////////////////// %inline %{ +#include <vector> +#include <string> +#include <map> + template<typename... Values> -class tuple { +class MultiArgs { }; +class MultiArgs<int, std::vector<int>, std::map<std::string, std::vector<int>>> multiArgs; + %} + +// TODO +//%template (MultiArgs) MultiArgs<int, std::vector<int>, std::map<std::string, std::vector<int>>>; + +//////////////////////// +// Variadic sizeof... // +//////////////////////// +%inline %{ +template<typename ...Args> struct SizeOf { + static const int size = sizeof...(Args); +}; +%} + +// TODO +//%template (SizeOf) SizeOf<int, int>; + +////////////////////////// +// Variadic inheritance // +////////////////////////// +%inline %{ +class A { +public: + A() { + a = 100; + } + + int a; +}; + +class B { +public: + B() { + b = 200; + } + int b; +}; + +template <typename... BaseClasses> class MultiInherit : public BaseClasses... { +public: + MultiInherit(BaseClasses&&... baseClasses) : BaseClasses(baseClasses)... {} +}; +%} + +// TODO +//%template (MultiInherit) MultiInherit<A,B>; Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-29 11:03:22 UTC (rev 11466) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-29 13:38:22 UTC (rev 11467) @@ -1,4 +1,4 @@ - /* ----------------------------------------------------------------------------- +/* ----------------------------------------------------------------------------- * See the LICENSE file for information on copyright, usage and redistribution * of SWIG, and the README file for authors - http://www.swig.org/release.html. * @@ -1549,7 +1549,7 @@ /* Misc */ %type <dtype> initializer cpp_const ; %type <id> storage_class; -%type <pl> parms ptail rawparms varargs_parms; +%type <pl> parms ptail rawparms varargs_parms ; %type <pl> templateparameters templateparameterstail; %type <p> parm valparm rawvalparms valparms valptail ; %type <p> typemap_parm tm_list tm_tail ; @@ -4814,6 +4814,7 @@ } } | LAND notso_direct_declarator { + /* Introduced in C++0x, move operator && */ $$ = $2; $$.type = NewStringEmpty(); SwigType_add_reference($$.type); @@ -5538,6 +5539,11 @@ $$.val = NewStringf("sizeof(%s)",SwigType_str($3,0)); $$.type = T_ULONG; } + | SIZEOF PERIOD PERIOD PERIOD LPAREN type parameter_declarator RPAREN { + SwigType_push($6,$7.type); + $$.val = NewStringf("sizeof...(%s)",SwigType_str($6,0)); + $$.type = T_ULONG; + } | exprcompound { $$ = $1; } | CHARCONST { $$.val = NewString($1); @@ -5792,6 +5798,30 @@ cparse_line,"%s inheritance ignored.\n", $2); } } + | opt_virtual idcolon PERIOD PERIOD PERIOD { /* Variadic inheritance */ + $$ = NewHash(); + Setfile($$,cparse_file); + Setline($$,cparse_line); + Setattr($$,"name",$2); + if (last_cpptype && (Strcmp(last_cpptype,"struct") != 0)) { + Setattr($$,"access","private"); + Swig_warning(WARN_PARSE_NO_ACCESS,cparse_file,cparse_line, + "No access specifier given for base class %s (ignored).\n",$2); + } else { + Setattr($$,"access","public"); + } + } + | opt_virtual access_specifier opt_virtual idcolon PERIOD PERIOD PERIOD { /* Variadic inheritance */ + $$ = NewHash(); + Setfile($$,cparse_file); + Setline($$,cparse_line); + Setattr($$,"name",$4); + Setattr($$,"access",$2); + if (Strcmp($2,"public") != 0) { + Swig_warning(WARN_PARSE_PRIVATE_INHERIT, cparse_file, + cparse_line,"%s inheritance ignored.\n", $2); + } + } ; access_specifier : PUBLIC { $$ = (char*)"public"; } @@ -5903,21 +5933,24 @@ | mem_initializer_list COMMA mem_initializer ; -mem_initializer : idcolon LPAREN { - skip_balanced('(',')'); +mem_initializer : idcolon LPAREN parms RPAREN { +/* skip_balanced('(',')'); Clear(scanner_ccode); - } - | idcolon LBRACE { - /* Uniform initialization. eg. +*/ } + | idcolon LBRACE parms RBRACE { + /* Uniform initialization in C++0x. + Example: struct MyStruct { MyStruct(int x, double y) : x_{x}, y_{y} {} int x_; double y_; }; */ - skip_balanced('{','}'); +/* skip_balanced('{','}'); Clear(scanner_ccode); - } +*/ } + | idcolon LPAREN parms RPAREN PERIOD PERIOD PERIOD { } + | idcolon LBRACE parms RBRACE PERIOD PERIOD PERIOD { } ; template_decl : LESSTHAN valparms GREATERTHAN { @@ -5936,7 +5969,7 @@ idstringopt : idstring { $$ = $1; } | empty { $$ = 0; } ; - + idcolon : idtemplate idcolontail { $$ = 0; if (!$$) $$ = NewStringf("%s%s", $1,$2); @@ -5946,6 +5979,10 @@ $$ = NewStringf("::%s%s",$3,$4); Delete($4); } + | PERIOD PERIOD PERIOD idtemplate { + /* Introduced in C++0x, variadic constructor args */ + $$ = NewString($4); + } | idtemplate { $$ = NewString($1); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-07-30 19:19:01
|
Revision: 11483 http://swig.svn.sourceforge.net/swig/?rev=11483&view=rev Author: matevz Date: 2009-07-30 19:18:37 +0000 (Thu, 30 Jul 2009) Log Message: ----------- Fixed S/R and R/R conflicts. Fixed testcase for rvalue reference. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_rvalue_reference.i branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_rvalue_reference_runme.py branches/gsoc2009-matevz/Source/CParse/cscanner.c branches/gsoc2009-matevz/Source/CParse/parser.y Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_rvalue_reference.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_rvalue_reference.i 2009-07-30 18:48:14 UTC (rev 11482) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_rvalue_reference.i 2009-07-30 19:18:37 UTC (rev 11483) @@ -13,10 +13,6 @@ void setAref(int &a) { _a = a; } void setAmove(int &&a) { _a = a; } - void arg(int a); - void arg(int *a); - void arg(int &a); -// void arg(int &&a); // redefinition not allowed private: int _a; }; Modified: branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_rvalue_reference_runme.py =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_rvalue_reference_runme.py 2009-07-30 18:48:14 UTC (rev 11482) +++ branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_rvalue_reference_runme.py 2009-07-30 19:18:37 UTC (rev 11483) @@ -4,19 +4,19 @@ a.setAcopy(5) if a.getAcopy() != 5: - raise RunTimeError, "int A::getAcopy() value is ", a.getAcopy(), " should be 5" + raise RunTimeError, ("int A::getAcopy() value is ", a.getAcopy(), " should be 5") ptr = a.getAptr() a.setAptr(ptr) if a.getAcopy() != 5: - raise RunTimeError, "after A::setAptr(): int A::getAcopy() value is ", a.getAcopy(), " should be 5" + raise RunTimeError, ("after A::setAptr(): int A::getAcopy() value is ", a.getAcopy(), " should be 5") a.setAref(ptr) if a.getAcopy() != 5: - raise RunTimeError, "after A::setAref(): int A::getAcopy() value is ", a.getAcopy(), " should be 5" + raise RunTimeError, ("after A::setAref(): int A::getAcopy() value is ", a.getAcopy(), " should be 5") a.setAmove(ptr) if a.getAcopy() != 5: - raise RunTimeError, "after A::setAmove(): int A::getAcopy() value is ", a.getAcopy(), " should be 5" + raise RunTimeError, ("after A::setAmove(): int A::getAcopy() value is ", a.getAcopy(), " should be 5") Modified: branches/gsoc2009-matevz/Source/CParse/cscanner.c =================================================================== --- branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-07-30 18:48:14 UTC (rev 11482) +++ branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-07-30 19:18:37 UTC (rev 11483) @@ -595,10 +595,6 @@ yylval.type = NewSwigType(T_BOOL); return (TYPE_BOOL); } - if (strcmp(yytext, "auto") == 0) { - yylval.type = NewSwigType(T_AUTO); - return (TYPE_AUTO); - } /* Non ISO (Windows) C extensions */ if (strcmp(yytext, "__int8") == 0) { @@ -788,6 +784,8 @@ return (yylex()); if (strcmp(yytext, "explicit") == 0) return (EXPLICIT); + if (strcmp(yytext, "auto") == 0) + return (AUTO); if (strcmp(yytext, "export") == 0) return (yylex()); if (strcmp(yytext, "typename") == 0) Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-30 18:48:14 UTC (rev 11482) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-30 19:18:37 UTC (rev 11483) @@ -1486,13 +1486,13 @@ %token <str> CHARCONST %token <dtype> NUM_INT NUM_FLOAT NUM_UNSIGNED NUM_LONG NUM_ULONG NUM_LONGLONG NUM_ULONGLONG %token <ivalue> TYPEDEF -%token <type> TYPE_INT TYPE_UNSIGNED TYPE_SHORT TYPE_LONG TYPE_FLOAT TYPE_DOUBLE TYPE_CHAR TYPE_WCHAR TYPE_VOID TYPE_SIGNED TYPE_BOOL TYPE_COMPLEX TYPE_TYPEDEF TYPE_RAW TYPE_NON_ISO_INT8 TYPE_NON_ISO_INT16 TYPE_NON_ISO_INT32 TYPE_NON_ISO_INT64 TYPE_AUTO +%token <type> TYPE_INT TYPE_UNSIGNED TYPE_SHORT TYPE_LONG TYPE_FLOAT TYPE_DOUBLE TYPE_CHAR TYPE_WCHAR TYPE_VOID TYPE_SIGNED TYPE_BOOL TYPE_COMPLEX TYPE_TYPEDEF TYPE_RAW TYPE_NON_ISO_INT8 TYPE_NON_ISO_INT16 TYPE_NON_ISO_INT32 TYPE_NON_ISO_INT64 %token LPAREN RPAREN COMMA SEMI EXTERN INIT LBRACE RBRACE PERIOD %token CONST_QUAL VOLATILE REGISTER STRUCT UNION EQUAL SIZEOF MODULE LBRACKET RBRACKET %token ILLEGAL CONSTANT %token NAME RENAME NAMEWARN EXTEND PRAGMA FEATURE VARARGS %token ENUM -%token CLASS TYPENAME PRIVATE PUBLIC PROTECTED COLON STATIC VIRTUAL FRIEND THROW CATCH EXPLICIT +%token CLASS TYPENAME PRIVATE PUBLIC PROTECTED COLON STATIC VIRTUAL FRIEND THROW CATCH EXPLICIT AUTO %token STATIC_ASSERT CONSTEXPR THREAD_LOCAL /* C++0x keywords */ %token USING %token <node> NAMESPACE @@ -1509,6 +1509,7 @@ %token <str> OPERATOR %token <str> COPERATOR %token PARSETYPE PARSEPARM PARSEPARMS +%token TEST1 TEST2 TEST3 %left CAST %left QUESTIONMARK @@ -1535,11 +1536,11 @@ %type <node> types_directive template_directive warn_directive ; /* C declarations */ -%type <node> c_declaration c_decl c_decl_tail c_enum_keyword c_enum_inherit c_enum_decl c_enum_forward_decl c_constructor_decl c_rettype ; +%type <node> c_declaration c_decl c_decl_tail c_enum_keyword c_enum_inherit c_enum_decl c_enum_forward_decl c_constructor_decl ; %type <node> enumlist edecl; /* C++ declarations */ -%type <node> cpp_declaration cpp_class_decl cpp_forward_class_decl cpp_template_decl; +%type <node> cpp_declaration cpp_class_decl cpp_forward_class_decl cpp_template_decl cpp_alternate_rettype; %type <node> cpp_members cpp_member; %type <node> cpp_constructor_decl cpp_destructor_decl cpp_protection_decl cpp_conversion_operator cpp_static_assert; %type <node> cpp_swig_directive cpp_temp_possible cpp_nested cpp_opt_declarators ; @@ -1556,7 +1557,7 @@ %type <p> templateparameter ; %type <id> templcpptype cpptype access_specifier; %type <node> base_specifier -%type <type> type rawtype type_right ; +%type <type> type rawtype type_right anon_bitfield_type ; %type <bases> base_list inherit raw_inherit; %type <dtype> definetype def_args etype; %type <dtype> expr exprnum exprcompound valexpr; @@ -2940,25 +2941,25 @@ A C global declaration of some kind (may be variable, function, typedef, etc.) ------------------------------------------------------------ */ -c_decl : storage_class type declarator c_rettype initializer c_decl_tail { +c_decl : storage_class type declarator initializer c_decl_tail { $$ = new_node("cdecl"); - if ($5.qualifier) SwigType_push($3.type,$5.qualifier); + if ($4.qualifier) SwigType_push($3.type,$4.qualifier); Setattr($$,"type",$2); Setattr($$,"storage",$1); Setattr($$,"name",$3.id); Setattr($$,"decl",$3.type); Setattr($$,"parms",$3.parms); - Setattr($$,"value",$5.val); - Setattr($$,"throws",$5.throws); - Setattr($$,"throw",$5.throwf); - if (!$6) { + Setattr($$,"value",$4.val); + Setattr($$,"throws",$4.throws); + Setattr($$,"throw",$4.throwf); + if (!$5) { if (Len(scanner_ccode)) { String *code = Copy(scanner_ccode); Setattr($$,"code",code); Delete(code); } } else { - Node *n = $6; + Node *n = $5; /* Inherit attributes */ while (n) { String *type = Copy($2); @@ -2968,8 +2969,8 @@ Delete(type); } } - if ($5.bitfield) { - Setattr($$,"bitfield", $5.bitfield); + if ($4.bitfield) { + Setattr($$,"bitfield", $4.bitfield); } /* Look for "::" declarations (ignored) */ @@ -2983,33 +2984,77 @@ String *lstr = Swig_scopename_last($3.id); Setattr($$,"name",lstr); Delete(lstr); - set_nextSibling($$,$6); + set_nextSibling($$,$5); } else { Delete($$); - $$ = $6; + $$ = $5; } Delete(p); } else { Delete($$); - $$ = $6; + $$ = $5; } } else { - set_nextSibling($$,$6); + set_nextSibling($$,$5); } } + /* Alternate function syntax introduced in C++0x: + auto funcName(int x, int y) -> int; */ + | storage_class AUTO declarator ARROW cpp_alternate_rettype initializer c_decl_tail { +/* $$ = new_node("cdecl"); + if ($6.qualifier) SwigType_push($3.type,$6.qualifier); + Setattr($$,"type",$5); + Setattr($$,"storage",$1); + Setattr($$,"name",$3.id); + Setattr($$,"decl",$3.type); + Setattr($$,"parms",$3.parms); + Setattr($$,"value",$6.val); + Setattr($$,"throws",$6.throws); + Setattr($$,"throw",$6.throwf); + if (!$7) { + if (Len(scanner_ccode)) { + String *code = Copy(scanner_ccode); + Setattr($$,"code",code); + Delete(code); + } + } else { + Node *n = $7; + while (n) { + String *type = Copy($5); + Setattr(n,"type",type); + Setattr(n,"storage",$1); + n = nextSibling(n); + Delete(type); + } + } + if ($6.bitfield) { + Setattr($$,"bitfield", $6.bitfield); + } + + if (Strstr($3.id,"::")) { + String *p = Swig_scopename_prefix($3.id); + if (p) { + if ((Namespaceprefix && Strcmp(p,Namespaceprefix) == 0) || + (inclass && Strcmp(p,Classprefix) == 0)) { + String *lstr = Swig_scopename_last($3.id); + Setattr($$,"name",lstr); + Delete(lstr); + set_nextSibling($$,$7); + } else { + Delete($$); + $$ = $7; + } + Delete(p); + } else { + Delete($$); + $$ = $7; + } + } else { + set_nextSibling($$,$7); + } */ + } ; -/* Alternate function syntax: - auto funcName(int x, int y) -> int; */ - -c_rettype : ARROW type { - $$ = new_node("rettype"); - Setattr($$,"type",$2); - } - | empty { - $$ = 0; - } - ; /* Allow lists of variables and functions to be built up */ c_decl_tail : SEMI { @@ -3070,8 +3115,14 @@ } ; +cpp_alternate_rettype : primitive_type { $$ = $1; } + | TYPE_BOOL { $$ = $1; } + | TYPE_VOID { $$ = $1; } + | TYPE_TYPEDEF template_decl { $$ = NewStringf("%s%s",$1,$2); } + | TYPE_RAW { $$ = $1; } + | idcolon { $$ = $1; } + ; - /* ------------------------------------------------------------ enum or @@ -4529,8 +4580,22 @@ ; -anonymous_bitfield : storage_class type COLON expr SEMI { }; +anonymous_bitfield : storage_class anon_bitfield_type COLON expr SEMI { }; +/* Equals type_right without the ENUM keyword and cpptype (templates etc.): */ +anon_bitfield_type : primitive_type { $$ = $1; + /* Printf(stdout,"primitive = '%s'\n", $$);*/ + } + | TYPE_BOOL { $$ = $1; } + | TYPE_VOID { $$ = $1; } + | TYPE_TYPEDEF template_decl { $$ = NewStringf("%s%s",$1,$2); } + | TYPE_RAW { $$ = $1; } + + | idcolon { + $$ = $1; + } + ; + /* ====================================================================== * PRIMITIVES * ====================================================================== */ @@ -4815,6 +4880,7 @@ } | LAND notso_direct_declarator { /* Introduced in C++0x, move operator && */ + /* Adds one S/R conflict */ $$ = $2; $$.type = NewStringEmpty(); SwigType_add_reference($$.type); @@ -5262,7 +5328,6 @@ } | TYPE_BOOL { $$ = $1; } | TYPE_VOID { $$ = $1; } - | TYPE_AUTO { $$ = $1; } | TYPE_TYPEDEF template_decl { $$ = NewStringf("%s%s",$1,$2); } | c_enum_keyword idcolon { $$ = NewStringf("enum %s", $2); } | TYPE_RAW { $$ = $1; } @@ -5838,14 +5903,6 @@ $$ = (char *)"typename"; if (!inherit_list) last_cpptype = $$; } - | CLASS PERIOD PERIOD PERIOD { - $$ = (char*)"class"; - if (!inherit_list) last_cpptype = $$; - } - | TYPENAME PERIOD PERIOD PERIOD { - $$ = (char *)"typename"; - if (!inherit_list) last_cpptype = $$; - } ; cpptype : templcpptype { @@ -5931,13 +5988,11 @@ mem_initializer_list : mem_initializer | mem_initializer_list COMMA mem_initializer + | mem_initializer PERIOD PERIOD PERIOD + | mem_initializer_list COMMA mem_initializer PERIOD PERIOD PERIOD ; -mem_initializer : idcolon LPAREN parms RPAREN { -/* skip_balanced('(',')'); - Clear(scanner_ccode); -*/ } - | idcolon LBRACE parms RBRACE { +mem_initializer : idcolon LPAREN { skip_balanced('(',')'); Clear(scanner_ccode); } /* Uniform initialization in C++0x. Example: struct MyStruct { @@ -5946,11 +6001,7 @@ double y_; }; */ -/* skip_balanced('{','}'); - Clear(scanner_ccode); -*/ } - | idcolon LPAREN parms RPAREN PERIOD PERIOD PERIOD { } - | idcolon LBRACE parms RBRACE PERIOD PERIOD PERIOD { } + | idcolon LBRACE { skip_balanced('{','}'); Clear(scanner_ccode); } ; template_decl : LESSTHAN valparms GREATERTHAN { @@ -5980,12 +6031,12 @@ Delete($4); } | PERIOD PERIOD PERIOD idtemplate { - /* Introduced in C++0x, variadic constructor args */ + /* Introduced in C++0x, variadic constructor args or inside template<> block */ $$ = NewString($4); - } + } | idtemplate { $$ = NewString($1); - } + } | NONID DCOLON idtemplate { $$ = NewStringf("::%s",$3); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-07-31 10:13:49
|
Revision: 11484 http://swig.svn.sourceforge.net/swig/?rev=11484&view=rev Author: matevz Date: 2009-07-31 10:13:31 +0000 (Fri, 31 Jul 2009) Log Message: ----------- Enabled alternate function syntax and added runtime testcases. Added support for null pointer constant introduced in C++0x. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Examples/test-suite/cpp0x_alternate_function_syntax.i branches/gsoc2009-matevz/Source/CParse/parser.y Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_null_pointer_constant.i branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_alternate_function_syntax_runme.py branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_null_pointer_constant_runme.py Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-30 19:18:37 UTC (rev 11483) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-07-31 10:13:31 UTC (rev 11484) @@ -409,13 +409,14 @@ cpp0x_function_objects \ cpp0x_strongly_typed_enumerations \ cpp0x_rvalue_reference \ - cpp0x_variadic_templates -# cpp0x_alternate_function_syntax # not fully implemented yet + cpp0x_variadic_templates \ + cpp0x_alternate_function_syntax # cpp0x_hash_types # not fully implemented yet -# cpp0x_unrestricted_unions # not supported by any compilers yet -# cpp0x_smart_pointers # not supported by standard library yet -# cpp0x_constexpr # not supported by any compilers yet -# cpp0x_thread_local # not supported by any compilers yet +# cpp0x_null_pointer_constant # not supported by any compilers yet +# cpp0x_unrestricted_unions # not supported by any compilers yet +# cpp0x_smart_pointers # not supported by standard library yet +# cpp0x_constexpr # not supported by any compilers yet +# cpp0x_thread_local # not supported by any compilers yet # Broken C++0x test cases. CPP0X_TEST_BROKEN = Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_alternate_function_syntax.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_alternate_function_syntax.i 2009-07-30 19:18:37 UTC (rev 11483) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_alternate_function_syntax.i 2009-07-31 10:13:31 UTC (rev 11484) @@ -2,10 +2,15 @@ %inline %{ struct SomeStruct { - auto FuncName(int x, int y) -> int; + int addNormal(int x, int y); + auto addAlternate(int x, int y) -> int; }; -auto SomeStruct::FuncName(int x, int y) -> int { +auto SomeStruct::addAlternate(int x, int y) -> int { return x + y; } + +int SomeStruct::addNormal(int x, int y) { + return x + y; +} %} Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_null_pointer_constant.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_null_pointer_constant.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_null_pointer_constant.i 2009-07-31 10:13:31 UTC (rev 11484) @@ -0,0 +1,16 @@ +/* This testcase checks whether Swig correctly treats the new nullptr_t + constant introduced in C++0x. +*/ + +%module cpp0x_null_pointer_constant + +%inline %{ +#include <cstddef> + +class A { +public: + A() : _myA(std::nullptr) { } + + A *_myA; +}; +%} Added: branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_alternate_function_syntax_runme.py =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_alternate_function_syntax_runme.py (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_alternate_function_syntax_runme.py 2009-07-31 10:13:31 UTC (rev 11484) @@ -0,0 +1,13 @@ +import cpp0x_alternate_function_syntax + +a = cpp0x_alternate_function_syntax.SomeStruct() + +res = a.addNormal(4,5) +if res != 9: + raise RuntimeError, ("SomeStruct::addNormal(4,5) returns ", res, " should be 9.") + + +res = a.addAlternate(4,5) +if res != 9: + raise RuntimeError, ("SomeStruct::addAlternate(4,5) returns ", res, " should be 9.") + Added: branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_null_pointer_constant_runme.py =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_null_pointer_constant_runme.py (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_null_pointer_constant_runme.py 2009-07-31 10:13:31 UTC (rev 11484) @@ -0,0 +1,15 @@ +import cpp0x_null_pointer_constant + +a = cpp0x_null_pointer_constant.A() + +if a._myA != None: + raise RuntimeError, ("cpp0x_null_pointer_constant: _myA should be None, but is ", a._myA) + +b = cpp0x_null_pointer_constant.A() +if a._myA != b._myA: + raise RuntimeError, ("cpp0x_null_pointer_constant: a._myA should be the same as b._myA, but ", a._myA, "!=", b._myA) + +a._myA = cpp0x_null_pointer_constant.A() +if a._myA == None: + raise RuntimeError, ("cpp0x_null_pointer_constant: _myA should be object, but is None") + Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-30 19:18:37 UTC (rev 11483) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-31 10:13:31 UTC (rev 11484) @@ -3001,7 +3001,7 @@ /* Alternate function syntax introduced in C++0x: auto funcName(int x, int y) -> int; */ | storage_class AUTO declarator ARROW cpp_alternate_rettype initializer c_decl_tail { -/* $$ = new_node("cdecl"); + $$ = new_node("cdecl"); if ($6.qualifier) SwigType_push($3.type,$6.qualifier); Setattr($$,"type",$5); Setattr($$,"storage",$1); @@ -3051,7 +3051,7 @@ } } else { set_nextSibling($$,$7); - } */ + } } ; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-08-01 22:00:45
|
Revision: 11487 http://swig.svn.sourceforge.net/swig/?rev=11487&view=rev Author: matevz Date: 2009-08-01 22:00:36 +0000 (Sat, 01 Aug 2009) Log Message: ----------- Enabled support for variadic %template directive. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i branches/gsoc2009-matevz/Source/CParse/parser.y Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i 2009-07-31 12:17:25 UTC (rev 11486) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i 2009-08-01 22:00:36 UTC (rev 11487) @@ -22,19 +22,19 @@ %} // TODO -//%template (MultiArgs) MultiArgs<int, std::vector<int>, std::map<std::string, std::vector<int>>>; +%template (MultiArgs1) MultiArgs<int, std::vector<int>, std::map<std::string, std::vector<int>>>; //////////////////////// // Variadic sizeof... // //////////////////////// %inline %{ -template<typename ...Args> struct SizeOf { +template<typename... Args> struct SizeOf { static const int size = sizeof...(Args); }; %} // TODO -//%template (SizeOf) SizeOf<int, int>; +%template (SizeOf1) SizeOf<int, int>; ////////////////////////// // Variadic inheritance // @@ -59,9 +59,9 @@ template <typename... BaseClasses> class MultiInherit : public BaseClasses... { public: - MultiInherit(BaseClasses&&... baseClasses) : BaseClasses(baseClasses)... {} + MultiInherit(BaseClasses&... baseClasses) : BaseClasses(baseClasses)... {} }; %} // TODO -//%template (MultiInherit) MultiInherit<A,B>; +%template (MultiInherit1) MultiInherit<A,B>; Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-07-31 12:17:25 UTC (rev 11486) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-01 22:00:36 UTC (rev 11487) @@ -2621,6 +2621,7 @@ Node *tnode = 0; Symtab *tscope = 0; int specialized = 0; + int variadic = 0; $$ = 0; @@ -2678,11 +2679,13 @@ Parm *tparms = Getattr(nn,"templateparms"); if (!tparms) { specialized = 1; + } else if (Getattr(tparms,"variadic") && strncmp(Char(Getattr(tparms,"variadic")), "1", 1)==0) { + variadic = 1; } - if (nnisclass && !specialized && ((ParmList_len($7) > ParmList_len(tparms)))) { + if (nnisclass && !variadic && !specialized && (ParmList_len($7) > ParmList_len(tparms))) { Swig_error(cparse_file, cparse_line, "Too many template parameters. Maximum of %d.\n", ParmList_len(tparms)); - } else if (nnisclass && !specialized && ((ParmList_len($7) < ParmList_numrequired(tparms)))) { - Swig_error(cparse_file, cparse_line, "Not enough template parameters specified. %d required.\n", ParmList_numrequired(tparms)); + } else if (nnisclass && !specialized && ((ParmList_len($7) < (ParmList_numrequired(tparms) - (variadic?1:0))))) { /* Variadic parameter is optional */ + Swig_error(cparse_file, cparse_line, "Not enough template parameters specified. %d required.\n", (ParmList_numrequired(tparms)-(variadic?1:0)) ); } else if (!nnisclass && ((ParmList_len($7) != ParmList_len(tparms)))) { /* must be an overloaded templated method - ignore it as it is overloaded with a different number of template parameters */ nn = Getattr(nn,"sym:nextSibling"); /* repeat for overloaded templated functions */ @@ -2741,6 +2744,9 @@ if (!p && tp) { p = tp; def_supplied = 1; + } else if (!tp) { /* Variadic tempalte - tp < p */ + Swig_warning(0,cparse_file, cparse_line,"Variadic templates not fully supported by Swig.\n"); + break; } } @@ -3994,6 +4000,12 @@ if ((strncmp(type,"class ",6) == 0) || (strncmp(type,"typename ", 9) == 0)) { char *t = strchr(type,' '); Setattr(p,"name", t+1); + } else + /* Variadic template args */ + if ((strncmp(type,"class... ",9) == 0) || (strncmp(type,"typename... ", 12) == 0)) { + char *t = strchr(type,' '); + Setattr(p,"name", t+1); + Setattr(p,"variadic", "1"); } else { /* Swig_error(cparse_file, cparse_line, "Missing template parameter name\n"); @@ -4933,6 +4945,94 @@ } $$.type = t; } + + /* Variadic versions eg. MyClasses&... myIds */ + + | pointer PERIOD PERIOD PERIOD notso_direct_declarator { + $$ = $5; + if ($$.type) { + SwigType_push($1,$$.type); + Delete($$.type); + } + $$.type = $1; + } + | pointer AND PERIOD PERIOD PERIOD notso_direct_declarator { + $$ = $6; + SwigType_add_reference($1); + if ($$.type) { + SwigType_push($1,$$.type); + Delete($$.type); + } + $$.type = $1; + } + | PERIOD PERIOD PERIOD direct_declarator { + $$ = $4; + if (!$$.type) $$.type = NewStringEmpty(); + } + | AND PERIOD PERIOD PERIOD notso_direct_declarator { + $$ = $5; + $$.type = NewStringEmpty(); + SwigType_add_reference($$.type); + if ($5.type) { + SwigType_push($$.type,$5.type); + Delete($5.type); + } + } + | LAND PERIOD PERIOD PERIOD notso_direct_declarator { + /* Introduced in C++0x, move operator && */ + /* Adds one S/R conflict */ + $$ = $5; + $$.type = NewStringEmpty(); + SwigType_add_reference($$.type); + if ($5.type) { + SwigType_push($$.type,$5.type); + Delete($5.type); + } + } + | idcolon DSTAR PERIOD PERIOD PERIOD notso_direct_declarator { + SwigType *t = NewStringEmpty(); + + $$ = $6; + SwigType_add_memberpointer(t,$1); + if ($$.type) { + SwigType_push(t,$$.type); + Delete($$.type); + } + $$.type = t; + } + | pointer idcolon DSTAR PERIOD PERIOD PERIOD notso_direct_declarator { + SwigType *t = NewStringEmpty(); + $$ = $7; + SwigType_add_memberpointer(t,$2); + SwigType_push($1,t); + if ($$.type) { + SwigType_push($1,$$.type); + Delete($$.type); + } + $$.type = $1; + Delete(t); + } + | pointer idcolon DSTAR AND PERIOD PERIOD PERIOD notso_direct_declarator { + $$ = $8; + SwigType_add_memberpointer($1,$2); + SwigType_add_reference($1); + if ($$.type) { + SwigType_push($1,$$.type); + Delete($$.type); + } + $$.type = $1; + } + | idcolon DSTAR AND PERIOD PERIOD PERIOD notso_direct_declarator { + SwigType *t = NewStringEmpty(); + $$ = $7; + SwigType_add_memberpointer(t,$1); + SwigType_add_reference(t); + if ($$.type) { + SwigType_push(t,$$.type); + Delete($$.type); + } + $$.type = t; + } ; notso_direct_declarator : idcolon { @@ -5903,6 +6003,14 @@ $$ = (char *)"typename"; if (!inherit_list) last_cpptype = $$; } + | CLASS PERIOD PERIOD PERIOD { + $$ = (char *)"class..."; + if (!inherit_list) last_cpptype = $$; + } + | TYPENAME PERIOD PERIOD PERIOD { + $$ = (char *)"typename..."; + if (!inherit_list) last_cpptype = $$; + } ; cpptype : templcpptype { @@ -6030,10 +6138,6 @@ $$ = NewStringf("::%s%s",$3,$4); Delete($4); } - | PERIOD PERIOD PERIOD idtemplate { - /* Introduced in C++0x, variadic constructor args or inside template<> block */ - $$ = NewString($4); - } | idtemplate { $$ = NewString($1); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-08-03 15:03:49
|
Revision: 11491 http://swig.svn.sourceforge.net/swig/?rev=11491&view=rev Author: matevz Date: 2009-08-03 15:03:41 +0000 (Mon, 03 Aug 2009) Log Message: ----------- Added syntax for lambda expressions and closures introduced in C++0x. Added testcase cpp0x_lambda_functions.i. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/CParse/parser.y Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_lambda_functions.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-08-03 13:52:25 UTC (rev 11490) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-08-03 15:03:41 UTC (rev 11491) @@ -412,6 +412,7 @@ cpp0x_variadic_templates \ cpp0x_alternate_function_syntax # cpp0x_hash_types # not fully implemented yet +# cpp0x_lambda_functions # not supported by GCC or MSVC yet # cpp0x_null_pointer_constant # not supported by any compilers yet # cpp0x_unrestricted_unions # not supported by any compilers yet # cpp0x_smart_pointers # not supported by standard library yet Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_lambda_functions.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_lambda_functions.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_lambda_functions.i 2009-08-03 15:03:41 UTC (rev 11491) @@ -0,0 +1,34 @@ +/* This testcase checks whether Swig correctly parses the lambda expressions + and closure syntax introduced in C++0x. + Swig supports only lambda syntax and doesn't produce any wrapper code for + this. +*/ +%module cpp0x_lambda_functions + +%inline %{ +struct A { + /* Defined lambda function with return value. */ + auto lambda1 = [](int x, int y) -> int { return x+y; }; + + /* Defined lambda function without return value. + Return value is calculated by compiler, if the function contains a + single statement "return expr;". */ + auto lambda2 = [](int x, int y) { return x+y; }; +}; + +int runLambda1() { + A myA; + return myA.lambda1(5,6); +} + +int runLambda2() { + A myA; + return myA.lambda2(5,6); +} + +/* Inline defined lambda function. */ +int runLambda3() { + auto myLambda = [](int x, int y) { return x+y; }; + return myLambda(5,6); +} +%} Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-03 13:52:25 UTC (rev 11490) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-03 15:03:41 UTC (rev 11491) @@ -1536,7 +1536,7 @@ %type <node> types_directive template_directive warn_directive ; /* C declarations */ -%type <node> c_declaration c_decl c_decl_tail c_enum_keyword c_enum_inherit c_enum_decl c_enum_forward_decl c_constructor_decl ; +%type <node> c_declaration c_decl c_decl_tail c_enum_keyword c_enum_inherit c_enum_decl c_enum_forward_decl c_constructor_decl c_lambda_decl c_lambda_decl_front ; %type <node> enumlist edecl; /* C++ declarations */ @@ -2941,6 +2941,7 @@ appendChild($$,firstChild($5)); } } + | c_lambda_decl { Swig_warning("Swig doesn't produce wrapper code for lambda expressions and closures yet.") $$ = $1; } ; /* ------------------------------------------------------------ @@ -3129,6 +3130,17 @@ | idcolon { $$ = $1; } ; +/* Lambda function syntax introduced in C++0x. + auto myFunc = [](int x, int y) -> int { return x+y; } + OR + auto myFunc = [](int x, int y) { return x+y; } +*/ +c_lambda_decl : c_lambda_decl_front LPAREN parms RPAREN LBRACE { skip_balanced('{','}'); } SEMI { $$ = 0; } + | c_lambda_decl_front LPAREN parms RPAREN ARROW type LBRACE { skip_balanced('{','}'); } SEMI { $$ = 0; } + +c_lambda_decl_front : storage_class AUTO idcolon EQUAL LBRACKET { skip_balanced('[',']'); $$ = 0; } + + /* ------------------------------------------------------------ enum or This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-08-04 00:51:34
|
Revision: 11494 http://swig.svn.sourceforge.net/swig/?rev=11494&view=rev Author: matevz Date: 2009-08-04 00:51:21 +0000 (Tue, 04 Aug 2009) Log Message: ----------- Added support for user-defined string literals. Added testcase cpp0x_userdefined_literals.i Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/CParse/cscanner.c branches/gsoc2009-matevz/Source/CParse/parser.y Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_userdefined_literals.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-08-03 18:17:14 UTC (rev 11493) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-08-04 00:51:21 UTC (rev 11494) @@ -410,7 +410,8 @@ cpp0x_strongly_typed_enumerations \ cpp0x_rvalue_reference \ cpp0x_variadic_templates \ - cpp0x_alternate_function_syntax + cpp0x_alternate_function_syntax \ + cpp0x_userdefined_literals # cpp0x_hash_types # not fully implemented yet # cpp0x_lambda_functions # not supported by GCC or MSVC yet # cpp0x_null_pointer_constant # not supported by any compilers yet Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_userdefined_literals.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_userdefined_literals.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_userdefined_literals.i 2009-08-04 00:51:21 UTC (rev 11494) @@ -0,0 +1,24 @@ +/* This testcase checks whether Swig correctly parses the user-defined literals + for the string introduced in C++0x. */ +%module cpp0x_userdefined_literals + +%inline %{ +#include <iostream> + +struct OutputType { + int val; + + OutputType(int v) { v=val; } +}; + +struct TT { +OutputType operator << (const char * string_values, size_t num_chars) { return OutputType(100); } +OutputType operator "" (const char * string_values, size_t num_chars) { return OutputType(100); } +OutputType operator "" _mySuffix1(const char * string_values, size_t num_chars) { return OutputType(100); } +OutputType operator "" _mySuffix2(const wchar_t * string_values, size_t num_chars) { return OutputType(200); } +OutputType operator "" _mySuffix3(const char16_t * string_values, size_t num_chars) { return OutputType(300); } +OutputType operator "" _mySuffix4(const char32_t * string_values, size_t num_chars) { return OutputType(400); } +OutputType operator "" _mySuffix5(int value) /* cooked version - ie. atoi() of string */ { return OutputType(500); } +}; + +%} Modified: branches/gsoc2009-matevz/Source/CParse/cscanner.c =================================================================== --- branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-08-03 18:17:14 UTC (rev 11493) +++ branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-08-04 00:51:21 UTC (rev 11494) @@ -688,6 +688,11 @@ yylval.str = s; return OPERATOR; } + } else if (nexttok == SWIG_TOKEN_STRING) { + /* Operator "" or user-defined string literal ""_suffix */ + Append(s,"\"\""); + yylval.str = s; + return OPERATOR; } else if (nexttok == SWIG_TOKEN_ID) { /* We have an identifier. This could be any number of things. It could be a named version of an operator (e.g., 'and_eq') or it could be a conversion operator. To deal with this, we're Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-03 18:17:14 UTC (rev 11493) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-04 00:51:21 UTC (rev 11494) @@ -5145,7 +5145,7 @@ $$.parms = 0; $$.have_parms = 0; } - + | NOT idcolon { $$.id = Char(NewStringf("~%s",$2)); $$.type = 0; @@ -5227,6 +5227,27 @@ Delete($$.type); $$.type = t; } + } + /* User-defined string literals. eg. + int operator""_mySuffix(const char* val, int length) {...} */ + /* This produces one S/R conflict. */ + | OPERATOR ID LPAREN parms RPAREN { + SwigType *t; + Append($1, Char($2)); + $$.id = Char($1); + t = NewStringEmpty(); + SwigType_add_function(t,$4); + if (!$$.have_parms) { + $$.parms = $4; + $$.have_parms = 1; + } + if (!$$.type) { + $$.type = t; + } else { + SwigType_push(t, $$.type); + Delete($$.type); + $$.type = t; + } } ; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-08-10 10:46:16
|
Revision: 11525 http://swig.svn.sourceforge.net/swig/?rev=11525&view=rev Author: matevz Date: 2009-08-10 10:46:07 +0000 (Mon, 10 Aug 2009) Log Message: ----------- Added initial support for C++0x decltype(). Added testcase cpp0x_decltype. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/CParse/cscanner.c branches/gsoc2009-matevz/Source/CParse/parser.y Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_decltype.i branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_decltype_runme.py Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-08-10 01:40:09 UTC (rev 11524) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-08-10 10:46:07 UTC (rev 11525) @@ -411,7 +411,8 @@ cpp0x_rvalue_reference \ cpp0x_variadic_templates \ cpp0x_alternate_function_syntax \ - cpp0x_userdefined_literals + cpp0x_userdefined_literals \ + cpp0x_decltype # cpp0x_hash_types # not fully implemented yet # cpp0x_lambda_functions # not supported by GCC or MSVC yet # cpp0x_null_pointer_constant # not supported by any compilers yet Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_decltype.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_decltype.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_decltype.i 2009-08-10 10:46:07 UTC (rev 11525) @@ -0,0 +1,19 @@ +/* This testcase checks whether Swig correctly uses the new 'decltype()' + introduced in C++0x. +*/ +%module cpp0x_decltype + +%inline %{ +class A { +public: + int i; + decltype(i) j; + + auto foo( decltype(i) a ) -> decltype(i) { + if (a==5) + return 10; + else + return 0; + } +}; +%} Added: branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_decltype_runme.py =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_decltype_runme.py (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/python/cpp0x_decltype_runme.py 2009-08-10 10:46:07 UTC (rev 11525) @@ -0,0 +1,19 @@ +import cpp0x_decltype + +a = cpp0x_decltype.A() +a.i = 5 +if a.i != 5: + raise RuntimeError, "Assignment to a.i failed." + +a.j = 10 +if a.j != 10: + raise RuntimeError, "Assignment to a.j failed." + +b = a.foo(5) +if b != 10: + raise RuntimeError, "foo(5) should return 10." + +b = a.foo(6) +if b != 0: + raise RuntimeError, "foo(6) should return 0." + Modified: branches/gsoc2009-matevz/Source/CParse/cscanner.c =================================================================== --- branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-08-10 01:40:09 UTC (rev 11524) +++ branches/gsoc2009-matevz/Source/CParse/cscanner.c 2009-08-10 10:46:07 UTC (rev 11525) @@ -636,6 +636,8 @@ return (CONSTEXPR); if (strcmp(yytext, "thread_local") == 0) return (THREAD_LOCAL); + if (strcmp(yytext, "decltype") == 0) + return (DECLTYPE); if (strcmp(yytext, "virtual") == 0) return (VIRTUAL); if (strcmp(yytext, "static_assert") == 0) Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-10 01:40:09 UTC (rev 11524) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-10 10:46:07 UTC (rev 11525) @@ -1493,7 +1493,7 @@ %token NAME RENAME NAMEWARN EXTEND PRAGMA FEATURE VARARGS %token ENUM %token CLASS TYPENAME PRIVATE PUBLIC PROTECTED COLON STATIC VIRTUAL FRIEND THROW CATCH EXPLICIT AUTO -%token STATIC_ASSERT CONSTEXPR THREAD_LOCAL /* C++0x keywords */ +%token STATIC_ASSERT CONSTEXPR THREAD_LOCAL DECLTYPE /* C++0x keywords */ %token USING %token <node> NAMESPACE %token NATIVE INLINE @@ -1557,7 +1557,7 @@ %type <p> templateparameter ; %type <id> templcpptype cpptype access_specifier; %type <node> base_specifier -%type <type> type rawtype type_right anon_bitfield_type ; +%type <type> type rawtype type_right anon_bitfield_type decltype ; %type <bases> base_list inherit raw_inherit; %type <dtype> definetype def_args etype; %type <dtype> expr exprnum exprcompound valexpr; @@ -3128,6 +3128,7 @@ | TYPE_TYPEDEF template_decl { $$ = NewStringf("%s%s",$1,$2); } | TYPE_RAW { $$ = $1; } | idcolon { $$ = $1; } + | decltype { $$ = $1; } ; /* Lambda function syntax introduced in C++0x. @@ -5471,8 +5472,21 @@ | cpptype idcolon { $$ = NewStringf("%s %s", $1, $2); } + | decltype { + $$ = $1; + } ; +decltype : DECLTYPE LPAREN idcolon RPAREN { + Node *n = Swig_symbol_clookup($3,0); + if (!n) { + Swig_error(cparse_file, cparse_line, "Identifier %s not defined.\n", $3); + } else { + $$ = Getattr(n, "type"); + } + } + ; + primitive_type : primitive_type_list { if (!$1.type) $1.type = NewString("int"); if ($1.us) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-08-11 18:27:43
|
Revision: 11533 http://swig.svn.sourceforge.net/swig/?rev=11533&view=rev Author: matevz Date: 2009-08-11 18:27:33 +0000 (Tue, 11 Aug 2009) Log Message: ----------- Added syntax support for template aliasing and new 'using' syntax for typedefs introduced in C++0x. Added testcase cpp0x_template_typedefs. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/CParse/parser.y Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_typedefs.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-08-11 15:20:38 UTC (rev 11532) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-08-11 18:27:33 UTC (rev 11533) @@ -413,6 +413,7 @@ cpp0x_alternate_function_syntax \ cpp0x_userdefined_literals \ cpp0x_decltype +# cpp0x_template_typedefs # not supported by any compiler yet # cpp0x_hash_types # not fully implemented yet # cpp0x_constructors # not supported by any compiler yet # cpp0x_lambda_functions # not supported by GCC or MSVC yet Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_typedefs.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_typedefs.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_typedefs.i 2009-08-11 18:27:33 UTC (rev 11533) @@ -0,0 +1,18 @@ +/* This testcase checks whether Swig correctly parses the template aliasing. */ +%module cpp0x_template_typedefs + +%inline %{ +template< typename T1, typename T2, int > +class SomeType { + T1 a; + T2 b; + int c; +}; + +template< typename T2 > +using TypedefName = SomeType<char*, T2, 5>; + +typedef void (*PFD)(double); // Old style +using PF = void (*)(double); // New introduced syntax +%} + Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-11 15:20:38 UTC (rev 11532) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-11 18:27:33 UTC (rev 11533) @@ -2942,6 +2942,8 @@ } } | c_lambda_decl { Swig_warning(WARN_LANG_NATIVE_UNIMPL, cparse_file, cparse_line,"Swig doesn't produce wrapper code for lambda expressions and closures yet.\n"); $$ = $1; } + | USING idcolon EQUAL { skip_decl(); Swig_warning(WARN_LANG_NATIVE_UNIMPL, cparse_file, cparse_line,"Swig doesn't support 'using' typedefs yet.\n"); $$ = 0; } + | TEMPLATE LESSTHAN template_parms GREATERTHAN USING idcolon EQUAL { skip_decl(); Swig_warning(WARN_LANG_NATIVE_UNIMPL, cparse_file, cparse_line,"Swig doesn't support template aliasing yet.\n"); $$ = 0; } ; /* ------------------------------------------------------------ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-08-12 16:50:23
|
Revision: 11540 http://swig.svn.sourceforge.net/swig/?rev=11540&view=rev Author: matevz Date: 2009-08-12 16:50:17 +0000 (Wed, 12 Aug 2009) Log Message: ----------- Added warning for initializer_list introduced in C++0x. Added testcase cpp0x_initializer_list. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/common.mk branches/gsoc2009-matevz/Source/CParse/parser.y branches/gsoc2009-matevz/Source/Include/swigwarn.h Added Paths: ----------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_initializer_list.i Modified: branches/gsoc2009-matevz/Examples/test-suite/common.mk =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-08-12 11:18:58 UTC (rev 11539) +++ branches/gsoc2009-matevz/Examples/test-suite/common.mk 2009-08-12 16:50:17 UTC (rev 11540) @@ -415,7 +415,8 @@ cpp0x_decltype \ cpp0x_result_of \ cpp0x_default_delete \ - cpp0x_sizeof_object + cpp0x_sizeof_object \ + cpp0x_initializer_list # cpp0x_template_typedefs # not supported by any compiler yet # cpp0x_hash_types # not fully implemented yet # cpp0x_constructors # not supported by any compiler yet Added: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_initializer_list.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_initializer_list.i (rev 0) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_initializer_list.i 2009-08-12 16:50:17 UTC (rev 11540) @@ -0,0 +1,13 @@ +/* This testcase checks whether Swig correctly uses the new initializer_list + introduced in C++0x. */ +%module cpp0x_initializer_list + +%inline %{ +#include <initializer_list> + +class A { +public: + A( std::initializer_list<int, int> ) {} +}; +%} + Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-12 11:18:58 UTC (rev 11539) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-12 16:50:17 UTC (rev 11540) @@ -4265,21 +4265,27 @@ cpp_constructor_decl : storage_class type LPAREN parms RPAREN ctor_end { if (Classprefix) { - SwigType *decl = NewStringEmpty(); - $$ = new_node("constructor"); - Setattr($$,"storage",$1); - Setattr($$,"name",$2); - Setattr($$,"parms",$4); - SwigType_add_function(decl,$4); - Setattr($$,"decl",decl); - Setattr($$,"throws",$6.throws); - Setattr($$,"throw",$6.throwf); - if (Len(scanner_ccode)) { - String *code = Copy(scanner_ccode); - Setattr($$,"code",code); - Delete(code); - } - SetFlag($$,"feature:new"); + if (Getattr($4,"type") && strstr(Char(Getattr($4,"type")), "initializer_list<")) { + /* Ignore constructors containing initializer_list<> introduced in C++0x */ + Swig_warning(WARN_LANG_INITIALIZER_LIST, cparse_file, cparse_line, "Constructor with std::initializer_list<> argument ignored.\n"); + $$ = 0; + } else { + SwigType *decl = NewStringEmpty(); + $$ = new_node("constructor"); + Setattr($$,"storage",$1); + Setattr($$,"name",$2); + Setattr($$,"parms",$4); + SwigType_add_function(decl,$4); + Setattr($$,"decl",decl); + Setattr($$,"throws",$6.throws); + Setattr($$,"throw",$6.throwf); + if (Len(scanner_ccode)) { + String *code = Copy(scanner_ccode); + Setattr($$,"code",code); + Delete(code); + } + SetFlag($$,"feature:new"); + } } else { $$ = 0; } Modified: branches/gsoc2009-matevz/Source/Include/swigwarn.h =================================================================== --- branches/gsoc2009-matevz/Source/Include/swigwarn.h 2009-08-12 11:18:58 UTC (rev 11539) +++ branches/gsoc2009-matevz/Source/Include/swigwarn.h 2009-08-12 16:50:17 UTC (rev 11540) @@ -189,6 +189,7 @@ #define WARN_LANG_DIRECTOR_ABSTRACT 517 #define WARN_LANG_PORTABILITY_FILENAME 518 #define WARN_LANG_TEMPLATE_METHOD_IGNORE 519 +#define WARN_LANG_INITIALIZER_LIST 520 /* -- Reserved (600-799) -- */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2009-08-17 15:27:57
|
Revision: 11625 http://swig.svn.sourceforge.net/swig/?rev=11625&view=rev Author: matevz Date: 2009-08-17 15:27:48 +0000 (Mon, 17 Aug 2009) Log Message: ----------- Fixed testcase warnings. Modified Paths: -------------- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_initializer_list.i branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i branches/gsoc2009-matevz/Examples/test-suite/cpp0x_strongly_typed_enumerations.i branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_explicit.i branches/gsoc2009-matevz/Examples/test-suite/cpp0x_userdefined_literals.i branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i branches/gsoc2009-matevz/Source/CParse/parser.y Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_initializer_list.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_initializer_list.i 2009-08-17 14:47:43 UTC (rev 11624) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_initializer_list.i 2009-08-17 15:27:48 UTC (rev 11625) @@ -1,13 +1,15 @@ /* This testcase checks whether Swig correctly uses the new initializer_list introduced in C++0x. */ %module cpp0x_initializer_list +%warnfilter(520) A; %inline %{ #include <initializer_list> class A { public: - A( std::initializer_list<int, int> ) {} + A( std::initializer_list<int> ) {} + A() {} }; %} Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i 2009-08-17 14:47:43 UTC (rev 11624) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_raw_string_literals.i 2009-08-17 15:27:48 UTC (rev 11625) @@ -8,6 +8,8 @@ This module also tests whether Swig correctly parses custom string delimiters. */ %module cpp0x_raw_string_literals +%warnfilter(454) c; +%warnfilter(454) d; %inline %{ #include <iostream> Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_strongly_typed_enumerations.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_strongly_typed_enumerations.i 2009-08-17 14:47:43 UTC (rev 11624) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_strongly_typed_enumerations.i 2009-08-17 15:27:48 UTC (rev 11625) @@ -2,6 +2,10 @@ strongly typed enums. Enums with the same type are comparable. Enum classes require support for nested classes. */ %module cpp0x_strongly_typed_enumerations +%warnfilter(302) Val1; +%warnfilter(302) Val2; +%warnfilter(302) Val3; +%warnfilter(302) Val4; %inline %{ enum class Enum1 { Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_explicit.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_explicit.i 2009-08-17 14:47:43 UTC (rev 11624) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_explicit.i 2009-08-17 15:27:48 UTC (rev 11625) @@ -3,6 +3,8 @@ using the translation unit). */ %module cpp0x_template_explicit +%warnfilter(320) std::vector<A>; +%warnfilter(320) std::vector<A*>; %inline %{ #include <vector> Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_userdefined_literals.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_userdefined_literals.i 2009-08-17 14:47:43 UTC (rev 11624) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_userdefined_literals.i 2009-08-17 15:27:48 UTC (rev 11625) @@ -11,8 +11,8 @@ OutputType(int v) { v=val; } }; +/* Note: GCC doesn't support user-defined literals yet! */ struct TT { -OutputType operator << (const char * string_values, size_t num_chars) { return OutputType(100); } OutputType operator "" (const char * string_values, size_t num_chars) { return OutputType(100); } OutputType operator "" _mySuffix1(const char * string_values, size_t num_chars) { return OutputType(100); } OutputType operator "" _mySuffix2(const wchar_t * string_values, size_t num_chars) { return OutputType(200); } Modified: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i 2009-08-17 14:47:43 UTC (rev 11624) +++ branches/gsoc2009-matevz/Examples/test-suite/cpp0x_variadic_templates.i 2009-08-17 15:27:48 UTC (rev 11625) @@ -4,6 +4,9 @@ using variadic number of classes. */ %module cpp0x_variadic_templates +%warnfilter(507) MultiArgs1; +%warnfilter(507) SizeOf1; +%warnfilter(507) MultiInherit1; //////////////////////// // Variadic templates // Modified: branches/gsoc2009-matevz/Source/CParse/parser.y =================================================================== --- branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-17 14:47:43 UTC (rev 11624) +++ branches/gsoc2009-matevz/Source/CParse/parser.y 2009-08-17 15:27:48 UTC (rev 11625) @@ -2745,7 +2745,7 @@ p = tp; def_supplied = 1; } else if (p && !tp) { /* Variadic template - tp < p */ - Swig_warning(0,cparse_file, cparse_line,"Only the first variadic argument is currently supported by Swig.\n"); + Swig_warning(WARN_LANG_NATIVE_UNIMPL,cparse_file, cparse_line,"Only the first variadic argument is currently supported by Swig.\n"); break; } } @@ -4265,7 +4265,7 @@ cpp_constructor_decl : storage_class type LPAREN parms RPAREN ctor_end { if (Classprefix) { - if (Getattr($4,"type") && strstr(Char(Getattr($4,"type")), "initializer_list<")) { + if ($4 && Getattr($4,"type") && strstr(Char(Getattr($4,"type")), "initializer_list<")) { /* Ignore constructors containing initializer_list<> introduced in C++0x */ Swig_warning(WARN_LANG_INITIALIZER_LIST, cparse_file, cparse_line, "Constructor with std::initializer_list<> argument ignored.\n"); $$ = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2010-03-06 00:52:06
|
Revision: 11905 http://swig.svn.sourceforge.net/swig/?rev=11905&view=rev Author: wsfulton Date: 2010-03-06 00:51:54 +0000 (Sat, 06 Mar 2010) Log Message: ----------- merge revisions 11872:11876 from trunk to gsoc2009-matevz branch - license changes Modified Paths: -------------- branches/gsoc2009-matevz/ANNOUNCE branches/gsoc2009-matevz/Doc/Manual/Sections.html branches/gsoc2009-matevz/Examples/guile/check.list branches/gsoc2009-matevz/Examples/lua/lua.c branches/gsoc2009-matevz/Examples/test-suite/csharp/li_std_map_runme.cs branches/gsoc2009-matevz/Examples/test-suite/li_std_queue.i branches/gsoc2009-matevz/Examples/test-suite/li_std_set.i branches/gsoc2009-matevz/Examples/test-suite/li_std_stack.i branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_li_std_speed_runme.rb branches/gsoc2009-matevz/Examples/test-suite/ruby_li_std_speed.i branches/gsoc2009-matevz/Lib/allegrocl/allegrocl.swg branches/gsoc2009-matevz/Lib/allegrocl/longlongs.i branches/gsoc2009-matevz/Lib/allegrocl/std_list.i branches/gsoc2009-matevz/Lib/allegrocl/std_string.i branches/gsoc2009-matevz/Lib/attribute.i branches/gsoc2009-matevz/Lib/carrays.i branches/gsoc2009-matevz/Lib/cdata.i branches/gsoc2009-matevz/Lib/chicken/chicken.swg branches/gsoc2009-matevz/Lib/chicken/chickenrun.swg branches/gsoc2009-matevz/Lib/chicken/multi-generic.scm branches/gsoc2009-matevz/Lib/chicken/std_string.i branches/gsoc2009-matevz/Lib/chicken/typemaps.i branches/gsoc2009-matevz/Lib/clisp/clisp.swg branches/gsoc2009-matevz/Lib/cmalloc.i branches/gsoc2009-matevz/Lib/constraints.i branches/gsoc2009-matevz/Lib/cpointer.i branches/gsoc2009-matevz/Lib/csharp/arrays_csharp.i branches/gsoc2009-matevz/Lib/csharp/csharp.swg branches/gsoc2009-matevz/Lib/csharp/csharphead.swg branches/gsoc2009-matevz/Lib/csharp/director.swg branches/gsoc2009-matevz/Lib/csharp/enums.swg branches/gsoc2009-matevz/Lib/csharp/enumsimple.swg branches/gsoc2009-matevz/Lib/csharp/enumtypesafe.swg branches/gsoc2009-matevz/Lib/csharp/std_except.i branches/gsoc2009-matevz/Lib/csharp/std_map.i branches/gsoc2009-matevz/Lib/csharp/std_pair.i branches/gsoc2009-matevz/Lib/csharp/std_string.i branches/gsoc2009-matevz/Lib/csharp/std_vector.i branches/gsoc2009-matevz/Lib/csharp/std_wstring.i branches/gsoc2009-matevz/Lib/csharp/stl.i branches/gsoc2009-matevz/Lib/csharp/typemaps.i branches/gsoc2009-matevz/Lib/csharp/wchar.i branches/gsoc2009-matevz/Lib/cstring.i branches/gsoc2009-matevz/Lib/cwstring.i branches/gsoc2009-matevz/Lib/exception.i branches/gsoc2009-matevz/Lib/gcj/cni.swg branches/gsoc2009-matevz/Lib/guile/common.scm branches/gsoc2009-matevz/Lib/guile/cplusplus.i branches/gsoc2009-matevz/Lib/guile/guile.i branches/gsoc2009-matevz/Lib/guile/guile_gh.swg branches/gsoc2009-matevz/Lib/guile/guile_gh_run.swg branches/gsoc2009-matevz/Lib/guile/guile_scm.swg branches/gsoc2009-matevz/Lib/guile/guile_scm_run.swg branches/gsoc2009-matevz/Lib/guile/guilemain.i branches/gsoc2009-matevz/Lib/guile/interpreter.i branches/gsoc2009-matevz/Lib/guile/list-vector.i branches/gsoc2009-matevz/Lib/guile/pointer-in-out.i branches/gsoc2009-matevz/Lib/guile/ports.i branches/gsoc2009-matevz/Lib/guile/std_common.i branches/gsoc2009-matevz/Lib/guile/std_map.i branches/gsoc2009-matevz/Lib/guile/std_pair.i branches/gsoc2009-matevz/Lib/guile/std_string.i branches/gsoc2009-matevz/Lib/guile/std_vector.i branches/gsoc2009-matevz/Lib/guile/stl.i branches/gsoc2009-matevz/Lib/guile/typemaps.i branches/gsoc2009-matevz/Lib/inttypes.i branches/gsoc2009-matevz/Lib/java/arrays_java.i branches/gsoc2009-matevz/Lib/java/director.swg branches/gsoc2009-matevz/Lib/java/enums.swg branches/gsoc2009-matevz/Lib/java/enumsimple.swg branches/gsoc2009-matevz/Lib/java/enumtypesafe.swg branches/gsoc2009-matevz/Lib/java/enumtypeunsafe.swg branches/gsoc2009-matevz/Lib/java/java.swg branches/gsoc2009-matevz/Lib/java/javahead.swg branches/gsoc2009-matevz/Lib/java/std_except.i branches/gsoc2009-matevz/Lib/java/std_map.i branches/gsoc2009-matevz/Lib/java/std_pair.i branches/gsoc2009-matevz/Lib/java/std_string.i branches/gsoc2009-matevz/Lib/java/std_vector.i branches/gsoc2009-matevz/Lib/java/std_wstring.i branches/gsoc2009-matevz/Lib/java/stl.i branches/gsoc2009-matevz/Lib/java/typemaps.i branches/gsoc2009-matevz/Lib/java/various.i branches/gsoc2009-matevz/Lib/lua/_std_common.i branches/gsoc2009-matevz/Lib/lua/lua.swg branches/gsoc2009-matevz/Lib/lua/lua_fnptr.i branches/gsoc2009-matevz/Lib/lua/luarun.swg branches/gsoc2009-matevz/Lib/lua/luaruntime.swg branches/gsoc2009-matevz/Lib/lua/luatypemaps.swg branches/gsoc2009-matevz/Lib/lua/std_except.i branches/gsoc2009-matevz/Lib/lua/std_map.i branches/gsoc2009-matevz/Lib/lua/std_pair.i branches/gsoc2009-matevz/Lib/lua/std_string.i branches/gsoc2009-matevz/Lib/lua/std_vector.i branches/gsoc2009-matevz/Lib/lua/stl.i branches/gsoc2009-matevz/Lib/lua/typemaps.i branches/gsoc2009-matevz/Lib/lua/wchar.i branches/gsoc2009-matevz/Lib/math.i branches/gsoc2009-matevz/Lib/modula3/modula3.swg branches/gsoc2009-matevz/Lib/modula3/modula3head.swg branches/gsoc2009-matevz/Lib/modula3/typemaps.i branches/gsoc2009-matevz/Lib/mzscheme/mzrun.swg branches/gsoc2009-matevz/Lib/mzscheme/mzscheme.swg branches/gsoc2009-matevz/Lib/mzscheme/std_common.i branches/gsoc2009-matevz/Lib/mzscheme/std_map.i branches/gsoc2009-matevz/Lib/mzscheme/std_pair.i branches/gsoc2009-matevz/Lib/mzscheme/std_string.i branches/gsoc2009-matevz/Lib/mzscheme/std_vector.i branches/gsoc2009-matevz/Lib/mzscheme/stl.i branches/gsoc2009-matevz/Lib/mzscheme/typemaps.i branches/gsoc2009-matevz/Lib/ocaml/cstring.i branches/gsoc2009-matevz/Lib/ocaml/director.swg branches/gsoc2009-matevz/Lib/ocaml/ocaml.i branches/gsoc2009-matevz/Lib/ocaml/ocamldec.swg branches/gsoc2009-matevz/Lib/ocaml/std_common.i branches/gsoc2009-matevz/Lib/ocaml/std_deque.i branches/gsoc2009-matevz/Lib/ocaml/std_list.i branches/gsoc2009-matevz/Lib/ocaml/std_map.i branches/gsoc2009-matevz/Lib/ocaml/std_pair.i branches/gsoc2009-matevz/Lib/ocaml/std_string.i branches/gsoc2009-matevz/Lib/ocaml/std_vector.i branches/gsoc2009-matevz/Lib/ocaml/stl.i branches/gsoc2009-matevz/Lib/ocaml/typecheck.i branches/gsoc2009-matevz/Lib/ocaml/typemaps.i branches/gsoc2009-matevz/Lib/octave/octcontainer.swg branches/gsoc2009-matevz/Lib/octave/octiterators.swg branches/gsoc2009-matevz/Lib/perl5/perlmain.i branches/gsoc2009-matevz/Lib/perl5/reference.i branches/gsoc2009-matevz/Lib/perl5/std_common.i branches/gsoc2009-matevz/Lib/perl5/std_list.i branches/gsoc2009-matevz/Lib/perl5/std_map.i branches/gsoc2009-matevz/Lib/perl5/std_pair.i branches/gsoc2009-matevz/Lib/perl5/std_vector.i branches/gsoc2009-matevz/Lib/perl5/stl.i branches/gsoc2009-matevz/Lib/perl5/typemaps.i branches/gsoc2009-matevz/Lib/php/const.i branches/gsoc2009-matevz/Lib/php/globalvar.i branches/gsoc2009-matevz/Lib/php/php.swg branches/gsoc2009-matevz/Lib/php/phpkw.swg branches/gsoc2009-matevz/Lib/php/phprun.swg branches/gsoc2009-matevz/Lib/php/std_common.i branches/gsoc2009-matevz/Lib/php/std_map.i branches/gsoc2009-matevz/Lib/php/std_pair.i branches/gsoc2009-matevz/Lib/php/std_string.i branches/gsoc2009-matevz/Lib/php/std_vector.i branches/gsoc2009-matevz/Lib/php/stl.i branches/gsoc2009-matevz/Lib/php/typemaps.i branches/gsoc2009-matevz/Lib/pike/pike.swg branches/gsoc2009-matevz/Lib/pike/pikerun.swg branches/gsoc2009-matevz/Lib/pike/std_string.i branches/gsoc2009-matevz/Lib/pointer.i branches/gsoc2009-matevz/Lib/python/ccomplex.i branches/gsoc2009-matevz/Lib/python/director.swg branches/gsoc2009-matevz/Lib/python/embed15.i branches/gsoc2009-matevz/Lib/python/file.i branches/gsoc2009-matevz/Lib/python/pycontainer.swg branches/gsoc2009-matevz/Lib/python/pyiterators.swg branches/gsoc2009-matevz/Lib/python/pyrun.swg branches/gsoc2009-matevz/Lib/python/typemaps.i branches/gsoc2009-matevz/Lib/ruby/director.swg branches/gsoc2009-matevz/Lib/ruby/rubyautodoc.swg branches/gsoc2009-matevz/Lib/ruby/rubycontainer.swg branches/gsoc2009-matevz/Lib/ruby/rubycontainer_extended.swg branches/gsoc2009-matevz/Lib/ruby/rubyiterators.swg branches/gsoc2009-matevz/Lib/ruby/rubyprimtypes.swg branches/gsoc2009-matevz/Lib/ruby/rubyrun.swg branches/gsoc2009-matevz/Lib/ruby/rubystdautodoc.swg branches/gsoc2009-matevz/Lib/ruby/rubytracking.swg branches/gsoc2009-matevz/Lib/ruby/rubywstrings.swg branches/gsoc2009-matevz/Lib/ruby/stl.i branches/gsoc2009-matevz/Lib/ruby/typemaps.i branches/gsoc2009-matevz/Lib/std/_std_deque.i branches/gsoc2009-matevz/Lib/std_except.i branches/gsoc2009-matevz/Lib/stdint.i branches/gsoc2009-matevz/Lib/stl.i branches/gsoc2009-matevz/Lib/swigarch.i branches/gsoc2009-matevz/Lib/swigrun.i branches/gsoc2009-matevz/Lib/tcl/mactkinit.c branches/gsoc2009-matevz/Lib/tcl/std_common.i branches/gsoc2009-matevz/Lib/tcl/std_pair.i branches/gsoc2009-matevz/Lib/tcl/std_vector.i branches/gsoc2009-matevz/Lib/tcl/stl.i branches/gsoc2009-matevz/Lib/tcl/tcl8.swg branches/gsoc2009-matevz/Lib/tcl/tclinterp.i branches/gsoc2009-matevz/Lib/tcl/tclopers.swg branches/gsoc2009-matevz/Lib/tcl/tclresult.i branches/gsoc2009-matevz/Lib/tcl/tclrun.swg branches/gsoc2009-matevz/Lib/tcl/tclsh.i branches/gsoc2009-matevz/Lib/tcl/tclwstrings.swg branches/gsoc2009-matevz/Lib/tcl/typemaps.i branches/gsoc2009-matevz/Lib/tcl/wish.i branches/gsoc2009-matevz/Lib/typemaps/attribute.swg branches/gsoc2009-matevz/Lib/typemaps/carrays.swg branches/gsoc2009-matevz/Lib/typemaps/cdata.swg branches/gsoc2009-matevz/Lib/typemaps/cmalloc.swg branches/gsoc2009-matevz/Lib/typemaps/cpointer.swg branches/gsoc2009-matevz/Lib/typemaps/cstrings.swg branches/gsoc2009-matevz/Lib/typemaps/exception.swg branches/gsoc2009-matevz/Lib/typemaps/ptrtypes.swg branches/gsoc2009-matevz/Lib/typemaps/swigtypemaps.swg branches/gsoc2009-matevz/Lib/typemaps/typemaps.swg branches/gsoc2009-matevz/Lib/uffi/uffi.swg branches/gsoc2009-matevz/Lib/wchar.i branches/gsoc2009-matevz/Lib/windows.i branches/gsoc2009-matevz/Makefile.in branches/gsoc2009-matevz/README branches/gsoc2009-matevz/Source/CParse/cparse.h branches/gsoc2009-matevz/Source/CParse/cscanner.c branches/gsoc2009-matevz/Source/CParse/parser.y branches/gsoc2009-matevz/Source/CParse/templ.c branches/gsoc2009-matevz/Source/CParse/util.c branches/gsoc2009-matevz/Source/DOH/base.c branches/gsoc2009-matevz/Source/DOH/doh.h branches/gsoc2009-matevz/Source/DOH/dohint.h branches/gsoc2009-matevz/Source/DOH/file.c branches/gsoc2009-matevz/Source/DOH/fio.c branches/gsoc2009-matevz/Source/DOH/hash.c branches/gsoc2009-matevz/Source/DOH/list.c branches/gsoc2009-matevz/Source/DOH/memory.c branches/gsoc2009-matevz/Source/DOH/string.c branches/gsoc2009-matevz/Source/DOH/void.c branches/gsoc2009-matevz/Source/Include/swigwarn.h branches/gsoc2009-matevz/Source/Modules/allegrocl.cxx branches/gsoc2009-matevz/Source/Modules/allocate.cxx branches/gsoc2009-matevz/Source/Modules/browser.cxx branches/gsoc2009-matevz/Source/Modules/cffi.cxx branches/gsoc2009-matevz/Source/Modules/chicken.cxx branches/gsoc2009-matevz/Source/Modules/clisp.cxx branches/gsoc2009-matevz/Source/Modules/contract.cxx branches/gsoc2009-matevz/Source/Modules/csharp.cxx branches/gsoc2009-matevz/Source/Modules/directors.cxx branches/gsoc2009-matevz/Source/Modules/emit.cxx branches/gsoc2009-matevz/Source/Modules/guile.cxx branches/gsoc2009-matevz/Source/Modules/java.cxx branches/gsoc2009-matevz/Source/Modules/lang.cxx branches/gsoc2009-matevz/Source/Modules/lua.cxx branches/gsoc2009-matevz/Source/Modules/main.cxx branches/gsoc2009-matevz/Source/Modules/modula3.cxx branches/gsoc2009-matevz/Source/Modules/module.cxx branches/gsoc2009-matevz/Source/Modules/mzscheme.cxx branches/gsoc2009-matevz/Source/Modules/ocaml.cxx branches/gsoc2009-matevz/Source/Modules/octave.cxx branches/gsoc2009-matevz/Source/Modules/overload.cxx branches/gsoc2009-matevz/Source/Modules/perl5.cxx branches/gsoc2009-matevz/Source/Modules/php.cxx branches/gsoc2009-matevz/Source/Modules/pike.cxx branches/gsoc2009-matevz/Source/Modules/python.cxx branches/gsoc2009-matevz/Source/Modules/r.cxx branches/gsoc2009-matevz/Source/Modules/ruby.cxx branches/gsoc2009-matevz/Source/Modules/s-exp.cxx branches/gsoc2009-matevz/Source/Modules/swigmain.cxx branches/gsoc2009-matevz/Source/Modules/swigmod.h branches/gsoc2009-matevz/Source/Modules/tcl8.cxx branches/gsoc2009-matevz/Source/Modules/typepass.cxx branches/gsoc2009-matevz/Source/Modules/uffi.cxx branches/gsoc2009-matevz/Source/Modules/utils.cxx branches/gsoc2009-matevz/Source/Modules/xml.cxx branches/gsoc2009-matevz/Source/Preprocessor/cpp.c branches/gsoc2009-matevz/Source/Preprocessor/expr.c branches/gsoc2009-matevz/Source/Preprocessor/preprocessor.h branches/gsoc2009-matevz/Source/Swig/cwrap.c branches/gsoc2009-matevz/Source/Swig/deprecate.c branches/gsoc2009-matevz/Source/Swig/error.c branches/gsoc2009-matevz/Source/Swig/fragment.c branches/gsoc2009-matevz/Source/Swig/getopt.c branches/gsoc2009-matevz/Source/Swig/include.c branches/gsoc2009-matevz/Source/Swig/misc.c branches/gsoc2009-matevz/Source/Swig/naming.c branches/gsoc2009-matevz/Source/Swig/parms.c branches/gsoc2009-matevz/Source/Swig/scanner.c branches/gsoc2009-matevz/Source/Swig/stype.c branches/gsoc2009-matevz/Source/Swig/swig.h branches/gsoc2009-matevz/Source/Swig/swigfile.h branches/gsoc2009-matevz/Source/Swig/swigopt.h branches/gsoc2009-matevz/Source/Swig/swigparm.h branches/gsoc2009-matevz/Source/Swig/swigscan.h branches/gsoc2009-matevz/Source/Swig/swigtree.h branches/gsoc2009-matevz/Source/Swig/swigwrap.h branches/gsoc2009-matevz/Source/Swig/symbol.c branches/gsoc2009-matevz/Source/Swig/tree.c branches/gsoc2009-matevz/Source/Swig/typemap.c branches/gsoc2009-matevz/Source/Swig/typeobj.c branches/gsoc2009-matevz/Source/Swig/typesys.c branches/gsoc2009-matevz/Source/Swig/wrapfunc.c branches/gsoc2009-matevz/configure.in Added Paths: ----------- branches/gsoc2009-matevz/COPYRIGHT branches/gsoc2009-matevz/LICENSE branches/gsoc2009-matevz/LICENSE-GPL branches/gsoc2009-matevz/LICENSE-UNIVERSITIES Removed Paths: ------------- branches/gsoc2009-matevz/Examples/GIFPlot/ branches/gsoc2009-matevz/Examples/chicken/zlib/ branches/gsoc2009-matevz/Examples/xml/example_gif.i branches/gsoc2009-matevz/LICENSE branches/gsoc2009-matevz/Lib/tcl/mactclinit.c Property Changed: ---------------- branches/gsoc2009-matevz/ branches/gsoc2009-matevz/Examples/php/class/runme.php branches/gsoc2009-matevz/Examples/php/constants/runme.php branches/gsoc2009-matevz/Examples/php/cpointer/runme.php branches/gsoc2009-matevz/Examples/php/disown/runme.php branches/gsoc2009-matevz/Examples/php/enum/runme.php branches/gsoc2009-matevz/Examples/php/funcptr/runme.php branches/gsoc2009-matevz/Examples/php/overloading/runme.php branches/gsoc2009-matevz/Examples/php/pointer/runme.php branches/gsoc2009-matevz/Examples/php/pragmas/runme.php branches/gsoc2009-matevz/Examples/php/proxy/runme.php branches/gsoc2009-matevz/Examples/php/reference/runme.php branches/gsoc2009-matevz/Examples/php/simple/runme.php branches/gsoc2009-matevz/Examples/php/sync/runme.php branches/gsoc2009-matevz/Examples/php/value/runme.php branches/gsoc2009-matevz/Examples/php/variables/runme.php branches/gsoc2009-matevz/Examples/test-suite/chicken/chicken_ext_test_runme.ss branches/gsoc2009-matevz/Examples/test-suite/chicken_ext_test.i branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets.i branches/gsoc2009-matevz/Examples/test-suite/guilescm/guilescm_ext_test_runme.scm branches/gsoc2009-matevz/Examples/test-suite/guilescm_ext_test.i branches/gsoc2009-matevz/Examples/test-suite/implicittest.i branches/gsoc2009-matevz/Examples/test-suite/li_std_functors.i branches/gsoc2009-matevz/Examples/test-suite/li_std_list.i branches/gsoc2009-matevz/Examples/test-suite/li_std_pair_extra.i branches/gsoc2009-matevz/Examples/test-suite/li_std_pair_lang_object.i branches/gsoc2009-matevz/Examples/test-suite/li_std_queue.i branches/gsoc2009-matevz/Examples/test-suite/li_std_stack.i branches/gsoc2009-matevz/Examples/test-suite/li_std_string_extra.i branches/gsoc2009-matevz/Examples/test-suite/octave/li_std_pair_extra_runme.m branches/gsoc2009-matevz/Examples/test-suite/octave/li_std_string_extra_runme.m branches/gsoc2009-matevz/Examples/test-suite/octave/octave_cell_deref_runme.m branches/gsoc2009-matevz/Examples/test-suite/octave_cell_deref.i branches/gsoc2009-matevz/Examples/test-suite/php/abstract_inherit_ok_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/abstract_inherit_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/add_link_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/argout_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/arrayptr_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/arrays_global_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/arrays_global_twodim_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/arrays_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/arrays_scope_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/casts_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/class_ignore_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/conversion_namespace_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/conversion_ns_template_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/conversion_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/cpp_static_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/enum_scope_template_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/evil_diamond_ns_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/evil_diamond_prop_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/evil_diamond_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/extend_template_ns_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/extend_template_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/grouping_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/ignore_parameter_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/li_carrays_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/li_std_string_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/rename_scope_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/skel.php branches/gsoc2009-matevz/Examples/test-suite/php/smart_pointer_rename_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/sym_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/template_arg_typename_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/template_construct_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/tests.php branches/gsoc2009-matevz/Examples/test-suite/php/typedef_reference_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/typemap_ns_using_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/using1_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/using2_runme.php branches/gsoc2009-matevz/Examples/test-suite/php/valuewrapper_base_runme.php branches/gsoc2009-matevz/Examples/test-suite/php_namewarn_rename.i branches/gsoc2009-matevz/Examples/test-suite/python/li_std_pair_extra_runme.py branches/gsoc2009-matevz/Examples/test-suite/python/li_std_string_extra_runme.py branches/gsoc2009-matevz/Examples/test-suite/r/r_copy_struct_runme.R branches/gsoc2009-matevz/Examples/test-suite/r/r_double_delete_runme.R branches/gsoc2009-matevz/Examples/test-suite/r/r_legacy_runme.R branches/gsoc2009-matevz/Examples/test-suite/r_copy_struct.i branches/gsoc2009-matevz/Examples/test-suite/r_double_delete.i branches/gsoc2009-matevz/Examples/test-suite/r_legacy.i branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_keywords_runme.rb branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_li_std_speed_runme.rb branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_naming_runme.rb branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_track_objects_directors_runme.rb branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_track_objects_runme.rb branches/gsoc2009-matevz/Examples/test-suite/ruby_keywords.i branches/gsoc2009-matevz/Examples/test-suite/ruby_li_std_speed.i branches/gsoc2009-matevz/Examples/test-suite/ruby_naming.i branches/gsoc2009-matevz/Examples/test-suite/ruby_track_objects.i branches/gsoc2009-matevz/Examples/test-suite/ruby_track_objects_directors.i branches/gsoc2009-matevz/Examples/test-suite/simple_array.i branches/gsoc2009-matevz/Examples/test-suite/stl_new.i branches/gsoc2009-matevz/Examples/test-suite/union_parameter.i Property changes on: branches/gsoc2009-matevz ___________________________________________________________________ Modified: svn:mergeinfo - /branches/swig-2.0:11085-11086,11088-11089 + /branches/swig-2.0:11085-11086,11088-11089 /trunk:11873-11876 Modified: branches/gsoc2009-matevz/ANNOUNCE =================================================================== --- branches/gsoc2009-matevz/ANNOUNCE 2010-03-06 00:51:32 UTC (rev 11904) +++ branches/gsoc2009-matevz/ANNOUNCE 2010-03-06 00:51:54 UTC (rev 11905) @@ -1,10 +1,10 @@ -*** ANNOUNCE: SWIG 1.3.40 (in progress) *** +*** ANNOUNCE: SWIG 2.0.0 (in progress) *** http://www.swig.org -We're pleased to announce SWIG-1.3.40, the latest installment in the -SWIG development effort. SWIG-1.3.40 includes a number of bug fixes +We're pleased to announce SWIG-2.0.0, the latest installment in the +SWIG development effort. SWIG-2.0.0 includes a number of bug fixes and enhancements. What is SWIG? @@ -24,11 +24,11 @@ ------------- The release is available for download on Sourceforge at - http://prdownloads.sourceforge.net/swig/swig-1.3.40.tar.gz + http://prdownloads.sourceforge.net/swig/swig-2.0.0.tar.gz A Windows version is also available at - http://prdownloads.sourceforge.net/swig/swigwin-1.3.40.zip + http://prdownloads.sourceforge.net/swig/swigwin-2.0.0.zip Please report problems with this release to the swig-dev mailing list, details at http://www.swig.org/mail.html. Copied: branches/gsoc2009-matevz/COPYRIGHT (from rev 11876, trunk/COPYRIGHT) =================================================================== --- branches/gsoc2009-matevz/COPYRIGHT (rev 0) +++ branches/gsoc2009-matevz/COPYRIGHT 2010-03-06 00:51:54 UTC (rev 11905) @@ -0,0 +1,63 @@ +SWIG Copyright and Authors +-------------------------- + +Copyright (c) 1995-2010 The SWIG Developers +Copyright (c) 2005-2006 Arizona Board of Regents (University of Arizona). +Copyright (c) 1998-2005 University of Chicago. +Copyright (c) 1995-1998 The University of Utah and the Regents of the University of California + +Portions also copyrighted by: + Network Applied Communication Laboratory, Inc + Information-technology Promotion Agency, Japan + +Active SWIG Developers: + William Fulton (ws...@fu...) (SWIG core, Java, C#, Windows, Cygwin) + Olly Betts (ol...@su...) (PHP) + Joseph Wang (joe...@gm...) (R) + Xavier Delacour (xav...@gm...) (Octave) + +Past SWIG developers and major contributors include: + Dave Beazley (dav...@da...) (SWIG core, Python, Tcl, Perl) + Henning Thielemann (sw...@he...) (Modula3) + Matthias Köppe (mk...@ma...) (Guile, MzScheme) + Luigi Ballabio (lui...@fa...) (STL wrapping) + Mikel Bancroft (mi...@fr...) (Allegro CL) + Surendra Singhi (efu...@ne...) (CLISP, CFFI) + Marcelo Matus (mm...@ac...) (SWIG core, Python, UTL[python,perl,tcl,ruby]) + Art Yerkes (ay...@sp...) (Ocaml) + Lyle Johnson (ly...@us...) (Ruby) + Charlie Savage (cf...@in...) (Ruby) + Thien-Thi Nguyen (tt...@gl...) (build/test/misc) + Richard Palmer (ri...@ma...) (PHP) + Sam Liddicott - Anonova Ltd (sa...@li...) (PHP) + Tim Hockin - Sun Microsystems (th...@su...) (PHP) + Kevin Ruland (PHP) + Shibukawa Yoshiki (Japanese Translation) + Jason Stewart (ja...@op...) (Perl5) + Loic Dachary (Perl5) + David Fletcher (Perl5) + Gary Holt (Perl5) + Masaki Fukushima (Ruby) + Scott Michel (sc...@cs...) (Java directors) + Tiger Feng (son...@cs...) (SWIG core) + Mark Rose (mr...@st...) (Directors) + Jonah Beckford (bec...@us...) (CHICKEN) + Ahmon Dancy (da...@fr...) (Allegro CL) + Dirk Gerrits (Allegro CL) + Neil Cawse (C#) + Harco de Hilster (Java) + Alexey Dyachenko (dya...@fr...) (Tcl) + Bob Techentin (Tcl) + Martin Froehlich <MartinFroehlich@ACM.org> (Guile) + Marcio Luis Teixeira <ma...@ho...> (Guile) + Duncan Temple Lang (R) + Miklos Vajna <vm...@fr...> (PHP directors) + Mark Gossage (ma...@go...) (Lua) + Gonzalo Garramuno (gg...@ad...) (Ruby, Ruby's UTL) + John Lenz (Guile, MzScheme updates, Chicken module, runtime system) + +Past contributors include: + James Michael DuPont, Clark McGrew, Dustin Mitchell, Ian Cooke, Catalin Dumitrescu, Baran + Kovuk, Oleg Tolmatcev, Tal Shalif, Lluis Padro, Chris Seatory, Igor Bely, Robin Dunn + (See CHANGES and CHANGES.current for a more complete list). + Modified: branches/gsoc2009-matevz/Doc/Manual/Sections.html =================================================================== --- branches/gsoc2009-matevz/Doc/Manual/Sections.html 2010-03-06 00:51:32 UTC (rev 11904) +++ branches/gsoc2009-matevz/Doc/Manual/Sections.html 2010-03-06 00:51:54 UTC (rev 11905) @@ -6,7 +6,7 @@ <body bgcolor="#ffffff"> <H1><a name="Sections"></a>SWIG-1.3 Development Documentation</H1> -Last update : SWIG-1.3.40 (in progress) +Last update : SWIG-2.0.0 (in progress) <H2>Sections</H2> Modified: branches/gsoc2009-matevz/Examples/guile/check.list =================================================================== --- branches/gsoc2009-matevz/Examples/guile/check.list 2010-03-06 00:51:32 UTC (rev 11904) +++ branches/gsoc2009-matevz/Examples/guile/check.list 2010-03-06 00:51:54 UTC (rev 11905) @@ -1,6 +1,5 @@ # see top-level Makefile.in constants -matrix simple port multimap Modified: branches/gsoc2009-matevz/Examples/lua/lua.c =================================================================== --- branches/gsoc2009-matevz/Examples/lua/lua.c 2010-03-06 00:51:32 UTC (rev 11904) +++ branches/gsoc2009-matevz/Examples/lua/lua.c 2010-03-06 00:51:54 UTC (rev 11905) @@ -1,5 +1,4 @@ /* -** $Id$ ** Lua stand-alone interpreter ** See Copyright Notice in lua.h */ Property changes on: branches/gsoc2009-matevz/Examples/php/class/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/class/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/constants/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/constants/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/cpointer/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/cpointer/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/disown/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/disown/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/enum/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/enum/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/funcptr/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/funcptr/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/overloading/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/overloading/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/pointer/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/pointer/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/pragmas/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/pragmas/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/proxy/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/proxy/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/reference/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/reference/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/simple/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/simple/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/sync/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/sync/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/value/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/value/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/php/variables/runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/php/variables/runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/chicken/chicken_ext_test_runme.ss ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/chicken/chicken_ext_test_runme.ss:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/chicken_ext_test.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/chicken_ext_test.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/cpp0x_template_double_brackets.i ___________________________________________________________________ Modified: svn:mergeinfo - + /trunk/Examples/test-suite/cpp0x_template_double_brackets.i:11873-11876 Modified: branches/gsoc2009-matevz/Examples/test-suite/csharp/li_std_map_runme.cs =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/csharp/li_std_map_runme.cs 2010-03-06 00:51:32 UTC (rev 11904) +++ branches/gsoc2009-matevz/Examples/test-suite/csharp/li_std_map_runme.cs 2010-03-06 00:51:54 UTC (rev 11905) @@ -1,12 +1,7 @@ /* ----------------------------------------------------------------------------- - * See the LICENSE file for information on copyright, usage and redistribution - * of SWIG, and the README file for authors - http://www.swig.org/release.html. - * * li_std_map_runme.cs * * SWIG C# tester for std_map.i - * Implementation by Yuval Baror (http://yuval.bar-or.org) - * * This class tests all the functionality of the std_map.i wrapper. * Upon successful testing, the main function doesn't print out anything. * If any error is found - it will be printed on the screen. Property changes on: branches/gsoc2009-matevz/Examples/test-suite/guilescm/guilescm_ext_test_runme.scm ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/guilescm/guilescm_ext_test_runme.scm:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/guilescm_ext_test.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/guilescm_ext_test.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/implicittest.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/implicittest.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/li_std_functors.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/li_std_functors.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/li_std_list.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/li_std_list.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/li_std_pair_extra.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/li_std_pair_extra.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/li_std_pair_lang_object.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/li_std_pair_lang_object.i:11085-11086,11088-11089 Modified: branches/gsoc2009-matevz/Examples/test-suite/li_std_queue.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/li_std_queue.i 2010-03-06 00:51:32 UTC (rev 11904) +++ branches/gsoc2009-matevz/Examples/test-suite/li_std_queue.i 2010-03-06 00:51:54 UTC (rev 11905) @@ -1,13 +1,4 @@ -/** - * @file std_queue.i - * @author gga - * @date Sun May 6 01:52:44 2007 - * - * @brief test of std::queue - * - * - */ - +// test of std::queue %module li_std_queue %include std_queue.i Property changes on: branches/gsoc2009-matevz/Examples/test-suite/li_std_queue.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/li_std_queue.i:11085-11086,11088-11089 Modified: branches/gsoc2009-matevz/Examples/test-suite/li_std_set.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/li_std_set.i 2010-03-06 00:51:32 UTC (rev 11904) +++ branches/gsoc2009-matevz/Examples/test-suite/li_std_set.i 2010-03-06 00:51:54 UTC (rev 11905) @@ -1,18 +1,12 @@ -/** - * @file li_std_set.i - * @author gga - * @date Tue May 1 02:52:47 2007 - * - * @brief a test of set containers. - * Languages should define swig::LANGUAGE_OBJ to be - * an entity of their native pointer type which can be - * included in a STL container. +/* + * a test of set containers. + * Languages should define swig::LANGUAGE_OBJ to be + * an entity of their native pointer type which can be + * included in a STL container. * - * For example: - * swig::LANGUAGE_OBJ is GC_VALUE in Ruby - * swig::LANGUAGE_OBJ is SwigPtr_PyObject in python - * - * + * For example: + * swig::LANGUAGE_OBJ is GC_VALUE in Ruby + * swig::LANGUAGE_OBJ is SwigPtr_PyObject in python */ %module li_std_set Modified: branches/gsoc2009-matevz/Examples/test-suite/li_std_stack.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/li_std_stack.i 2010-03-06 00:51:32 UTC (rev 11904) +++ branches/gsoc2009-matevz/Examples/test-suite/li_std_stack.i 2010-03-06 00:51:54 UTC (rev 11905) @@ -1,13 +1,4 @@ -/** - * @file std_stack.i - * @author gga - * @date Sun May 6 01:52:44 2007 - * - * @brief test of std::stack - * - * - */ - +// test of std::stack %module li_std_stack %include std_stack.i Property changes on: branches/gsoc2009-matevz/Examples/test-suite/li_std_stack.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/li_std_stack.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/li_std_string_extra.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/li_std_string_extra.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/octave/li_std_pair_extra_runme.m ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/octave/li_std_pair_extra_runme.m:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/octave/li_std_string_extra_runme.m ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/octave/li_std_string_extra_runme.m:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/octave/octave_cell_deref_runme.m ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/octave/octave_cell_deref_runme.m:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/octave_cell_deref.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/octave_cell_deref.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/abstract_inherit_ok_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/abstract_inherit_ok_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/abstract_inherit_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/abstract_inherit_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/add_link_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/add_link_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/argout_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/argout_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/arrayptr_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/arrayptr_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/arrays_global_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/arrays_global_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/arrays_global_twodim_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/arrays_global_twodim_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/arrays_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/arrays_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/arrays_scope_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/arrays_scope_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/casts_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/casts_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/class_ignore_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/class_ignore_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/conversion_namespace_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/conversion_namespace_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/conversion_ns_template_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/conversion_ns_template_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/conversion_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/conversion_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/cpp_static_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/cpp_static_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/enum_scope_template_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/enum_scope_template_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/evil_diamond_ns_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/evil_diamond_ns_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/evil_diamond_prop_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/evil_diamond_prop_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/evil_diamond_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/evil_diamond_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/extend_template_ns_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/extend_template_ns_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/extend_template_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/extend_template_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/grouping_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/grouping_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/ignore_parameter_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/ignore_parameter_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/li_carrays_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/li_carrays_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/li_std_string_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/li_std_string_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/rename_scope_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/rename_scope_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/skel.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/skel.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/smart_pointer_rename_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/smart_pointer_rename_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/sym_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/sym_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/template_arg_typename_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/template_arg_typename_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/template_construct_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/template_construct_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/tests.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/tests.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/typedef_reference_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/typedef_reference_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/typemap_ns_using_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/typemap_ns_using_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/using1_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/using1_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/using2_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/using2_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php/valuewrapper_base_runme.php ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php/valuewrapper_base_runme.php:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/php_namewarn_rename.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/php_namewarn_rename.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/python/li_std_pair_extra_runme.py ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/python/li_std_pair_extra_runme.py:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/python/li_std_string_extra_runme.py ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/python/li_std_string_extra_runme.py:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/r/r_copy_struct_runme.R ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/r/r_copy_struct_runme.R:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/r/r_double_delete_runme.R ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/r/r_double_delete_runme.R:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/r/r_legacy_runme.R ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/r/r_legacy_runme.R:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/r_copy_struct.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/r_copy_struct.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/r_double_delete.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/r_double_delete.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/r_legacy.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/r_legacy.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_keywords_runme.rb ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/ruby/ruby_keywords_runme.rb:11085-11086,11088-11089 Modified: branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_li_std_speed_runme.rb =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_li_std_speed_runme.rb 2010-03-06 00:51:32 UTC (rev 11904) +++ branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_li_std_speed_runme.rb 2010-03-06 00:51:54 UTC (rev 11905) @@ -3,9 +3,6 @@ # This is a simple speed benchmark suite for std containers, # to verify their O(n) performance. # It is not part of the standard tests. -# -# License:: SWIG -# require 'benchmark' Property changes on: branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_li_std_speed_runme.rb ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/ruby/ruby_li_std_speed_runme.rb:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_naming_runme.rb ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/ruby/ruby_naming_runme.rb:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_track_objects_directors_runme.rb ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/ruby/ruby_track_objects_directors_runme.rb:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/ruby/ruby_track_objects_runme.rb ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/ruby/ruby_track_objects_runme.rb:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/ruby_keywords.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/ruby_keywords.i:11085-11086,11088-11089 Modified: branches/gsoc2009-matevz/Examples/test-suite/ruby_li_std_speed.i =================================================================== --- branches/gsoc2009-matevz/Examples/test-suite/ruby_li_std_speed.i 2010-03-06 00:51:32 UTC (rev 11904) +++ branches/gsoc2009-matevz/Examples/test-suite/ruby_li_std_speed.i 2010-03-06 00:51:54 UTC (rev 11905) @@ -1,13 +1,4 @@ -/** - * @file ruby_li_std_speed.i - * @author gga - * @date Fri May 18 18:03:15 2007 - * - * @brief A speed test of the ruby stl - * - * - */ - +// A speed test of the ruby stl %module ruby_li_std_speed %include <std_list.i> Property changes on: branches/gsoc2009-matevz/Examples/test-suite/ruby_li_std_speed.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/ruby_li_std_speed.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/ruby_naming.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/ruby_naming.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/ruby_track_objects.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/ruby_track_objects.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/ruby_track_objects_directors.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/ruby_track_objects_directors.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/simple_array.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/simple_array.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/stl_new.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/stl_new.i:11085-11086,11088-11089 Property changes on: branches/gsoc2009-matevz/Examples/test-suite/union_parameter.i ___________________________________________________________________ Deleted: svn:mergeinfo - /branches/swig-2.0/Examples/test-suite/union_parameter.i:11085-11086,11088-11089 Deleted: branches/gsoc2009-matevz/Examples/xml/example_gif.i =================================================================== --- branches/gsoc2009-matevz/Examples/xml/example_gif.i 2010-03-06 00:51:32 UTC (rev 11904) +++ branches/gsoc2009-matevz/Examples/xml/example_gif.i 2010-03-06 00:51:54 UTC (rev 11905) @@ -1,329 +0,0 @@ -/* ----------------------------------------------------------------------------- - * gifplot.h - * - * Main header file for the GIFPlot library. - * - * Author(s) : David Beazley (be...@cs...) - * Copyright (C) 1995-1996 - * - * See the file LICENSE for information on usage and redistribution. - * ----------------------------------------------------------------------------- */ - -#include <stdio.h> -#include <fcntl.h> -#include <float.h> -#include <stdlib.h> -#include <string.h> -#include <limits.h> - -#ifndef GIFPLOT_H - -/* Pixel is 8-bits */ - -typedef unsigned char Pixel; -typedef float Zvalue; - -/* ------------------------------------------------------------------------ - ColorMap - - Definition and methods for colormaps - ------------------------------------------------------------------------ */ - -typedef struct ColorMap { - unsigned char *cmap; - char *name; -} ColorMap; - -extern ColorMap *new_ColorMap(char *filename); -extern void delete_ColorMap(ColorMap *c); -extern void ColorMap_default(ColorMap *c); -extern void ColorMap_assign(ColorMap *c, int index, int r, int g, int b); -extern int ColorMap_getitem(ColorMap *c, int index); -extern void ColorMap_setitem(ColorMap *c, int index, int value); -extern int ColorMap_write(ColorMap *c, char *filename); - -/* Some default colors */ - -#define BLACK 0 -#define WHITE 1 -#define RED 2 -#define GREEN 3 -#define BLUE 4 -#define YELLOW 5 -#define CYAN 6 -#define MAGENTA 7 - -/*------------------------------------------------------------------------- - FrameBuffer - - This structure defines a simple 8 bit framebuffer. - ------------------------------------------------------------------------- */ - -typedef struct FrameBuffer { - Pixel **pixels; - Zvalue **zbuffer; - unsigned int height; - unsigned int width; - int xmin; /* These are used for clipping */ - int ymin; - int xmax; - int ymax; -} FrameBuffer; - -#define ZMIN 1e+36 - -/* FrameBuffer Methods */ - -extern FrameBuffer *new_FrameBuffer(unsigned int width, unsigned int height); -extern void delete_FrameBuffer(FrameBuffer *frame); -extern int FrameBuffer_resi... [truncated message content] |