BIT_FLAGS
signature
signature BIT_FLAGS
(* OPTIONAL *)
The BIT_FLAGS
signature defines a generic set of operations on an abstract representation of system flags. It is typically included as part of the interface of substructures which provide a set of options.
eqtype flags
val toWord : flags -> SysWord.word
val fromWord : SysWord.word -> flags
val all : flags
val flags : flags list -> flags
val intersect : flags list -> flags
val clear : flags * flags -> flags
val allSet : flags * flags -> bool
val anySet : flags * flags -> bool
eqtype flags
val toWord : flags -> SysWord.word
val fromWord : SysWord.word -> flags
flags
type and a bit-vector that is represented as a system word
. The interpretation of the bits is system-dependent, but follows the C language binding for the host operating system. Note that there is no error checking on the fromWord
function's argument.
all
flags
value defined in a matching structure. For example, BIT_FLAGS
is used to define the flags specified by the POSIX standard; a POSIX-conforming operating system may provide additional flags that will not be defined in the Posix
structure but could be set in the all
value.
flags l
flags []
denotes the empty set.
intersect l
intersect []
denotes all
.
clear (fl1, fl2)
fl2 \ fl1
. It is equivalent to:
fromWord(SysWord.andb(SysWord.notb (toWord fl1), toWord fl2))
allSet (fl1, fl2)
true
if all of the flags in fl1 are also in fl2 (i.e., this tests for inclusion of fl1 in fl2).
anySet (fl1, fl2)
true
if any of the flags in fl1 is also in fl2 (i.e., this tests for non-empty intersection).
Posix.FileSys
,Posix.IO
,Posix.Process
,Posix.TTY
,SysWord
,Windows
The number of distinct flags in an implementation of the BIT_FLAGS
interface must be less than or equal to the number of bits in the SysWord.word
type. In addition, fromWord o toWord
must be the identity function, and toWord o fromWord
must be equivalent to
fn w => SysWord.andb(w, toWord all)
Generated April 12, 2004
Last Modified July 1, 2002
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
www.cup.org (North America) or
www.cup.cam.ac.uk (outside North America). |