All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javolution.io.Union Maven / Gradle / Ivy

/*
 * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
 * Copyright (C) 2012 - Javolution (http://javolution.org/)
 * All rights reserved.
 * 
 * Permission to use, copy, modify, and distribute this software is
 * freely granted, provided that this notice is preserved.
 */
package javolution.io;

/**
 * 

Equivalent to C/C++ union; this class works in the same * way as {@link Struct} (sub-class) except that all members are mapped * to the same location in memory.

*

Here is an example of C union: * [code] * union Number { * int asInt; * float asFloat; * char asString[12]; * };[/code]

*

And its Java equivalent: * [code] * public class Number extends Union { * Signed32 asInt = new Signed32(); * Float32 asFloat = new Float32(); * Utf8String asString = new Utf8String(12); * }[/code]

*

As for any {@link Struct}, fields are directly accessible: * [code] * Number num = new Number(); * num.asInt.set(23); * num.asString.set("23"); // Null terminated (C compatible) * float f = num.asFloat.get();[/code]

* * @author Jean-Marie Dautelle * @version 1.0, October 4, 2004 */ public abstract class Union extends Struct { /** * Default constructor. */ public Union() {} /** * Returns true. * * @return true */ public final boolean isUnion() { return true; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy