public abstract class Union extends Structure
setType(java.lang.Class) will be written
to native memory. Upon reading from native memory, Structure, String,
or WString fields will not be initialized unless they are
the current field as identified by a call to setType(java.lang.Class). The current
field is always unset by default to avoid accidentally attempting to read
a field that is not valid. In the case of a String, for instance, an
invalid pointer may result in a memory fault when attempting to initialize
the String.Structure.ByReference, Structure.ByValue, Structure.StructFieldALIGN_DEFAULT, ALIGN_GNUC, ALIGN_MSVC, ALIGN_NONE, CALCULATE_SIZE, isPPC, isSPARC| Modifier | Constructor and Description |
|---|---|
protected |
Union()
Create a Union whose size and alignment will be calculated
automatically.
|
protected |
Union(int size)
Create a Union of the given size, using default alignment.
|
protected |
Union(int size,
int alignType)
Create a Union of the given size and alignment type.
|
| Modifier and Type | Method and Description |
|---|---|
(package private) int |
calculateSize(boolean force)
Adjust the size to be the size of the largest element, and ensure
all fields begin at offset zero.
|
protected int |
getNativeAlignment(java.lang.Class type,
java.lang.Object value,
boolean isFirstElement)
All fields are considered the "first" element.
|
(package private) Pointer |
getTypeInfo()
Return type information for the largest field.
|
(package private) java.lang.Object |
readField(Structure.StructField field)
Avoid reading pointer-based fields and structures unless explicitly
selected.
|
void |
setType(java.lang.Class type)
Indicates which field will be used to write to native memory.
|
(package private) void |
writeField(Structure.StructField field)
Only the currently selected field will be written.
|
allocateMemory, allocateMemory, calculateAlignedSize, clear, equals, fields, getField, getPointer, getStructAlignment, getTypeInfo, hashCode, newInstance, read, readField, setAlignType, setTypeMapper, size, toArray, toArray, toString, updateStructureByReference, useMemory, useMemory, write, writeFieldprotected Union()
protected Union(int size)
protected Union(int size,
int alignType)
public void setType(java.lang.Class type)
java.lang.IllegalArgumentException - if the type does not correspond to
any declared union field.void writeField(Structure.StructField field)
writeField in class Structurejava.lang.Object readField(Structure.StructField field)
int calculateSize(boolean force)
calculateSize in class Structureprotected int getNativeAlignment(java.lang.Class type,
java.lang.Object value,
boolean isFirstElement)
getNativeAlignment in class StructurePointer getTypeInfo()
getTypeInfo in class Structure