From: William S F. <ws...@fu...> - 2009-09-15 06:35:04
|
In Java non-primitive types are passed by reference and primitive types are passed by value. The behaviour is identical to C# primitives and classes (not structs). William David Piepgrass wrote: > I don't think so. I'm no Java expert, but doesn't Java always call by > value? If so, the argument 'c' cannot possibly be modified. > > > The typemaps in typemaps.i are for primitive types, but I assume > > controller is a non-primitive type. The SWIGTYPE*& typemaps in java.swg > > should ensure that passing controller*& should just work. If it doesn't > > please post a complete standalone example. > > > > William > > > > Chip Christian wrote: > >> Something like this? > >> > >> %typemap(in) (controller*&) { $1 = (controller**) &$input; } > >> %typemap(out) (controller*&) { $result = $1; } > >> > >> On Thu, Jul 23, 2009 at 12:01 PM, Chip > >> Christian<chi...@gm...> wrote: > >>> int myController(controller*& OUTPUT); > >>> > >>> Called like so: > >>> > >>> public static void main(String argv[]) { > >>> controller c = null; > >>> int r = cluster.theCluster().myController(c); > >>> System.out.println(r); > >>> System.out.println(c.getUUID()); > >>> } > >>> > >>> 0 > >>> Exception in thread "main" java.lang.NullPointerException > >>> at allshow.main(allshow.java:15) > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> On Thu, Jul 23, 2009 at 11:11 AM, Chip > >>> Christian<chi...@gm...> wrote: > >>>> RTFM, Chip. > >>>> > >>>> OK, I added > >>>> %include "typemaps.i" > >>>> > >>>> and named the parameters OUTPUT in my .h files. Do I have to do > >>>> anything special to initialize c? > >>>> > >>>> On Thu, Jul 23, 2009 at 10:35 AM, Chip > >>>> Christian<chi...@gm...> wrote: > >>>>> I have a collection of classes in C++ with private constructors. > >>>>> > >>>>> Can I do this, or do I need to make changes to my model? > >>>>> > >>>>> There are 5 ways to get the various objects: > >>>>> > >>>>> - a singleton > >>>>> no problems > >>>>> > >>>>> - a static method which takes an object*& in the parameter list > >>>>> - a static method which takes a vector<object>*& in the parameter > > list > >>>>> - a method which takes an other_object*& in the parameter list > >>>>> - a method which takes a vector<other_object>*& in the parameter > > list > >>>>> I've tried a few things: > >>>>> > >>>>> controller c; > >>>>> cluster.theCluster.myController(c); > >>>>> > >>>>> Compile error: > >>>>> The local variable c may not have been initialized > >>>>> > >>>>> controller c = new controller(); > >>>>> cluster.theCluster.myController(c); > >>>>> > >>>>> Compile error: > >>>>> The constructor controller() is undefined > >>>>> > >>>>> controller c[] = new controller[1]; > >>>>> cluster.theCluster.myController(c[0]); > >>>>> > >>>>> Runtime error when I try to dereference c[0]: > >>>>> Exception in thread "main" java.lang.NullPointerException > >>>>> > >> --------------------------------------------------------------------- > > --------- > >> _______________________________________________ > >> Swig-user mailing list > >> Swi...@li... > >> https://lists.sourceforge.net/lists/listinfo/swig-user > >> > > > > ----------------------------------------------------------------------- > > ------- > > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 > > 30-Day > > trial. Simplify your report design, integration and deployment - and > > focus on > > what you do best, core application coding. Discover what's new with > > Crystal Reports now. http://p.sf.net/sfu/bobj-july > > _______________________________________________ > > Swig-user mailing list > > Swi...@li... > > https://lists.sourceforge.net/lists/listinfo/swig-user > |