From: William F. <wsf...@us...> - 2004-06-03 22:39:40
|
Update of /cvsroot/swig/SWIG/Source/Modules In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10436 Modified Files: csharp.cxx Log Message: csgetcptr and csptrconstructormodifiers typemap replaced by the csbody/csbody_derived typemap csclassmodifiers typemap now contains the class type imclassclassmodifiers and moduleclassmodifiers pragmas now contain the class type $module special variable support Index: csharp.cxx =================================================================== RCS file: /cvsroot/swig/SWIG/Source/Modules/csharp.cxx,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** csharp.cxx 31 May 2004 07:25:18 -0000 1.41 --- csharp.cxx 3 Jun 2004 22:39:16 -0000 1.42 *************** *** 186,189 **** --- 186,197 ---- virtual int top(Node *n) { + // Get any options set in the module directive + Node* optionsnode = Getattr( Getattr(n,"module"), "options"); + + if (optionsnode) { + if (Getattr(optionsnode,"imclassname")) + imclass_name = Copy(Getattr(optionsnode,"imclassname")); + } + /* Initialize all of the output files */ String *outfile = Getattr(n,"outfile"); *************** *** 203,213 **** Swig_register_filebyname("runtime",f_runtime); Swig_register_filebyname("init",f_init); swig_types_hash = NewHash(); // Make the intermediary class and module class names. The intermediary class name can be set in the module directive. - Node* optionsnode = Getattr( Getattr(n,"module") ,"options"); - if (optionsnode) - if (Getattr(optionsnode,"imclassname")) - imclass_name = Copy(Getattr(optionsnode,"imclassname")); if (!imclass_name) { imclass_name = NewStringf("%sPINVOKE", Getattr(n,"name")); --- 211,218 ---- Swig_register_filebyname("runtime",f_runtime); Swig_register_filebyname("init",f_init); + swig_types_hash = NewHash(); // Make the intermediary class and module class names. The intermediary class name can be set in the module directive. if (!imclass_name) { imclass_name = NewStringf("%sPINVOKE", Getattr(n,"name")); *************** *** 221,225 **** } - imclass_class_code = NewString(""); proxy_class_def = NewString(""); --- 226,229 ---- *************** *** 233,237 **** module_interfaces = NewString(""); module_imports = NewString(""); ! module_class_modifiers = NewString("public"); imclass_imports = NewString(""); imclass_cppcasts_code = NewString(""); --- 237,241 ---- module_interfaces = NewString(""); module_imports = NewString(""); ! module_class_modifiers = NewString(""); imclass_imports = NewString(""); imclass_cppcasts_code = NewString(""); *************** *** 283,287 **** if (Len(imclass_class_modifiers) > 0) Printf(f_im, "%s ", imclass_class_modifiers); ! Printf(f_im, "class %s ", imclass_name); if (imclass_baseclass && *Char(imclass_baseclass)) --- 287,291 ---- if (Len(imclass_class_modifiers) > 0) Printf(f_im, "%s ", imclass_class_modifiers); ! Printf(f_im, "%s ", imclass_name); if (imclass_baseclass && *Char(imclass_baseclass)) *************** *** 323,327 **** if (Len(module_class_modifiers) > 0) Printf(f_module, "%s ", module_class_modifiers); ! Printf(f_module, "class %s ", module_class_name); if (module_baseclass && *Char(module_baseclass)) --- 327,331 ---- if (Len(module_class_modifiers) > 0) Printf(f_module, "%s ", module_class_modifiers); ! Printf(f_module, "%s ", module_class_name); if (module_baseclass && *Char(module_baseclass)) *************** *** 338,343 **** // Write out all the global constants ! if (Len(module_class_constants_code) != 0 ) ! Printv(f_module, module_class_constants_code, NIL); // Finish off the class --- 342,346 ---- // Write out all the global constants ! Printv(f_module, module_class_constants_code, NIL); // Finish off the class *************** *** 717,720 **** --- 720,724 ---- generateThrowsClause(n, imclass_class_code); Printf(imclass_class_code, ";\n"); + Printf(f->def,") {"); *************** *** 851,855 **** (enum_feature == ProperEnum) ? "\n" : ! typemapLookup("csgetcptr", typemap_lookup_type, WARN_NONE), // getCPtr method (will probably never be used, but what the heck) typemapLookup("cscode", typemap_lookup_type, WARN_NONE), // extra C# code "}\n", --- 855,859 ---- (enum_feature == ProperEnum) ? "\n" : ! typemapLookup("csbody", typemap_lookup_type, WARN_CSHARP_TYPEMAP_CSBODY_UNDEF), // main body of class typemapLookup("cscode", typemap_lookup_type, WARN_NONE), // extra C# code "}\n", *************** *** 1095,1098 **** --- 1099,1106 ---- } + /* ----------------------------------------------------------------------------- + * insertDirective() + * ----------------------------------------------------------------------------- */ + virtual int insertDirective(Node *n) { String *code = Getattr(n,"code"); *************** *** 1223,1227 **** "\n", typemapLookup("csclassmodifiers", typemap_lookup_type, WARN_CSHARP_TYPEMAP_CLASSMOD_UNDEF), // Class modifiers ! " class $csclassname", // Class name and base class (derived || *Char(pure_baseclass) || *Char(pure_interfaces)) ? " : " : --- 1231,1235 ---- "\n", typemapLookup("csclassmodifiers", typemap_lookup_type, WARN_CSHARP_TYPEMAP_CLASSMOD_UNDEF), // Class modifiers ! " $csclassname", // Class name and base class (derived || *Char(pure_baseclass) || *Char(pure_interfaces)) ? " : " : *************** *** 1233,1250 **** "", pure_interfaces, ! " {\n", ! " private IntPtr swigCPtr;\n", // Member variables for memory handling ! derived ? ! "" : ! " protected bool swigCMemOwn;\n", ! "\n", ! " ", ! typemapLookup("csptrconstructormodifiers", typemap_lookup_type, WARN_CSHARP_TYPEMAP_PTRCONSTMOD_UNDEF), // pointer constructor modifiers ! " $csclassname(IntPtr cPtr, bool cMemoryOwn) ", // Constructor used for wrapping pointers ! derived ? ! ": base($imclassname.$csclassnameTo$baseclass(cPtr), cMemoryOwn) {\n" : ! "{\n swigCMemOwn = cMemoryOwn;\n", ! " swigCPtr = cPtr;\n", ! " }\n", NIL); --- 1241,1248 ---- "", pure_interfaces, ! " {", ! derived ? ! typemapLookup("csbody_derived", typemap_lookup_type, WARN_CSHARP_TYPEMAP_CSBODY_UNDEF) : // main body of class ! typemapLookup("csbody", typemap_lookup_type, WARN_CSHARP_TYPEMAP_CSBODY_UNDEF), // main body of class NIL); *************** *** 1295,1301 **** Delete(destruct); ! // Emit various other methods Printv(proxy_class_def, - typemapLookup("csgetcptr", typemap_lookup_type, WARN_CSHARP_TYPEMAP_GETCPTR_UNDEF), // getCPtr method typemapLookup("cscode", typemap_lookup_type, WARN_NONE), // extra C# code "\n", --- 1293,1298 ---- Delete(destruct); ! // Emit extra user code Printv(proxy_class_def, typemapLookup("cscode", typemap_lookup_type, WARN_NONE), // extra C# code "\n", *************** *** 1306,1327 **** Replaceall(proxy_class_def, "$csclassname", proxy_class_name); ! Replaceall(proxy_class_def, "$baseclass", baseclass); ! Replaceall(proxy_class_code, "$baseclass", baseclass); ! ! Replaceall(proxy_class_def, "$imclassname", imclass_name); ! Replaceall(proxy_class_code, "$imclassname", imclass_name); // Add code to do C++ casting to base class (only for classes in an inheritance hierarchy) if(derived){ ! Printv(imclass_cppcasts_code,"\n [DllImport(\"", module_class_name, "\", EntryPoint=\"CSharp_", proxy_class_name ,"To", baseclass ,"\")]\n", NIL); ! Printv(imclass_cppcasts_code," public static extern IntPtr ", ! "$csclassnameTo$baseclass(IntPtr objectRef);\n", ! NIL); Replaceall(imclass_cppcasts_code, "$csclassname", proxy_class_name); - Replaceall(imclass_cppcasts_code, "$baseclass", baseclass); Printv(upcasts_code, ! "DllExport $cbaseclass * SWIGSTDCALL CSharp_$imclazznameTo$imbaseclass", "($cclass *objectRef) {\n", " return ($cbaseclass *)objectRef;\n" --- 1303,1318 ---- Replaceall(proxy_class_def, "$csclassname", proxy_class_name); ! Replaceall(proxy_class_def, "$module", module_class_name); ! Replaceall(proxy_class_code, "$module", module_class_name); // Add code to do C++ casting to base class (only for classes in an inheritance hierarchy) if(derived){ ! Printv(imclass_cppcasts_code,"\n [DllImport(\"", module_class_name, "\", EntryPoint=\"CSharp_", proxy_class_name ,"Upcast", "\")]\n", NIL); ! Printf(imclass_cppcasts_code," public static extern IntPtr $csclassnameUpcast(IntPtr objectRef);\n"); Replaceall(imclass_cppcasts_code, "$csclassname", proxy_class_name); Printv(upcasts_code, ! "DllExport $cbaseclass * SWIGSTDCALL CSharp_$imclazznameUpcast", "($cclass *objectRef) {\n", " return ($cbaseclass *)objectRef;\n" *************** *** 1329,1334 **** "\n", NIL); ! ! Replaceall(upcasts_code, "$imbaseclass", baseclass); Replaceall(upcasts_code, "$cbaseclass", c_baseclass); Replaceall(upcasts_code, "$imclazzname", proxy_class_name); --- 1320,1324 ---- "\n", NIL); ! Replaceall(upcasts_code, "$cbaseclass", c_baseclass); Replaceall(upcasts_code, "$imclazzname", proxy_class_name); *************** *** 1381,1384 **** --- 1371,1375 ---- proxy_class_constants_code = NewString(""); } + Language::classHandler(n); *************** *** 1510,1514 **** /* Start generating the proxy function */ const String *methodmods = Getattr(n,"feature:cs:methodmodifiers"); ! methodmods = methodmods ? methodmods : (is_protected(n) ? protected_string : public_string); Printf(function_code, " %s ", methodmods); if (static_flag) --- 1501,1505 ---- /* Start generating the proxy function */ const String *methodmods = Getattr(n,"feature:cs:methodmodifiers"); ! methodmods = methodmods ? methodmods : (!is_public(n) ? protected_string : public_string); Printf(function_code, " %s ", methodmods); if (static_flag) *************** *** 1523,1527 **** Printv(imcall, imclass_name, ".", intermediary_function_name, "(", NIL); if (!static_flag) ! Printv(imcall, "swigCPtr", NIL); emit_mark_varargs(l); --- 1514,1518 ---- Printv(imcall, imclass_name, ".", intermediary_function_name, "(", NIL); if (!static_flag) ! Printf(imcall, "swigCPtr"); emit_mark_varargs(l); *************** *** 1670,1674 **** const String *methodmods = Getattr(n,"feature:cs:methodmodifiers"); ! methodmods = methodmods ? methodmods : (is_protected(n) ? protected_string : public_string); methodmods = methodmods ? methodmods : public_string; Printf(proxy_class_code, " %s %s(", methodmods, proxy_class_name); --- 1661,1665 ---- const String *methodmods = Getattr(n,"feature:cs:methodmodifiers"); ! methodmods = methodmods ? methodmods : (!is_public(n) ? protected_string : public_string); methodmods = methodmods ? methodmods : public_string; Printf(proxy_class_code, " %s %s(", methodmods, proxy_class_name); *************** *** 1923,1927 **** /* Start generating the function */ const String *methodmods = Getattr(n,"feature:cs:methodmodifiers"); ! methodmods = methodmods ? methodmods : (is_protected(n) ? protected_string : public_string); Printf(function_code, " %s static %s %s(", methodmods, return_type, func_name); Printv(imcall, imclass_name, ".", overloaded_name, "(", NIL); --- 1914,1918 ---- /* Start generating the function */ const String *methodmods = Getattr(n,"feature:cs:methodmodifiers"); ! methodmods = methodmods ? methodmods : (!is_public(n) ? protected_string : public_string); Printf(function_code, " %s static %s %s(", methodmods, return_type, func_name); Printv(imcall, imclass_name, ".", overloaded_name, "(", NIL); *************** *** 2243,2247 **** "\n", typemapLookup("csclassmodifiers", type, WARN_CSHARP_TYPEMAP_CLASSMOD_UNDEF), // Class modifiers ! " class $csclassname", // Class name and base class (*Char(pure_baseclass) || *Char(pure_interfaces)) ? " : " : --- 2234,2238 ---- "\n", typemapLookup("csclassmodifiers", type, WARN_CSHARP_TYPEMAP_CLASSMOD_UNDEF), // Class modifiers ! " $csclassname", // Class name and base class (*Char(pure_baseclass) || *Char(pure_interfaces)) ? " : " : *************** *** 2252,2281 **** "", pure_interfaces, ! " {\n", ! " private IntPtr swigCPtr;\n", ! "\n", ! " ", ! typemapLookup("csptrconstructormodifiers", type, WARN_CSHARP_TYPEMAP_PTRCONSTMOD_UNDEF), // pointer constructor modifiers ! " $csclassname(IntPtr cPtr, bool bFutureUse) {\n", // Constructor used for wrapping pointers ! " swigCPtr = cPtr;\n", ! " }\n", ! "\n", ! " protected $csclassname() {\n", // Default constructor ! " swigCPtr = IntPtr.Zero;\n", ! " }\n", ! typemapLookup("csgetcptr", type, WARN_CSHARP_TYPEMAP_GETCPTR_UNDEF), // getCPtr method typemapLookup("cscode", type, WARN_NONE), // extra C# code "}\n", Len(namespce) > 0 ? ! "\n}\n" : ! "", NIL); ! Replaceall(swigtype, "$csclassname", classname); ! Replaceall(swigtype, "$module", module_class_name); ! Printv(f_swigtype, swigtype, NIL); ! Close(f_swigtype); ! Delete(swigtype); } --- 2243,2261 ---- "", pure_interfaces, ! " {", ! typemapLookup("csbody", type, WARN_CSHARP_TYPEMAP_CSBODY_UNDEF), // main body of class typemapLookup("cscode", type, WARN_NONE), // extra C# code "}\n", Len(namespce) > 0 ? ! "\n}\n" : ! "", NIL); ! Replaceall(swigtype, "$csclassname", classname); ! Replaceall(swigtype, "$module", module_class_name); ! Printv(f_swigtype, swigtype, NIL); ! Close(f_swigtype); ! Delete(swigtype); } |