From: <wsf...@us...> - 2009-01-31 19:02:13
|
Revision: 11101 http://swig.svn.sourceforge.net/swig/?rev=11101&view=rev Author: wsfulton Date: 2009-01-31 19:02:10 +0000 (Sat, 31 Jan 2009) Log Message: ----------- const / non-const warning fix Modified Paths: -------------- trunk/Source/Swig/cwrap.c trunk/Source/Swig/swig.h Modified: trunk/Source/Swig/cwrap.c =================================================================== --- trunk/Source/Swig/cwrap.c 2009-01-31 14:37:54 UTC (rev 11100) +++ trunk/Source/Swig/cwrap.c 2009-01-31 19:02:10 UTC (rev 11101) @@ -683,7 +683,7 @@ * * ----------------------------------------------------------------------------- */ -String *Swig_cmemberset_call(const_String_or_char_ptr name, SwigType *type, const_String_or_char_ptr self, int varcref) { +String *Swig_cmemberset_call(const_String_or_char_ptr name, SwigType *type, String *self, int varcref) { String *func; String *pname0 = Swig_cparm_name(0, 0); String *pname1 = Swig_cparm_name(0, 1); @@ -718,7 +718,7 @@ * * ----------------------------------------------------------------------------- */ -String *Swig_cmemberget_call(const_String_or_char_ptr name, SwigType *t, const_String_or_char_ptr self, int varcref) { +String *Swig_cmemberget_call(const_String_or_char_ptr name, SwigType *t, String *self, int varcref) { String *func; String *call; String *pname0 = Swig_cparm_name(0, 0); Modified: trunk/Source/Swig/swig.h =================================================================== --- trunk/Source/Swig/swig.h 2009-01-31 14:37:54 UTC (rev 11100) +++ trunk/Source/Swig/swig.h 2009-01-31 19:02:10 UTC (rev 11101) @@ -333,8 +333,8 @@ extern String *Swig_ref_call(Node *n, const String *lname); extern String *Swig_cdestructor_call(Node *n); extern String *Swig_cppdestructor_call(Node *n); - extern String *Swig_cmemberset_call(const_String_or_char_ptr name, SwigType *type, const_String_or_char_ptr self, int varcref); - extern String *Swig_cmemberget_call(const_String_or_char_ptr name, SwigType *t, const_String_or_char_ptr self, int varcref); + extern String *Swig_cmemberset_call(const_String_or_char_ptr name, SwigType *type, String *self, int varcref); + extern String *Swig_cmemberget_call(const_String_or_char_ptr name, SwigType *t, String *self, int varcref); extern int Swig_add_extension_code(Node *n, const String *function_name, ParmList *parms, SwigType *return_type, const String *code, int cplusplus, const String *self); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2009-08-30 14:35:59
|
Revision: 11674 http://swig.svn.sourceforge.net/swig/?rev=11674&view=rev Author: wsfulton Date: 2009-08-30 14:35:43 +0000 (Sun, 30 Aug 2009) Log Message: ----------- remove svn:needs-lock property Property Changed: ---------------- trunk/Source/Swig/swigfile.h trunk/Source/Swig/swigopt.h trunk/Source/Swig/swigparm.h trunk/Source/Swig/swigscan.h trunk/Source/Swig/swigtree.h trunk/Source/Swig/swigwrap.h Property changes on: trunk/Source/Swig/swigfile.h ___________________________________________________________________ Deleted: svn:needs-lock - * Property changes on: trunk/Source/Swig/swigopt.h ___________________________________________________________________ Deleted: svn:needs-lock - * Property changes on: trunk/Source/Swig/swigparm.h ___________________________________________________________________ Deleted: svn:needs-lock - * Property changes on: trunk/Source/Swig/swigscan.h ___________________________________________________________________ Deleted: svn:needs-lock - * Property changes on: trunk/Source/Swig/swigtree.h ___________________________________________________________________ Deleted: svn:needs-lock - * Property changes on: trunk/Source/Swig/swigwrap.h ___________________________________________________________________ Deleted: svn:needs-lock - * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2009-12-24 15:50:12
|
Revision: 11798 http://swig.svn.sourceforge.net/swig/?rev=11798&view=rev Author: wsfulton Date: 2009-12-24 15:50:03 +0000 (Thu, 24 Dec 2009) Log Message: ----------- remove warn.c - it isn't used Modified Paths: -------------- trunk/Source/Swig/swig.h Removed Paths: ------------- trunk/Source/Swig/warn.c Modified: trunk/Source/Swig/swig.h =================================================================== --- trunk/Source/Swig/swig.h 2009-12-23 01:05:17 UTC (rev 11797) +++ trunk/Source/Swig/swig.h 2009-12-24 15:50:03 UTC (rev 11798) @@ -307,13 +307,8 @@ extern String *Swig_string_title(String *s); extern void Swig_init(void); - extern void Swig_warn(const char *filename, int line, const char *msg); - extern int Swig_value_wrapper_mode(int mode); - -#define WARNING(msg) Swig_warn(__FILE__,__LINE__,msg) - typedef enum { EMF_STANDARD, EMF_MICROSOFT } ErrorMessageFormat; extern void Swig_warning(int num, const_String_or_char_ptr filename, int line, const char *fmt, ...); Deleted: trunk/Source/Swig/warn.c =================================================================== --- trunk/Source/Swig/warn.c 2009-12-23 01:05:17 UTC (rev 11797) +++ trunk/Source/Swig/warn.c 2009-12-24 15:50:03 UTC (rev 11798) @@ -1,34 +0,0 @@ -/* ----------------------------------------------------------------------------- - * 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. - * - * warn.c - * - * SWIG warning framework. This was added to warn developers about - * deprecated APIs and other features. - * ----------------------------------------------------------------------------- */ - -char cvsroot_warn_c[] = "$Id$"; - -#include "swig.h" - -static Hash *warnings = 0; - -/* ----------------------------------------------------------------------------- - * Swig_warn() - * - * Issue a warning - * ----------------------------------------------------------------------------- */ - -void Swig_warn(const char *filename, int line, const char *msg) { - String *key; - if (!warnings) { - warnings = NewHash(); - } - key = NewStringf("%s:%d", filename, line); - if (!Getattr(warnings, key)) { - Printf(stderr, "swig-dev warning:%s:%d:%s\n", filename, line, msg); - Setattr(warnings, key, key); - } - Delete(key); -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2009-12-24 16:51:52
|
Revision: 11800 http://swig.svn.sourceforge.net/swig/?rev=11800&view=rev Author: wsfulton Date: 2009-12-24 16:51:45 +0000 (Thu, 24 Dec 2009) Log Message: ----------- Add Swig_diagnostic() for displaying file and line number messages to stdout Modified Paths: -------------- trunk/Source/Swig/error.c trunk/Source/Swig/swig.h Modified: trunk/Source/Swig/error.c =================================================================== --- trunk/Source/Swig/error.c 2009-12-24 15:53:01 UTC (rev 11799) +++ trunk/Source/Swig/error.c 2009-12-24 16:51:45 UTC (rev 11800) @@ -49,13 +49,15 @@ static char wrn_nnum_fmt[64]; static char err_line_fmt[64]; static char err_eof_fmt[64]; +static char diag_line_fmt[64]; +static char diag_eof_fmt[64]; static String *format_filename(const_String_or_char_ptr filename); /* ----------------------------------------------------------------------------- * Swig_warning() * - * Issue a warning message + * Issue a warning message on stderr. * ----------------------------------------------------------------------------- */ void Swig_warning(int wnum, const_String_or_char_ptr filename, int line, const char *fmt, ...) { @@ -118,7 +120,7 @@ /* ----------------------------------------------------------------------------- * Swig_error() * - * Issue an error message + * Issue an error message on stderr. * ----------------------------------------------------------------------------- */ void Swig_error(const_String_or_char_ptr filename, int line, const char *fmt, ...) { @@ -258,6 +260,8 @@ sprintf(wrn_nnum_fmt, "%s: %s: ", fmt_line, warning); sprintf(err_line_fmt, "%s: %s: ", fmt_line, error); sprintf(err_eof_fmt, "%s: %s: ", fmt_eof, error); + sprintf(diag_line_fmt, "%s: ", fmt_line); + sprintf(diag_eof_fmt, "%s: ", fmt_eof); msg_format = format; init_fmt = 1; @@ -275,3 +279,29 @@ #endif return formatted_filename; } + +/* ----------------------------------------------------------------------------- + * Swig_diagnostic() + * + * Issue a diagnostic message on stdout. + * ----------------------------------------------------------------------------- */ + +void Swig_diagnostic(const_String_or_char_ptr filename, int line, const char *fmt, ...) { + va_list ap; + String *formatted_filename = NULL; + + if (!init_fmt) + Swig_error_msg_format(DEFAULT_ERROR_MSG_FORMAT); + + va_start(ap, fmt); + formatted_filename = format_filename(filename); + if (line > 0) { + Printf(stdout, diag_line_fmt, formatted_filename, line); + } else { + Printf(stdout, diag_eof_fmt, formatted_filename); + } + vPrintf(stdout, fmt, ap); + va_end(ap); + Delete(formatted_filename); +} + Modified: trunk/Source/Swig/swig.h =================================================================== --- trunk/Source/Swig/swig.h 2009-12-24 15:53:01 UTC (rev 11799) +++ trunk/Source/Swig/swig.h 2009-12-24 16:51:45 UTC (rev 11800) @@ -319,6 +319,7 @@ extern void Swig_warnall(void); extern int Swig_warn_count(void); extern void Swig_error_msg_format(ErrorMessageFormat format); + extern void Swig_diagnostic(const_String_or_char_ptr filename, int line, const char *fmt, ...); /* --- C Wrappers --- */ extern String *Swig_cparm_name(Parm *p, int i); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2010-01-05 23:24:54
|
Revision: 11803 http://swig.svn.sourceforge.net/swig/?rev=11803&view=rev Author: wsfulton Date: 2010-01-05 23:24:47 +0000 (Tue, 05 Jan 2010) Log Message: ----------- Fix -debug-tmsearch and -debug-tmused to show tthat the typemap came from a typemap copy or %apply Modified Paths: -------------- trunk/Source/Swig/parms.c trunk/Source/Swig/swigparm.h trunk/Source/Swig/typemap.c Modified: trunk/Source/Swig/parms.c =================================================================== --- trunk/Source/Swig/parms.c 2010-01-04 19:33:52 UTC (rev 11802) +++ trunk/Source/Swig/parms.c 2010-01-05 23:24:47 UTC (rev 11803) @@ -183,6 +183,24 @@ return out; } +/* ----------------------------------------------------------------------------- + * ParmList_str_multibrackets() + * + * Generates a string of parameters including default arguments adding brackets + * if more than one parameter + * ----------------------------------------------------------------------------- */ + +String *ParmList_str_multibrackets(ParmList *p) { + String *out; + String *parm_str = ParmList_str_defaultargs(p); + if (ParmList_len(p) > 1) + out = NewStringf("(%s)", parm_str); + else + out = NewStringf("%s", parm_str); + Delete(parm_str); + return out; +} + /* --------------------------------------------------------------------- * ParmList_protostr() * Modified: trunk/Source/Swig/swigparm.h =================================================================== --- trunk/Source/Swig/swigparm.h 2010-01-04 19:33:52 UTC (rev 11802) +++ trunk/Source/Swig/swigparm.h 2010-01-05 23:24:47 UTC (rev 11803) @@ -25,6 +25,7 @@ /* Output functions */ extern String *ParmList_str(ParmList *); extern String *ParmList_str_defaultargs(ParmList *); +extern String *ParmList_str_multibrackets(ParmList *); extern String *ParmList_protostr(ParmList *); Modified: trunk/Source/Swig/typemap.c =================================================================== --- trunk/Source/Swig/typemap.c 2010-01-04 19:33:52 UTC (rev 11802) +++ trunk/Source/Swig/typemap.c 2010-01-05 23:24:47 UTC (rev 11803) @@ -40,7 +40,7 @@ * "type" - Typemap type * "pname" - Parameter name * "code" - Typemap code - * "typemap" - Descriptive text describing the actual map + * "source" - Source directive (%apply or %typemap) for the typemap * "locals" - Local variables (if any) * "kwargs" - Typemap attributes * @@ -50,7 +50,7 @@ * "type" - r.int * "pname" - my_int * "code" - $1 = $input; - * "typemap" - typemap(in) int &my_int + * "source" - typemap(in) int &my_int * "locals" - int tmp * "kwargs" - warning="987:my typemap warning", foo=123 * @@ -180,7 +180,7 @@ * Internal implementation for Swig_typemap_register() * ----------------------------------------------------------------------------- */ -static void typemap_register(const_String_or_char_ptr tmap_method, ParmList *parms, const_String_or_char_ptr code, ParmList *locals, ParmList *kwargs, const_String_or_char_ptr actual_tmap_method, ParmList *parmlist_start) { +static void typemap_register(const_String_or_char_ptr tmap_method, ParmList *parms, const_String_or_char_ptr code, ParmList *locals, ParmList *kwargs, String *source_directive) { Hash *tm; Hash *tm1; Hash *tm2; @@ -252,26 +252,20 @@ if (np) { /* Make an entirely new typemap method key */ String *multi_tmap_method = NewStringf("%s-%s+%s:", tmap_method, type, pname); + /* Now reregister on the remaining arguments */ - typemap_register(multi_tmap_method, np, code, locals, kwargs, actual_tmap_method, parmlist_start); + typemap_register(multi_tmap_method, np, code, locals, kwargs, source_directive); - /* Setattr(tm2,multi_tmap_method,multi_tmap_method); */ Delete(multi_tmap_method); } else { ParmList *clocals = CopyParmList(locals); ParmList *ckwargs = CopyParmList(kwargs); - String *parms_str = ParmList_str(parmlist_start); - String *typemap; - if (ParmList_len(parmlist_start) > 1) - typemap = NewStringf("typemap(%s) (%s)", actual_tmap_method, parms_str); - else - typemap = NewStringf("typemap(%s) %s", actual_tmap_method, parms_str); Setfile(tm2, Getfile(code)); Setline(tm2, Getline(code)); Setattr(tm2, "code", code); Setattr(tm2, "type", type); - Setattr(tm2, "typemap", typemap); + Setattr(tm2, "source", source_directive); if (pname) { Setattr(tm2, "pname", pname); } @@ -280,9 +274,6 @@ Delete(clocals); Delete(ckwargs); - - Delete(parms_str); - Delete(typemap); } } @@ -293,7 +284,13 @@ * ----------------------------------------------------------------------------- */ void Swig_typemap_register(const_String_or_char_ptr tmap_method, ParmList *parms, const_String_or_char_ptr code, ParmList *locals, ParmList *kwargs) { - typemap_register(tmap_method, parms, code, locals, kwargs, tmap_method, parms); + String *parms_str = ParmList_str_multibrackets(parms); + String *source_directive = NewStringf("typemap(%s) %s", tmap_method, parms_str); + + typemap_register(tmap_method, parms, code, locals, kwargs, source_directive); + + Delete(source_directive); + Delete(parms_str); } /* ----------------------------------------------------------------------------- @@ -361,9 +358,16 @@ Delete(tm_methods); if (!p && tm) { + /* Got some kind of match */ + String *parms_str = ParmList_str_multibrackets(parms); + String *srcparms_str = ParmList_str_multibrackets(srcparms); + String *source_directive = NewStringf("typemap(%s) %s = %s", tmap_method, parms_str, srcparms_str); - /* Got some kind of match */ - Swig_typemap_register(tmap_method, parms, Getattr(tm, "code"), Getattr(tm, "locals"), Getattr(tm, "kwargs")); + typemap_register(tmap_method, parms, Getattr(tm, "code"), Getattr(tm, "locals"), Getattr(tm, "kwargs"), source_directive); + + Delete(source_directive); + Delete(srcparms_str); + Delete(parms_str); return 0; } ts--; @@ -529,9 +533,17 @@ locals = Getattr(sm1, "locals"); kwargs = Getattr(sm1, "kwargs"); if (code) { + String *src_str = ParmList_str_multibrackets(src); + String *dest_str = ParmList_str_multibrackets(dest); + String *source_directive = NewStringf("apply %s { %s }", src_str, dest_str); + Replace(nkey, dsig, "", DOH_REPLACE_ANY); Replace(nkey, "tmap:", "", DOH_REPLACE_ANY); - Swig_typemap_register(nkey, dest, code, locals, kwargs); + typemap_register(nkey, dest, code, locals, kwargs, source_directive); + + Delete(source_directive); + Delete(dest_str); + Delete(src_str); } } Delete(nkey); @@ -616,7 +628,7 @@ static void debug_search_result_display(Node *tm) { if (tm) - Printf(stdout, " Using: %%%s\n", Getattr(tm, "typemap")); + Printf(stdout, " Using: %%%s\n", Getattr(tm, "source")); else Printf(stdout, " None found\n"); } @@ -876,7 +888,7 @@ debug_search_result_display(tm); if (typemaps_used_debug && tm) { String *typestr = SwigType_str(type, name); - Swig_diagnostic(Getfile(parms), Getline(parms), "Using %%%s for: %s\n", Getattr(tm, "typemap"), typestr); + Swig_diagnostic(Getfile(parms), Getline(parms), "Using %%%s for: %s\n", Getattr(tm, "source"), typestr); assert(Getfile(parms) && Len(Getfile(parms)) > 0); /* Missing file and line numbering information */ Delete(typestr); } @@ -1356,7 +1368,7 @@ debug_search_result_display(tm); if (typemaps_used_debug && tm) { String *typestr = SwigType_str(type, qpname ? qpname : pname); - Swig_diagnostic(Getfile(node), Getline(node), "Using %%%s for: %s\n", Getattr(tm, "typemap"), typestr); + Swig_diagnostic(Getfile(node), Getline(node), "Using %%%s for: %s\n", Getattr(tm, "source"), typestr); assert(Getfile(node) && Len(Getfile(node)) > 0); /* Missing file and line numbering information */ Delete(typestr); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2010-01-29 06:55:45
|
Revision: 11833 http://swig.svn.sourceforge.net/swig/?rev=11833&view=rev Author: wsfulton Date: 2010-01-29 06:55:38 +0000 (Fri, 29 Jan 2010) Log Message: ----------- Remove unnecessary duplicate typemap lookup Modified Paths: -------------- trunk/Source/Swig/swig.h trunk/Source/Swig/typemap.c trunk/Source/Swig/typeobj.c Modified: trunk/Source/Swig/swig.h =================================================================== --- trunk/Source/Swig/swig.h 2010-01-28 22:39:44 UTC (rev 11832) +++ trunk/Source/Swig/swig.h 2010-01-29 06:55:38 UTC (rev 11833) @@ -158,6 +158,7 @@ extern String *SwigType_namestr(const SwigType *t); extern String *SwigType_templateprefix(const SwigType *t); extern String *SwigType_templatesuffix(const SwigType *t); + extern String *SwigType_istemplate_templateprefix(const SwigType *t); extern String *SwigType_templateargs(const SwigType *t); extern String *SwigType_prefix(const SwigType *t); extern int SwigType_array_ndim(SwigType *t); Modified: trunk/Source/Swig/typemap.c =================================================================== --- trunk/Source/Swig/typemap.c 2010-01-28 22:39:44 UTC (rev 11832) +++ trunk/Source/Swig/typemap.c 2010-01-29 06:55:38 UTC (rev 11833) @@ -705,9 +705,9 @@ /* look for the type reduced to just the template prefix */ Delete(template_prefix); - template_prefix = SwigType_templateprefix(ctype); - tm = get_typemap(ts, template_prefix); + template_prefix = SwigType_istemplate_templateprefix(ctype); if (template_prefix) { + tm = get_typemap(ts, template_prefix); if (debug_display && cqualifiedname) Printf(stdout, " Looking for: %s\n", SwigType_str(template_prefix, cqualifiedname)); if (tm && cqualifiedname) { Modified: trunk/Source/Swig/typeobj.c =================================================================== --- trunk/Source/Swig/typeobj.c 2010-01-28 22:39:44 UTC (rev 11832) +++ trunk/Source/Swig/typeobj.c 2010-01-29 06:55:38 UTC (rev 11833) @@ -852,10 +852,12 @@ * SwigType_templateprefix() * * Returns the prefix before the first template definition. + * Returns the type unmodified if not a template. * For example: * * Foo<(p.int)>::bar => Foo * r.q(const).Foo<(p.int)>::bar => r.q(const).Foo + * Foo => Foo * ----------------------------------------------------------------------------- */ String *SwigType_templateprefix(const SwigType *t) { @@ -897,6 +899,25 @@ } /* ----------------------------------------------------------------------------- + * SwigType_istemplate_templateprefix() + * + * Combines SwigType_istemplate and SwigType_templateprefix efficiently into one function. + * Returns the prefix before the first template definition. + * Returns NULL if not a template. + * For example: + * + * Foo<(p.int)>::bar => Foo + * r.q(const).Foo<(p.int)>::bar => r.q(const).Foo + * Foo => NULL + * ----------------------------------------------------------------------------- */ + +String *SwigType_istemplate_templateprefix(const SwigType *t) { + const char *s = Char(t); + const char *c = strstr(s, "<("); + return c ? NewStringWithSize(s, c - s) : 0; +} + +/* ----------------------------------------------------------------------------- * SwigType_templateargs() * * Returns the template arguments This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2010-04-01 18:33:35
|
Revision: 11960 http://swig.svn.sourceforge.net/swig/?rev=11960&view=rev Author: wsfulton Date: 2010-04-01 18:33:27 +0000 (Thu, 01 Apr 2010) Log Message: ----------- remove old default SWIGTYPE reduction code Modified Paths: -------------- trunk/Source/Swig/stype.c trunk/Source/Swig/swig.h Modified: trunk/Source/Swig/stype.c =================================================================== --- trunk/Source/Swig/stype.c 2010-04-01 18:29:36 UTC (rev 11959) +++ trunk/Source/Swig/stype.c 2010-04-01 18:33:27 UTC (rev 11960) @@ -275,224 +275,6 @@ } /* ----------------------------------------------------------------------------- - * SwigType_default() - * - * Create the default string for this datatype. This takes a type and strips it - * down to its most primitive form--resolving all typedefs and removing operators. - * - * Rules: - * Pointers: p.SWIGTYPE - * References: r.SWIGTYPE - * Arrays: a().SWIGTYPE - * Types: SWIGTYPE - * MemberPointer: m(CLASS).SWIGTYPE - * Enums: enum SWIGTYPE - * - * Note: if this function is applied to a primitive type, it returns NULL. This - * allows recursive application for special types like arrays. - * ----------------------------------------------------------------------------- */ - -#ifdef SWIG_DEFAULT_CACHE -static Hash *default_cache = 0; -#endif - -#define SWIG_NEW_TYPE_DEFAULT -/* The new default type resolution method: - -1.- It preserves the original mixed types, then it goes 'backward' - first deleting the qualifier, then the inner types - - typedef A *Aptr; - const Aptr&; - r.q(const).Aptr -> r.q(const).p.SWIGTYPE - r.q(const).p.SWIGTYPE -> r.p.SWIGTYPE - r.p.SWIGTYPE -> r.SWIGTYPE - r.SWIGTYPE -> SWIGTYPE - - - enum Hello {}; - const Hello& hi; - r.q(const).Hello -> r.q(const).enum SWIGTYPE - r.q(const).enum SWIGTYPE -> r.enum SWIGTYPE - r.enum SWIGTYPE -> r.SWIGTYPE - r.SWIGTYPE -> SWIGTYPE - - int a[2][4]; - a(2).a(4).int -> a(ANY).a(ANY).SWIGTYPE - a(ANY).a(ANY).SWIGTYPE -> a(ANY).a().SWIGTYPE - a(ANY).a().SWIGTYPE -> a(ANY).p.SWIGTYPE - a(ANY).p.SWIGTYPE -> a(ANY).SWIGTYPE - a(ANY).SWIGTYPE -> a().SWIGTYPE - a().SWIGTYPE -> p.SWIGTYPE - p.SWIGTYPE -> SWIGTYPE -*/ - -static -void SwigType_add_default(String *def, SwigType *nr) { - if (Strcmp(nr, "SWIGTYPE") == 0) { - Append(def, "SWIGTYPE"); - } else { - String *q = SwigType_isqualifier(nr) ? SwigType_pop(nr) : 0; - if (q && strstr(Char(nr), "SWIGTYPE")) { - Append(def, nr); - } else { - String *nd = SwigType_default(nr); - if (nd) { - String *bdef = nd; - if (q) { - bdef = NewStringf("%s%s", q, nd); - if ((Strcmp(nr, bdef) == 0)) { - Delete(bdef); - bdef = nd; - } else { - Delete(nd); - } - } - Append(def, bdef); - Delete(bdef); - } else { - Append(def, nr); - } - } - Delete(q); - } -} - - -SwigType *SwigType_default(SwigType *t) { - String *r1, *def; - String *r = 0; - char *cr; - -#ifdef SWIG_DEFAULT_CACHE - if (!default_cache) - default_cache = NewHash(); - - r = Getattr(default_cache, t); - if (r) { - return Copy(r); - } -#endif - - if (SwigType_isvarargs(t)) { - return 0; - } - - r = t; - while ((r1 = SwigType_typedef_resolve(r))) { - if (r != t) - Delete(r); - r = r1; - } - if (SwigType_isqualifier(r)) { - String *q; - if (r == t) - r = Copy(t); - q = SwigType_pop(r); - if (strstr(Char(r), "SWIGTYPE")) { - Delete(q); - def = r; - return def; - } - Delete(q); - } - cr = Char(r); - if (strcmp(cr, "p.SWIGTYPE") == 0) { - def = NewString("SWIGTYPE"); - } else if (SwigType_ispointer(r)) { -#ifdef SWIG_NEW_TYPE_DEFAULT - SwigType *nr = Copy(r); - SwigType_del_pointer(nr); - def = SwigType_isfunction(nr) ? NewStringEmpty() : NewString("p."); - SwigType_add_default(def, nr); - Delete(nr); -#else - def = NewString("p.SWIGTYPE"); -#endif - } else if (strcmp(cr, "r.SWIGTYPE") == 0) { - def = NewString("SWIGTYPE"); - } else if (SwigType_isreference(r)) { -#ifdef SWIG_NEW_TYPE_DEFAULT - SwigType *nr = Copy(r); - SwigType_del_reference(nr); - def = NewString("r."); - SwigType_add_default(def, nr); - Delete(nr); -#else - def = NewString("r.SWIGTYPE"); -#endif - } else if (SwigType_isarray(r)) { - if (strcmp(cr, "a().SWIGTYPE") == 0) { - def = NewString("p.SWIGTYPE"); - } else if (strcmp(cr, "a(ANY).SWIGTYPE") == 0) { - def = NewString("a().SWIGTYPE"); - } else { - int i, empty = 0; - int ndim = SwigType_array_ndim(r); - SwigType *nr = Copy(r); - for (i = 0; i < ndim; i++) { - String *dim = SwigType_array_getdim(r, i); - if (!Len(dim)) { - char *c = Char(nr); - empty = strstr(c, "a(ANY).") != c; - } - Delete(dim); - } - if (empty) { - def = NewString("a()."); - } else { - def = NewString("a(ANY)."); - } -#ifdef SWIG_NEW_TYPE_DEFAULT - SwigType_del_array(nr); - SwigType_add_default(def, nr); -#else - Append(def, "SWIGTYPE"); -#endif - Delete(nr); - } - } else if (SwigType_ismemberpointer(r)) { - if (strcmp(cr, "m(CLASS).SWIGTYPE") == 0) { - def = NewString("p.SWIGTYPE"); - } else { - def = NewString("m(CLASS).SWIGTYPE"); - } - } else if (SwigType_isenum(r)) { - if (strcmp(cr, "enum SWIGTYPE") == 0) { - def = NewString("SWIGTYPE"); - } else { - def = NewString("enum SWIGTYPE"); - } - } else if (SwigType_isfunction(r)) { - if (strcmp(cr, "f(ANY).SWIGTYPE") == 0) { - def = NewString("p.SWIGTYPE"); - } else { - def = NewString("p.f(ANY).SWIGTYPE"); - } - } else { - def = NewString("SWIGTYPE"); - } - if (r != t) - Delete(r); - if (Equal(def, t)) { - Delete(def); - def = 0; - } -#ifdef SWIG_DEFAULT_CACHE - /* The cache produces strange results, see enum_template.i case */ - if (def) { - String *cdef = Copy(def); - Setattr(default_cache, t, cdef); - Delete(cdef); - } -#endif - - /* Printf(stderr,"type : def %s : %s\n", t, def); */ - - return def; -} - -/* ----------------------------------------------------------------------------- * SwigType_default_create() * * Create the default type for this datatype. This takes a type and strips it Modified: trunk/Source/Swig/swig.h =================================================================== --- trunk/Source/Swig/swig.h 2010-04-01 18:29:36 UTC (rev 11959) +++ trunk/Source/Swig/swig.h 2010-04-01 18:33:27 UTC (rev 11960) @@ -37,7 +37,7 @@ /* Global macros */ #define NSPACE_SEPARATOR "." /* Namespace separator for the nspace feature - this should be changed to a target language configurable variable */ -#define NSPACE_TODO 0 /* temporary TODO hack */ +#define NSPACE_TODO 0 /* Languages that still need to implement and test the nspace feature use this */ /* Short names for common data types */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dr...@us...> - 2012-03-17 18:40:45
|
Revision: 12928 http://swig.svn.sourceforge.net/swig/?rev=12928&view=rev Author: drjoe Date: 2012-03-17 18:40:38 +0000 (Sat, 17 Mar 2012) Log Message: ----------- Add more debug code into swig internals Modified Paths: -------------- trunk/Source/Swig/include.c trunk/Source/Swig/swig.h trunk/Source/Swig/swigfile.h trunk/Source/Swig/typemap.c Modified: trunk/Source/Swig/include.c =================================================================== --- trunk/Source/Swig/include.c 2012-03-17 18:37:51 UTC (rev 12927) +++ trunk/Source/Swig/include.c 2012-03-17 18:40:38 UTC (rev 12928) @@ -21,6 +21,7 @@ static String *lastpath = 0; /* Last file that was included */ static List *pdirectories = 0; /* List of pushed directories */ static int dopush = 1; /* Whether to push directories */ +static int file_debug = 1; /* This functions determine whether to push/pop dirs in the preprocessor */ void Swig_set_push_dir(int push) { @@ -173,6 +174,9 @@ cname = Char(name); filename = NewString(cname); assert(filename); + if (file_debug) { + Printf(stdout, " Open: %s\n", filename); + } f = fopen(Char(filename), "r"); if (!f && use_include_path) { spath = Swig_search_path_any(sysfile); @@ -386,3 +390,10 @@ *(++c) = 0; return tmp; } + +/* + * Swig_file_debug() + */ +void Swig_file_debug_set() { + file_debug = 1; +} Modified: trunk/Source/Swig/swig.h =================================================================== --- trunk/Source/Swig/swig.h 2012-03-17 18:37:51 UTC (rev 12927) +++ trunk/Source/Swig/swig.h 2012-03-17 18:40:38 UTC (rev 12928) @@ -388,6 +388,7 @@ extern void Swig_typemap_debug(void); extern void Swig_typemap_search_debug_set(void); extern void Swig_typemap_used_debug_set(void); + extern void Swig_typemap_register_debug_set(void); extern String *Swig_typemap_lookup(const_String_or_char_ptr tmap_method, Node *n, const_String_or_char_ptr lname, Wrapper *f); extern String *Swig_typemap_lookup_out(const_String_or_char_ptr tmap_method, Node *n, const_String_or_char_ptr lname, Wrapper *f, String *actioncode); Modified: trunk/Source/Swig/swigfile.h =================================================================== --- trunk/Source/Swig/swigfile.h 2012-03-17 18:37:51 UTC (rev 12927) +++ trunk/Source/Swig/swigfile.h 2012-03-17 18:40:38 UTC (rev 12928) @@ -30,6 +30,7 @@ extern char *Swig_file_basename(const_String_or_char_ptr filename); extern char *Swig_file_filename(const_String_or_char_ptr filename); extern char *Swig_file_dirname(const_String_or_char_ptr filename); +extern void Swig_file_debug_set(); /* Delimiter used in accessing files and directories */ Modified: trunk/Source/Swig/typemap.c =================================================================== --- trunk/Source/Swig/typemap.c 2012-03-17 18:37:51 UTC (rev 12927) +++ trunk/Source/Swig/typemap.c 2012-03-17 18:40:38 UTC (rev 12928) @@ -23,6 +23,7 @@ static int typemap_search_debug = 0; static int typemaps_used_debug = 0; +static int typemap_register_debug = 0; static int in_typemap_search_multi = 0; static void replace_embedded_typemap(String *s, ParmList *parm_sublist, Wrapper *f, Node *file_line_node); @@ -191,9 +192,14 @@ String *tm_method; SwigType *type; String *pname; - if (!parms) return; + + if (typemap_register_debug) { + Printf(stdout, "Registering - %s\n", tmap_method); + Swig_print_node(parms); + } + tm_method = typemap_method_name(tmap_method); /* Register the first type in the parameter list */ @@ -2064,3 +2070,13 @@ typemaps_used_debug = 1; } +/* ----------------------------------------------------------------------------- + * Swig_typemap_register_debug_set() + * + * Turn on typemaps used debug display + * ----------------------------------------------------------------------------- */ + +void Swig_typemap_register_debug_set(void) { + typemap_register_debug = 1; +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2012-11-13 22:17:17
|
Revision: 13879 http://swig.svn.sourceforge.net/swig/?rev=13879&view=rev Author: wsfulton Date: 2012-11-13 22:17:10 +0000 (Tue, 13 Nov 2012) Log Message: ----------- Swig_symbol_string_qualify for destructors - bug exposed after last commit when fully qualifying destructor names during typemap searches Modified Paths: -------------- trunk/Source/Swig/symbol.c trunk/Source/Swig/typemap.c Modified: trunk/Source/Swig/symbol.c =================================================================== --- trunk/Source/Swig/symbol.c 2012-11-13 22:16:28 UTC (rev 13878) +++ trunk/Source/Swig/symbol.c 2012-11-13 22:17:10 UTC (rev 13879) @@ -1800,7 +1800,7 @@ char *c = Char(s); int first_char = 1; while (*c) { - if (isalpha((int) *c) || (*c == '_') || (*c == ':') || (isdigit((int) *c) && !first_char)) { + if (isalpha((int) *c) || (*c == '_') || (*c == ':') || (*c == '~' && first_char) || (isdigit((int) *c) && !first_char)) { Putc(*c, id); have_id = 1; } else { Modified: trunk/Source/Swig/typemap.c =================================================================== --- trunk/Source/Swig/typemap.c 2012-11-13 22:16:28 UTC (rev 13878) +++ trunk/Source/Swig/typemap.c 2012-11-13 22:17:10 UTC (rev 13879) @@ -1339,22 +1339,11 @@ pname = Getattr(node, "name"); -/* if (pname && node && Getattr(node, "sym:symtab")) { - if (!checkAttribute(node, "kind", "function")) { - Printf(stdout, "New check: %s %s %s\n", Getattr(node, "name"), nodeType(node), Getattr(node, "kind")); - } - } -*/ - if (pname && node && Getattr(node, "sym:symtab")) { - /* - if (pname && node && checkAttribute(node, "kind", "function")) { - */ - /* - For functions, add on a qualified name search, for example - struct Foo { - int *foo(int bar) -> Foo::foo - }; + /* Add on a qualified name search for any symbol, for example: + * struct Foo { + * int *foo(int bar) -> Foo::foo + * }; */ Symtab *st = Getattr(node, "sym:symtab"); String *qsn = st ? Swig_symbol_string_qualify(pname, st) : 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |