From: Mikel B. <mut...@us...> - 2006-07-19 21:53:15
|
Update of /cvsroot/swig/SWIG/Source/Modules In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv17469/Source/Modules Modified Files: allegrocl.cxx Log Message: 07/19/2006: mutandiz [allegrocl] - Add std_string.i support. - Add newobject patch submitted by mkoeppe (thanks!) - Fix type name mismatch issue for nested type definitions. specifically typedefs in templated class defns. Index: allegrocl.cxx =================================================================== RCS file: /cvsroot/swig/SWIG/Source/Modules/allegrocl.cxx,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** allegrocl.cxx 25 May 2006 23:22:05 -0000 1.33 --- allegrocl.cxx 19 Jul 2006 21:53:07 -0000 1.34 *************** *** 323,327 **** #endif if(n) { ! name=Getattr(n,"sym:name"); if(!name) name = Getattr(n,"name"); if(templated) { --- 323,327 ---- #endif if(n) { ! if(!name) name=Getattr(n,"sym:name"); if(!name) name = Getattr(n,"name"); if(templated) { *************** *** 382,387 **** if(!val || overwrite || is_fwd_ref) { #ifdef ALLEGROCL_CLASS_DEBUG ! Printf(stderr, "Adding defined type '%s' = '%s' '%s' (overwrite=%d)\n", ! k, ns, name, overwrite); #endif String *mangled_name_gen = --- 382,386 ---- if(!val || overwrite || is_fwd_ref) { #ifdef ALLEGROCL_CLASS_DEBUG ! Printf(stderr, "Adding defined type '%s' = '%s' '%s' (overwrite=%d, in-class=%d)\n", k, ns, name, overwrite, in_class); #endif String *mangled_name_gen = *************** *** 603,607 **** } else { Swig_warning(WARN_TYPE_REDEFINED, Getfile(n), Getline(n), ! "Attempting to store a foreign type that exists: %s\n", k); } --- 602,606 ---- } else { Swig_warning(WARN_TYPE_REDEFINED, Getfile(n), Getline(n), ! "Attempting to store a foreign type that exists: %s (%s)\n", k, val); } *************** *** 2351,2355 **** SwigType *result_type = Swig_cparse_type(Getattr(n,"tmap:ctype")); // prime the pump, with support for OUTPUT, INOUT typemaps. ! Printf(wrap->code,"(let ((ACL_ffresult %s:*void*)\n ACL_result)\n $body\n (if (eq ACL_ffresult %s:*void*)\n (values-list ACL_result)\n (values-list (cons ACL_ffresult ACL_result))))", swig_package, swig_package); Parm *p; --- 2350,2354 ---- SwigType *result_type = Swig_cparse_type(Getattr(n,"tmap:ctype")); // prime the pump, with support for OUTPUT, INOUT typemaps. ! Printf(wrap->code,"(cl::let ((ACL_ffresult %s:*void*)\n ACL_result)\n $body\n (cl::if (cl::eq ACL_ffresult %s:*void*)\n (cl::values-list ACL_result)\n (cl::values-list (cl::cons ACL_ffresult ACL_result))))", swig_package, swig_package); Parm *p; *************** *** 2462,2465 **** --- 2461,2466 ---- String *lout = Getattr(n,"tmap:lout"); + Replaceall(lout, "$owner", GetFlag(n, "feature:new") ? "t" : "nil"); + Replaceall(wrap->code,"$body", lout); // $lclass handling. *************** *** 2468,2471 **** --- 2469,2485 ---- // SwigType *cl_t = SwigType_typedef_resolve_all(parsed); SwigType *cl_t = class_from_class_or_class_ref(parsed); + String *out_ffitype = compose_foreign_type(parsed); + String *deref_out_ffitype; + String *out_temp = Copy(parsed); + + if(SwigType_ispointer(out_temp)) { + SwigType_pop(out_temp); + deref_out_ffitype = compose_foreign_type(out_temp); + } else { + deref_out_ffitype = Copy(out_ffitype); + } + + Delete(out_temp); + Delete(parsed); int isPtrReturn = 0; *************** *** 2495,2499 **** if(lclass) Replaceall(wrap->code,"$lclass", lclass); ! // if(Replaceall(wrap->code,"$lclass", lclass) && !isPtrReturn) { // Swig_warning(WARN_LANG_RETURN_TYPE,Getfile(n), Getline(n), --- 2509,2514 ---- if(lclass) Replaceall(wrap->code,"$lclass", lclass); ! if(out_ffitype) Replaceall(wrap->code,"$out_fftype", out_ffitype); ! if(deref_out_ffitype) Replaceall(wrap->code,"$*out_fftype", deref_out_ffitype); // if(Replaceall(wrap->code,"$lclass", lclass) && !isPtrReturn) { // Swig_warning(WARN_LANG_RETURN_TYPE,Getfile(n), Getline(n), |