Package jnr.ffi.byref

Class NumberByReference

All Implemented Interfaces:
Serializable, ByReference<Number>

public class NumberByReference extends AbstractNumberReference<Number>
NumberByReference is used when the address of a primitive integral value must be passed as a parameter to a function, but the exact type is system dependent.

For example, the following C code,

 

 extern void get_size(ssize_t *sp);

 ssize_t foo(void) {
     ssize_t n;
     // pass a reference to 'n' so get_size() can fill it out
     get_size(&n);

     return n;
 }
 
 

Would be declared in java as

 

 interface Lib {
     void get_size(@Out NumberByReference ap);
 }

 
 

and used like this

 

 NumberByReference size = new NumberByReference(ssize_t);
 lib.get_size(size);
 System.out.printf("size from lib=%d\n", size.longValue());

 
 
See Also:
  • Constructor Details

    • NumberByReference

      public NumberByReference(TypeAlias typeAlias, Number value)
    • NumberByReference

      public NumberByReference(TypeAlias typeAlias)
  • Method Details

    • nativeSize

      public int nativeSize(Runtime runtime)
      Description copied from interface: ByReference
      Gets the size of the native buffer required to store the value
      Parameters:
      runtime - The current runtime.
      Returns:
      the size in bytes of the native type
    • fromNative

      public void fromNative(Runtime runtime, Pointer memory, long offset)
      Description copied from interface: ByReference
      Copies the java value from native memory
      Parameters:
      runtime - The current runtime.
      memory - the native memory buffer.
      offset - The offset of the field.
    • toNative

      public void toNative(Runtime runtime, Pointer memory, long offset)
      Description copied from interface: ByReference
      Copies the java value to native memory
      Parameters:
      runtime - The current runtime.
      memory - The native memory buffer.
      offset - The offset of the field.