From: <wsf...@us...> - 2007-12-16 20:42:49
|
Revision: 10194 http://swig.svn.sourceforge.net/swig/?rev=10194&view=rev Author: wsfulton Date: 2007-12-16 12:42:44 -0800 (Sun, 16 Dec 2007) Log Message: ----------- Add some comments. Add extra assertions in SwigType_parmlist Modified Paths: -------------- trunk/Source/Swig/typeobj.c Modified: trunk/Source/Swig/typeobj.c =================================================================== --- trunk/Source/Swig/typeobj.c 2007-12-16 20:37:25 UTC (rev 10193) +++ trunk/Source/Swig/typeobj.c 2007-12-16 20:42:44 UTC (rev 10194) @@ -231,7 +231,7 @@ * ----------------------------------------------------------------------------- */ List *SwigType_split(const SwigType *t) { - DOH *item; + String *item; List *list; char *c; int len; @@ -253,19 +253,32 @@ /* ----------------------------------------------------------------------------- * SwigType_parmlist() * - * Splits a comma separated list of type components into strings. + * Splits a comma separated list of parameters into its component parts + * The input is expected to contain the parameter list within () brackets + * returns 0 if no argument list in the input, ie there are no round brackets () + * returns a List containing a single empty string if there are no parameters in the () brackets + * For example: + * + * Foo(std::string,p.f().Bar<(int,double)>) + * + * returns 2 elements in the list: + * std::string + * p.f().Bar<(int,double)> * ----------------------------------------------------------------------------- */ - + List *SwigType_parmlist(const String *p) { - DOH *item; + String *item; List *list; - char *c, *itemstart; + char *c; + char *itemstart; + assert(p); c = Char(p); while (*c && (*c != '(') && (*c != '.')) c++; - if (!*c || (*c == '.')) + if (!*c) return 0; + assert(*c != '.'); /* p is expected to contain sub elements of a type */ c++; list = NewList(); itemstart = c; @@ -804,7 +817,7 @@ * * Foo<(p.int)>::bar * - * Results in "Foo" + * returns "Foo" * ----------------------------------------------------------------------------- */ String *SwigType_templateprefix(const SwigType *t) { @@ -848,7 +861,12 @@ /* ----------------------------------------------------------------------------- * SwigType_templateargs() * - * Returns the template part + * Returns the template arguments + * For example: + * + * Foo<(p.int)>::bar + * + * returns "<(p.int)>" * ----------------------------------------------------------------------------- */ String *SwigType_templateargs(const SwigType *t) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2008-02-13 22:38:46
|
Revision: 10249 http://swig.svn.sourceforge.net/swig/?rev=10249&view=rev Author: wsfulton Date: 2008-02-13 14:38:43 -0800 (Wed, 13 Feb 2008) Log Message: ----------- Alter SwigType_parmlist to return an empty list if there are no parameters, rather than a list of one empty type Modified Paths: -------------- trunk/Source/Swig/typeobj.c Modified: trunk/Source/Swig/typeobj.c =================================================================== --- trunk/Source/Swig/typeobj.c 2008-02-12 06:53:35 UTC (rev 10248) +++ trunk/Source/Swig/typeobj.c 2008-02-13 22:38:43 UTC (rev 10249) @@ -255,8 +255,8 @@ * * Splits a comma separated list of parameters into its component parts * The input is expected to contain the parameter list within () brackets - * returns 0 if no argument list in the input, ie there are no round brackets () - * returns a List containing a single empty string if there are no parameters in the () brackets + * Returns 0 if no argument list in the input, ie there are no round brackets () + * Returns an empty List if there are no parameters in the () brackets * For example: * * Foo(std::string,p.f().Bar<(int,double)>) @@ -267,10 +267,11 @@ * ----------------------------------------------------------------------------- */ List *SwigType_parmlist(const String *p) { - String *item; + String *item = 0; List *list; char *c; char *itemstart; + int size; assert(p); c = Char(p); @@ -284,7 +285,8 @@ itemstart = c; while (*c) { if (*c == ',') { - item = NewStringWithSize(itemstart, (int) (c - itemstart)); + size = (int) (c - itemstart); + item = NewStringWithSize(itemstart, size); Append(list, item); Delete(item); itemstart = c + 1; @@ -307,8 +309,11 @@ if (*c) c++; } - item = NewStringWithSize(itemstart, (int) (c - itemstart)); - Append(list, item); + size = (int) (c - itemstart); + if (size > 0) { + item = NewStringWithSize(itemstart, size); + Append(list, item); + } Delete(item); return list; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |