Flags is a set of flags. The flags that are recognised should be passed as a union type for type parameter A. For example:
primitive SSE fun value(): U64 => 1
primitive AVX fun value(): U64 => 2
primitive RDTSCP fun value(): U64 => 4
type Features is Flags[(SSE | AVX | RDTSCP)]
Type parameter B is the unlying field used to store the flags.
class ref Flags[A: Flag[B] val, optional B: ((U8 val | U16 val | U32 val | U64 val | U128 val | ULong val | USize val) & Integer[B] val)] is Comparable[Flags[A, B] box] ref
new iso create() : Flags[A, B] iso^
Returns the bit encoding of the set flags.
fun box value() : B
Returns true if the flag is set.
fun box apply( flag: A) : Bool val
Sets all bits, including undefined flags.
fun ref all() : None val
Unsets all flags.
fun ref clear() : None val
Sets the flag.
fun ref set( flag: A) : None val
Unsets the flag.
fun ref unset( flag: A) : None val
Sets the flag if it is unset, unsets the flag if it is set.
fun ref flip( flag: A) : None val
The union of this and that.
fun ref union( that: Flags[A, B] box) : None val
The intersection of this and that.
fun ref intersect( that: Flags[A, B] box) : None val
The symmetric difference of this and that.
fun ref difference( that: Flags[A, B] box) : None val
Unset flags that are set in that.
fun ref remove( that: Flags[A, B] box) : None val
This with the flag set.
fun box add( flag: A) : Flags[A, B] iso^
This with the flag unset.
fun box sub( flag: A) : Flags[A, B] iso^
The union of this and that.
fun box op_or( that: Flags[A, B] box) : Flags[A, B] iso^
The intersection of this and that.
fun box op_and( that: Flags[A, B] box) : Flags[A, B] iso^
The symmetric difference of this and that.
fun box op_xor( that: Flags[A, B] box) : Flags[A, B] iso^
The flags in this that are not in that.
fun box without( that: Flags[A, B] box) : Flags[A, B] iso^
Create a clone.
fun box clone() : Flags[A, B] iso^
Returns true if this has the same flags set as that.
fun box eq( that: Flags[A, B] box) : Bool val
Returns true if the flags set on this are a strict subset of the flags set on that. Flags is only partially ordered, so lt is not the opposite of ge.
fun box lt( that: Flags[A, B] box) : Bool val
Returns true if the flags set on this are a subset of the flags set on that or they are the same. Flags is only partially ordered, so le is not the opposite of te.
fun box le( that: Flags[A, B] box) : Bool val
Returns true if the flags set on this are a struct superset of the flags set on that. Flags is only partially ordered, so gt is not the opposite of le.
fun box gt( that: Flags[A, B] box) : Bool val
Returns true if the flags set on this are a superset of the flags set on that or they are the same. Flags is only partially ordered, so ge is not the opposite of lt.
fun box ge( that: Flags[A, B] box) : Bool val
fun box compare( that: Flags[A, B] box) : (Less val | Equal val | Greater val)
fun box ne( that: Flags[A, B] box) : Bool val
© 2016-2018, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/collections-Flags