The Standard ML Basis Library

The PACK_REAL signature


signature PACK_REAL  (* OPTIONAL *)
structure PackRealBig :> PACK_REAL  (* OPTIONAL *)
  where type real = Real.real
structure PackRealLittle :> PACK_REAL  (* OPTIONAL *)
  where type real = Real.real
structure PackReal<N>Big :> PACK_REAL  (* OPTIONAL *)
  where type real = Real{N}.real
structure PackReal<N>Little :> PACK_REAL  (* OPTIONAL *)
  where type real = Real{N}.real

The PACK_REAL signature specifies the interface for packing and unpacking floating-point numbers into Word8 vectors and arrays. This provides a mechanism for transmitting floating-point values over a network.

For each optional Real<N> structure provided by an implementation, the implementation may also provide a pair of structures PackReal<N>Big and PackReal<N>Little. These structures share the real type defined in Real<N>. The PackReal<N>Big structures perform big-endian packing and unpacking, and the PackReal<N>Little structures perform little-endian packing and unpacking.

In addition, an implementation may provide the structures PackRealBig and PackRealLittle, which are aliases for the PACK_REAL structures related to the default Real structure.


type real
val bytesPerElem : int
val isBigEndian : bool
val toBytes   : real -> Word8Vector.vector
val fromBytes : Word8Vector.vector -> real
val subVec : Word8Vector.vector * int -> real
val subArr : Word8Array.array * int -> real
val update : Word8Array.array * int * real -> unit


val bytesPerElem : int
The number of bytes per element, sufficient to store a value of type real.

is true if the structure implements a big-endian view of the data.

val toBytes : real -> Word8Vector.vector
val fromBytes : Word8Vector.vector -> real
These functions pack and unpack floating-point values into and out of Word8Vector.vector values. The function fromBytes raises the Subscript exception if the argument vector does not have length at least bytesPerElem; otherwise the first bytesPerElem bytes are used.

subVec (seq, i)
subArr (seq, i)
These functions extract the subsequence
of the aggregate seq and convert it into a real value according to the endianness of the structure. They raise the Subscript exception if i < 0 or if Word8Array.length seq < bytesPerElem * (i + 1).

update (arr, i, r)
stores r into the bytes bytesPerElem*i through bytesPerElem*(i+1)-1 of the array arr, according to the structure's endianness. It raises the Subscript exception if i < 0 or if Word8Array.length arr < bytesPerElem * (i + 1).

See Also


[ Top | Parent | Contents | Index | Root ]

Generated April 12, 2004
Last Modified May 28, 2000
Comments to John Reppy.

This document may be distributed freely over the internet as long as the copyright notice and license terms below are prominently displayed within every machine-readable copy.

Copyright © 2004 AT&T and Lucent Technologies. All rights reserved.

Permission is granted for internet users to make one paper copy for their own personal use. Further hardcopy reproduction is strictly prohibited. Permission to distribute the HTML document electronically on any medium other than the internet must be requested from the copyright holders by contacting the editors. Printed versions of the SML Basis Manual are available from Cambridge University Press. To order, please visit (North America) or (outside North America).