From: <mut...@us...> - 2009-05-14 00:35:25
|
Revision: 11212 http://swig.svn.sourceforge.net/swig/?rev=11212&view=rev Author: mutandiz Date: 2009-05-14 00:35:17 +0000 (Thu, 14 May 2009) Log Message: ----------- [allegrocl] Minor tweak to improve wrapping in -nocwrap mode. Modified Paths: -------------- trunk/CHANGES.current trunk/Source/Modules/allegrocl.cxx Modified: trunk/CHANGES.current =================================================================== --- trunk/CHANGES.current 2009-05-13 12:39:28 UTC (rev 11211) +++ trunk/CHANGES.current 2009-05-14 00:35:17 UTC (rev 11212) @@ -1,6 +1,9 @@ Version 1.3.40 (in progress) ============================ +2009-05-13: mutandiz (Mikel Bancroft) + [allegrocl] Minor tweak when wrapping in -nocwrap mode. + 2009-05-11: wsfulton [C#] Improved std::vector wrappers on the C# proxy side from Yuval Baror. These implement IList<> instead of IEnumerable<> where possible. Modified: trunk/Source/Modules/allegrocl.cxx =================================================================== --- trunk/Source/Modules/allegrocl.cxx 2009-05-13 12:39:28 UTC (rev 11211) +++ trunk/Source/Modules/allegrocl.cxx 2009-05-14 00:35:17 UTC (rev 11212) @@ -483,7 +483,7 @@ if (!Strcmp(nodeType(n), "cdecl") && !Strcmp(Getattr(n, "storage"), "typedef")) { SwigType *type = SwigType_strip_qualifiers(Getattr(n, "type")); #ifdef ALLEGROCL_CLASS_DEBUG - Printf(stderr, "Examining typedef '%s' for class references.\n", type); + Printf(stderr, "Examining typedef '%s' for class references. (%d)\n", type, SwigType_isclass(type)); #endif if (SwigType_isclass(type)) { #ifdef ALLEGROCL_CLASS_DEBUG @@ -761,6 +761,7 @@ Setattr(nn,"allegrocl:package",current_namespace); add_forward_referenced_type(nn, 0); + // tok_name is dangling here, unused. ouch. why? Printf(ffiType, "%s", get_ffi_type(tok, ""), tok_name); } } @@ -934,9 +935,8 @@ Printf(result, ")"); Delete(ored); return part_failed ? 0 : result; - } else { - Delete(ored); } + Delete(ored); return 0; } @@ -955,7 +955,7 @@ String *ns = listify_namespace(current_namespace); // very basic parsing of infix expressions. - if (try_to_split) { + if (try_to_split && SwigType_type(type) != T_STRING) { if ((res = infix_to_prefix(num, '|', "logior", type))) return res; if ((res = infix_to_prefix(num, '&', "logand", type))) @@ -970,9 +970,20 @@ return res; if ((res = infix_to_prefix(num, '-', "-", type))) return res; + // if ((res = infix_to_prefix(num, '~', "lognot", type))) return res; // if( (res = infix_to_prefix(num, '<<', "ash", type)) ) return res; } + // unary complement... + if (s[0] == '~' && Len(num) >= 2) { + String *id = NewString(++s); + String *id_conv = convert_literal(id, type, false); + Delete(id); + if (id_conv) + return NewStringf("(lognot %s)", id_conv); + s--; + } + if (SwigType_type(type) == T_FLOAT || SwigType_type(type) == T_DOUBLE || SwigType_type(type) == T_LONGDOUBLE) { // Use CL syntax for float literals String *oldnum = Copy(num); @@ -1136,7 +1147,7 @@ of_ltype = lookup_defined_foreign_ltype(of_name); - // Printf(f_clhead,";; from emit-synonym\n"); + // Printf(stderr,";; from emit-synonym syn='%s' of_ltype='%s'\n", syn_ltype, of_ltype); if( of_ltype ) Printf(f_clhead, "(swig-def-synonym-type %s\n %s\n %s)\n", syn_ltype, of_ltype, syn_type); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |