From: Marcelo M. <mm...@ac...> - 2006-03-22 19:18:24
|
In all the languages, except python, -O is equivalent to " -fastdispatch -fvirtual" (see swig -help). So, either -fastdispatch or -fvirtual are not Java/C# compatible, I'll think the problem is -fvirtual. But having "missing" function is the role of fvirtual, ie, eliminate redundant functions that otherwise are properly dispatched via inheritance. Is your module not working?, or you just notice the missing functions? if you are in the second case, just try running and check if still runs. Marcelo Bob Marinier wrote: > I tried using the -O flag with SWIG to see what the difference would > be for my project. I'm generating Tcl, Java and C# code. > > In the Java and C# cases, some functions seem to not get wrapped. > I've attached an example from Java: > > origIntElement.java is without the -O flag > IntElement.java is with the -O flag > > As you can see, the IntElement.java version is missing 3 functions. > There are a couple other classes in a similar state (all of which > inherit from the same parent, if that means anything). The C# code > has exactly the same missing functions. (These are the only changes > in Java and C#; nothing else is different with -O). > > I can't tell at a glance if the Tcl code is missing anything because > it has tons of changes all over the place. > > Is this just a matter of -O not being supported under Java and C#? > > Thanks, > Bob > > >------------------------------------------------------------------------ > >/* ---------------------------------------------------------------------------- > * This file was automatically generated by SWIG (http://www.swig.org). > * Version 1.3.29 > * > * Do not make changes to this file unless you know what you are doing--modify > * the SWIG interface file instead. > * ----------------------------------------------------------------------------- */ > >package sml; > >public class IntElement extends WMElement { > private long swigCPtr; > > protected IntElement(long cPtr, boolean cMemoryOwn) { > super(smlJNI.SWIGIntElementUpcast(cPtr), cMemoryOwn); > swigCPtr = cPtr; > } > > protected static long getCPtr(IntElement obj) { > return (obj == null) ? 0 : obj.swigCPtr; > } > > public void delete() { > if(swigCPtr != 0 && swigCMemOwn) { > swigCMemOwn = false; > throw new UnsupportedOperationException("C++ destructor does not have public access"); > } > swigCPtr = 0; > super.delete(); > } > > public int GetValue() { > return smlJNI.IntElement_GetValue(swigCPtr); > } > >} > > >------------------------------------------------------------------------ > >/* ---------------------------------------------------------------------------- > * This file was automatically generated by SWIG (http://www.swig.org). > * Version 1.3.29 > * > * Do not make changes to this file unless you know what you are doing--modify > * the SWIG interface file instead. > * ----------------------------------------------------------------------------- */ > >package sml; > >public class IntElement extends WMElement { > private long swigCPtr; > > protected IntElement(long cPtr, boolean cMemoryOwn) { > super(smlJNI.SWIGIntElementUpcast(cPtr), cMemoryOwn); > swigCPtr = cPtr; > } > > protected static long getCPtr(IntElement obj) { > return (obj == null) ? 0 : obj.swigCPtr; > } > > public void delete() { > if(swigCPtr != 0 && swigCMemOwn) { > swigCMemOwn = false; > throw new UnsupportedOperationException("C++ destructor does not have public access"); > } > swigCPtr = 0; > super.delete(); > } > > public String GetValueType() { > return smlJNI.IntElement_GetValueType(swigCPtr); > } > > public String GetValueAsString() { > return smlJNI.IntElement_GetValueAsString(swigCPtr); > } > > public int GetValue() { > return smlJNI.IntElement_GetValue(swigCPtr); > } > > public IntElement ConvertToIntElement() { > long cPtr = smlJNI.IntElement_ConvertToIntElement(swigCPtr); > return (cPtr == 0) ? null : new IntElement(cPtr, false); > } > >} > > |