private void writeIonValue ( IonValue value ) throws IonException { final int valueOffset = myBuffer . length - myOffset ; switch ( value . getType ( ) ) { // scalars case BLOB : writeIonBlobContent ( ( IonBlob ) value ) ; break ; case BOOL : writeIonBoolContent ( ( IonBool ) value ) ; break ; case CLOB : writeIonClobContent ( ( IonClob ) value ) ; break ; case DECIMAL : writeIonDecimalContent ( ( IonDecimal ) value ) ; break ; case FLOAT : writeIonFloatContent ( ( IonFloat ) value ) ; break ; case INT : writeIonIntContent ( ( IonInt ) value ) ; break ; case NULL : writeIonNullContent ( ) ; break ; case STRING : writeIonStringContent ( ( IonString ) value ) ; break ; case SYMBOL : writeIonSymbolContent ( ( IonSymbol ) value ) ; break ; case TIMESTAMP : writeIonTimestampContent ( ( IonTimestamp ) value ) ; break ; // containers case LIST : writeIonListContent ( ( IonList ) value ) ; break ; case SEXP : writeIonSexpContent ( ( IonSexp ) value ) ; break ; case STRUCT : writeIonStructContent ( ( IonStruct ) value ) ; break ; // IonDatagram case DATAGRAM : writeIonDatagramContent ( ( IonDatagram ) value ) ; break ; default : throw new IonException ( "IonType is unknown: " + value . getType ( ) ) ; } writeAnnotations ( value , valueOffset ) ; }
Writes the IonValue and its nested values recursively including annotations .