trait DataOutputStream extends DataStreamCommon
There is an asymmetry between DataInputStream and DataOutputStream with respect to the positions and limits in the bit stream.
For the DataInputStream, we have this concept of the current bitPos0b, and optionally there may be abound called bitLimit0b. There are 1b variants of these.
For parsing, these are always absolute values, that is they contain bit position relative the ultimate start of the input stream where parsing began.
For DataOutputStream, we have slightly different concepts.
There are absolute and relative variants. The absolute bitPosOb or absBitPos0b is symmetric to the parser's bitPos0b. It's the position relative to the ultimate start of the output stream.
However, we often do not know this value. So the UState and DataOutputStream have a maybeAbsBitPos0b which can be MaybeULong.Nope if the value isn't known.
In addition we have the relative or relBitPos0b. This is relative to the start of whatever buffer we are doing unparsing into.
When unparsing, we often have to unparse into a buffer where the ultimate actual absolute position isn't yet known, but we have to do the unparsing anyway, for example so that we can measure exactly how long something is.
Conversely, sometimes we simply must have the absolute output bit position, for example, when computing the number of bits to insert to achieve the required alignment.
Hence we have relBitPos0b - always known and is a value >= 0, and we have maybeAbsBitPos0b which is a MaybeULong. If known it is >=0.
Corresponding to bit position we have bit limit, which is measured in the same 0b or 1b units, but is *always* a maybe type, because even in the case where we know the absolute position, we still may or may not have any limit in place. Hence the UState and DataOutputStream have a
maybeRelBitLimit0b
and
maybeAbsBitLimit0b.
One invariant is this: when the absolute bit pos is known, then it is the same as the relative bit pos. Similarly when the absolute bit limit is known, then the relative bit limit is known and is equal.
- Alphabetic
- By Inheritance
- DataOutputStream
- DataStreamCommon
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
-
abstract
def
align(bitAlignment1b: Int, finfo: FormatInfo): Boolean
advances the bit position to the specified alignment.
advances the bit position to the specified alignment.
Note that the bitAlignment1b argument is 1-based.
Passing 0 as the argument is a usage error.
Passing 1 as the argument performs no alignment, as any bit position is 1-bit aligned.
For any other value, the bit position (1-based) is advanced to the next multiple of that argument value.
False is returned if there are insufficient available bits to achieve the alignment.
- Definition Classes
- DataStreamCommon
-
abstract
def
areDebugging: Boolean
Debugging flag.
Debugging flag. If set then performance may be reduced, but historic and upcoming data may be viewed using the pastData and futureData methods.
This should be set at the beginning of execution. If it is set after data has been accessed then IllegalStateException is thrown.
- Definition Classes
- DataStreamCommon
-
abstract
def
chunkSizeInBytes: Int
These values are used for output streams that could change from ByteArray's to File based output streams.
-
abstract
def
cleanUp(): Unit
This function deletes any temnporary files that have been generated
-
abstract
def
futureData(nBytesRequested: Int): ByteBuffer
- Definition Classes
- DataStreamCommon
- abstract def id: String
-
abstract
def
isAligned(bitAlignment1b: Int): Boolean
For assertion checking really.
For assertion checking really. Optimizations should remove the need for most alignment operations. This can be used in assertions that check that this is working properly.
Note that the bitAlignment1b argument is 1-based.
Passing 0 as the argument is a usage error.
Passing 1 as the argument performs no alignment, as any bit position is 1-bit aligned.
- Definition Classes
- DataStreamCommon
- abstract def isFinished: Boolean
- abstract def maxBufferSizeInBytes: Long
-
abstract
def
maybeAbsBitLimit0b: MaybeULong
Absolute bit limit zero based
Absolute bit limit zero based
If defined it is the position 1 bit past the last bit location that can be written. So if we at starting at bitPos0b of 0, and we allow only 100 bits, then the bit positions are 0 to 99, and the bit limit is 100.
- abstract def maybeAbsBitPos0b: MaybeULong
-
abstract
def
maybeExistingFile: Maybe[Path]
maybeExistingFile is used in the case of blob files, where we already have an existing file containing the data.
maybeExistingFile is used in the case of blob files, where we already have an existing file containing the data. This is the path to said file.
- abstract def maybeNextInChain: Maybe[DataOutputStream]
-
abstract
def
maybeRelBitLimit0b: MaybeULong
Relative bit limit zero based
-
abstract
def
pastData(nBytesRequested: Int): ByteBuffer
Access to historic (past data) and upcoming data for purposes of display in a trace or debugger.
Access to historic (past data) and upcoming data for purposes of display in a trace or debugger.
If areDebugging is false, these throw IllegalStateException
- Definition Classes
- DataStreamCommon
-
abstract
def
putBigInt(bigInt: BigInteger, bitLengthFrom1: Int, signed: Boolean, finfo: FormatInfo): Boolean
If bitLengthFrom1 bits are available to be written before bitLimit0b (if defined) is encountered, then this writes the bitLengthFrom1 least significant bits of the bigInt using the current bit order and byte order, and returns true.
If bitLengthFrom1 bits are available to be written before bitLimit0b (if defined) is encountered, then this writes the bitLengthFrom1 least significant bits of the bigInt using the current bit order and byte order, and returns true. The signed flag determines whether or not the output should be output as a signed or unsigned type.
If not enough bits are available or the big integer cannot fit into bitLengthFrom1 bits, this writes nothing and returns false.
It is a usage error if signed is false and bigInt is a negative BigInteger.
It is a usage error if bitLengthFrom1 is not greater than or equal to 1.
- abstract def putBinaryDouble(v: Double, finfo: FormatInfo): Boolean
-
abstract
def
putBinaryFloat(v: Float, finfo: FormatInfo): Boolean
Float and Double
Float and Double
These are unparsed per the currently set BinaryFloatRep, byteOrder, and bitOrder
Returns false if there are not 32 bits or 64 bits (respectively) available.
-
abstract
def
putByteArray(ba: Array[Byte], bitLengthFrom1: Long, finfo: FormatInfo, ignoreByteOrder: Boolean = false): Boolean
If bitLengthFrom1 bits are available to be written before bitLimit0b (if defined) is encountered, then this writes the bitLengthFrom1 bits of the ba using the current bit order and byte order, and returns true.
If bitLengthFrom1 bits are available to be written before bitLimit0b (if defined) is encountered, then this writes the bitLengthFrom1 bits of the ba using the current bit order and byte order, and returns true. The array is assumed to be have bigEndian byte order and most significant bit first bit order.
If not enough bits are available, this writes nothing and returns false.
ignoreByteOrder is used when we are working with a FileOutputStream. Given that the bytes are already converted to BigEndian when they are written out to a file, we no longer need to convert little endian arrays so byte order can be ignored.
It is a usage error if bitLengthFrom1 is not greater than or equal to 1.
- abstract def putCharBuffer(cb: CharBuffer, finfo: FormatInfo): Long
-
abstract
def
putLong(signedLong: Long, bitLengthFrom1To64: Int, finfo: FormatInfo): Boolean
If bitLengthFrom1To64 bits are available to be written before bitLimit0b (if defined) is encountered, then this writes the bitLengthFrom1To64 least significant bits of the long using the current bit order and byte order, and returns true.
If bitLengthFrom1To64 bits are available to be written before bitLimit0b (if defined) is encountered, then this writes the bitLengthFrom1To64 least significant bits of the long using the current bit order and byte order, and returns true.
If not enough bits are available, this writes nothing and returns false.
It is a usage error if bitLengthFrom1To64 is not in the range 1 to 64 inclusive.
-
abstract
def
putString(str: String, finfo: FormatInfo): Long
Returns number of characters transferred.
Returns number of characters transferred. Stops when the bitLimit is encountered if one is defined.
-
abstract
def
putULong(unsignedLong: ULong, bitLengthFrom1To64: Int, finfo: FormatInfo): Boolean
If bitLengthFrom1To64 bits are available to be written before bitLimit0b (if defined) is encountered, then this writes the bitLengthFrom1To64 least significant bits of the long using the current bit order and byte order, and returns true.
If bitLengthFrom1To64 bits are available to be written before bitLimit0b (if defined) is encountered, then this writes the bitLengthFrom1To64 least significant bits of the long using the current bit order and byte order, and returns true.
If not enough bits are available, this writes nothing and returns false.
It is a usage error if bitLengthFrom1To64 is not in the range 1 to 64 inclusive.
- abstract def relBitPos0b: ULong
-
abstract
def
remainingBits: MaybeULong
Returns number of bits remaining (if a limit is defined).
Returns number of bits remaining (if a limit is defined). Nope if not defined.
- Definition Classes
- DataStreamCommon
- abstract def resetMaybeRelBitLimit0b(savedBitLimit0b: MaybeULong): Unit
-
abstract
def
setDebugging(setting: Boolean): Unit
- Definition Classes
- DataStreamCommon
-
abstract
def
setFinished(finfo: FormatInfo): Unit
close-out this output stream.
close-out this output stream. No more writing to this after.
-
abstract
def
setMaybeRelBitLimit0b(newMaybeRelBitLimit0b: MaybeULong, reset: Boolean = false): Boolean
sets, but also maintains the absolute bit limit, if that is defined.
sets, but also maintains the absolute bit limit, if that is defined.
- Attributes
- protected
-
abstract
def
setRelBitPos0b(newRelBitPos0b: ULong): Unit
Besides setting the relBitPos, it also maintains the value of the absolute bit pos, if it is known.
Besides setting the relBitPos, it also maintains the value of the absolute bit pos, if it is known.
- Attributes
- protected
-
abstract
def
skip(nBits: Long, finfo: FormatInfo): Boolean
Advances the bit position by nBits.
Advances the bit position by nBits. If nBits aren't available this returns false. Otherwise it returns true.
- Definition Classes
- DataStreamCommon
- abstract def tempDirPath: File
- abstract def zeroLengthStatus: ZeroLengthStatus
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def relBitPos1b: ULong
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()