Package jnr.ffi.byref

Class AddressByReference

java.lang.Object
jnr.ffi.byref.AbstractReference<Address>
jnr.ffi.byref.AddressByReference
All Implemented Interfaces:
ByReference<Address>

public final class AddressByReference extends AbstractReference<Address>
AddressByReference is used when the address of a primitive pointer value must be passed as a parameter to a function.

For example, the following C code,

 

 extern void get_a(void** ap);

 void* foo(void) {
     void* 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 AddressByReference ap);
 }

 
 

and used like this

 

 AddressByReference ap = new AddressByReference();
 lib.get_a(ap);
 System.out.println("a from lib=" + a.getValue());

 
 
  • Constructor Details

    • AddressByReference

      public AddressByReference()
      Creates a new reference to an integer value
    • AddressByReference

      public AddressByReference(Address value)
      Creates a new reference to an address value
      Parameters:
      value - the initial native value
  • Method Details

    • toNative

      public void toNative(Runtime runtime, Pointer memory, long offset)
      Copies the address value to native memory
      Parameters:
      runtime - The current runtime.
      memory - The native memory buffer
      offset - The offset.
    • fromNative

      public void fromNative(Runtime runtime, Pointer memory, long offset)
      Copies the address value from native memory
      Parameters:
      runtime - The current runtime.
      memory - The native memory buffer.
      offset - The offset.
    • nativeSize

      public int nativeSize(Runtime runtime)
      Gets the native size of type of reference
      Parameters:
      runtime - The current runtime.
      Returns:
      The size of the native type this reference points to