jnr.ffi.byref
Interface ByReference<T>

Type Parameters:
T -
All Known Implementing Classes:
AbstractNumberReference, AbstractReference, AddressByReference, ByteByReference, DoubleByReference, FloatByReference, IntByReference, LongLongByReference, NativeLongByReference, PointerByReference, ShortByReference

public interface ByReference<T>

A ByReference subclass is used when a primitive parameter must be passed by-reference.

For example, the following C code,

 extern void get_a(int * ap);

 int foo(void) {
     int a;
     // pass a reference to 'a' so get_a() can fill it out
     get_a(&a);

     return a;
 }
 
 

Would be declared in java as

 interface Lib {
     void get_a(@Out IntByReference ap);
 }
 
 

and used like this

 IntByReference ap = new IntByReference();
 lib.get_a(ap);
 System.out.printf("a from lib=%d\n", a.getValue());
 


Method Summary
 T getValue()
           
 void marshal(Pointer memory, long offset)
          Copies the java value to native memory
 int nativeSize(Runtime runtime)
          Gets the size of the native buffer required to store the value
 void unmarshal(Pointer memory, long offset)
          Copies the java value from native memory
 

Method Detail

nativeSize

int nativeSize(Runtime runtime)
Gets the size of the native buffer required to store the value

Returns:
the size in bytes of the native type

marshal

void marshal(Pointer memory,
             long offset)
Copies the java value to native memory

Parameters:
memory - the native memory buffer.

unmarshal

void unmarshal(Pointer memory,
               long offset)
Copies the java value from native memory

Parameters:
memory - the native memory buffer.

getValue

T getValue()


Copyright © 2012. All Rights Reserved.