JNA API 3.5.1
com.sun.jna

Class Union

    • Constructor Detail

      • Union

        protected Union()
        Create a Union whose size and alignment will be calculated automatically.
      • Union

        protected Union(Pointer p)
        Create a Union of the given size, using default alignment.
      • Union

        protected Union(Pointer p,
             int alignType)
        Create a Union of the given size and alignment type.
      • Union

        protected Union(TypeMapper mapper)
        Create a Union of the given size and alignment type.
      • Union

        protected Union(Pointer p,
             int alignType,
             TypeMapper mapper)
        Create a Union of the given size and alignment type.
    • Method Detail

      • getFieldOrder

        protected List getFieldOrder()
        Unions do not need a field order, so automatically provide a value to satisfy checking in the Structure superclass.
        Specified by:
        getFieldOrder in class Structure
      • setType

        public void setType(Class type)
        Indicates by type which field will be used to write to native memory. If there are multiple fields of the same type, use setType(String) instead with the field name.
        Throws:
        IllegalArgumentException - if the type does not correspond to any declared union field.
      • setType

        public void setType(String fieldName)
        Indicates which field will be used to write to native memory.
        Throws:
        IllegalArgumentException - if the name does not correspond to any declared union field.
      • writeField

        public void writeField(String fieldName)
        Write the given field value to native memory. The given field will become the active one.
        Overrides:
        writeField in class Structure
        Throws:
        IllegalArgumentException - if no field exists with the given name
      • writeField

        public void writeField(String fieldName,
                      Object value)
        Write the given field value to the field and native memory. The given field will become the active one.
        Overrides:
        writeField in class Structure
        Throws:
        IllegalArgumentException - if no field exists with the given name
      • getTypedValue

        public Object getTypedValue(Class type)
        Reads the Structure field of the given type from memory, sets it as the active type and returns it. Convenience method for
        
         Union u;
         Class type;
         u.setType(type);
         u.read();
         value = u.field;
         
        Parameters:
        type - class type of the Structure field to read
        Returns:
        the Structure field with the given type
      • setTypedValue

        public Object setTypedValue(Object object)
        Set the active type and its value. Convenience method for
        
         Union u;
         Class type;
         u.setType(type);
         u.field = value;
         
        Parameters:
        object - instance of a class which is part of the union
        Returns:
        this Union object
      • readField

        Object readField(Structure.StructField field)
        Avoid reading pointer-based fields and structures unless explicitly selected. Structures may contain pointer-based fields which can crash the VM if not properly initialized.
        Overrides:
        readField in class Structure
      • calculateSize

        int calculateSize(boolean force,
                        boolean avoidFFIType)
        Adjust the size to be the size of the largest element, and ensure all fields begin at offset zero.
        Overrides:
        calculateSize in class Structure
      • getNativeAlignment

        protected int getNativeAlignment(Class type,
                             Object value,
                             boolean isFirstElement)
        All fields are considered the "first" element.
        Overrides:
        getNativeAlignment in class Structure
      • getTypeInfo

        Pointer getTypeInfo()
        Avoid calculating type information until we know our biggest field. Return type information for the largest field to ensure all available bits are used.
        Overrides:
        getTypeInfo in class Structure
JNA API 3.5.1

Copyright © 2007-2012 Timothy Wall. All Rights Reserved.