Flags[A: Flag[B] val, optional B: ((U8 val | U16 val | U32 val | U64 val | U128 val | ULong val | USize val) & Integer[B] val)]
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
Implements
- Comparable[Flags[A, B] box] ref
Constructors
create
new iso create() : Flags[A, B] iso^
Returns
- Flags[A, B] iso^
Public Functions
value
Returns the bit encoding of the set flags.
fun box value() : B
Returns
- B
apply
Returns true if the flag is set.
fun box apply( flag: A) : Bool val
Parameters
- flag: A
Returns
- Bool val
all
Sets all bits, including undefined flags.
fun ref all() : None val
Returns
- None val
clear
Unsets all flags.
fun ref clear() : None val
Returns
- None val
set
Sets the flag.
fun ref set( flag: A) : None val
Parameters
- flag: A
Returns
- None val
unset
Unsets the flag.
fun ref unset( flag: A) : None val
Parameters
- flag: A
Returns
- None val
flip
Sets the flag if it is unset, unsets the flag if it is set.
fun ref flip( flag: A) : None val
Parameters
- flag: A
Returns
- None val
union
The union of this and that.
fun ref union( that: Flags[A, B] box) : None val
Parameters
- that: Flags[A, B] box
Returns
- None val
intersect
The intersection of this and that.
fun ref intersect( that: Flags[A, B] box) : None val
Parameters
- that: Flags[A, B] box
Returns
- None val
difference
The symmetric difference of this and that.
fun ref difference( that: Flags[A, B] box) : None val
Parameters
- that: Flags[A, B] box
Returns
- None val
remove
Unset flags that are set in that.
fun ref remove( that: Flags[A, B] box) : None val
Parameters
- that: Flags[A, B] box
Returns
- None val
add
This with the flag set.
fun box add( flag: A) : Flags[A, B] iso^
Parameters
- flag: A
Returns
- Flags[A, B] iso^
sub
This with the flag unset.
fun box sub( flag: A) : Flags[A, B] iso^
Parameters
- flag: A
Returns
- Flags[A, B] iso^
op_or
The union of this and that.
fun box op_or( that: Flags[A, B] box) : Flags[A, B] iso^
Parameters
- that: Flags[A, B] box
Returns
- Flags[A, B] iso^
op_and
The intersection of this and that.
fun box op_and( that: Flags[A, B] box) : Flags[A, B] iso^
Parameters
- that: Flags[A, B] box
Returns
- Flags[A, B] iso^
op_xor
The symmetric difference of this and that.
fun box op_xor( that: Flags[A, B] box) : Flags[A, B] iso^
Parameters
- that: Flags[A, B] box
Returns
- Flags[A, B] iso^
without
The flags in this that are not in that.
fun box without( that: Flags[A, B] box) : Flags[A, B] iso^
Parameters
- that: Flags[A, B] box
Returns
- Flags[A, B] iso^
clone
Create a clone.
fun box clone() : Flags[A, B] iso^
Returns
- Flags[A, B] iso^
eq
Returns true if this has the same flags set as that.
fun box eq( that: Flags[A, B] box) : Bool val
Parameters
- that: Flags[A, B] box
Returns
- Bool val
lt
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
Parameters
- that: Flags[A, B] box
Returns
- Bool val
le
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
Parameters
- that: Flags[A, B] box
Returns
- Bool val
gt
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
Parameters
- that: Flags[A, B] box
Returns
- Bool val
ge
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
Parameters
- that: Flags[A, B] box
Returns
- Bool val
compare
fun box compare( that: Flags[A, B] box) : (Less val | Equal val | Greater val)
Parameters
- that: Flags[A, B] box
Returns
ne
fun box ne( that: Flags[A, B] box) : Bool val
Parameters
- that: Flags[A, B] box
Returns
- Bool val
© 2016-2020, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/collections-Flags