Флаги[A: Флаг[B] значение, необязательный B: ((U8 значение | U16 значение | U32 значение | U64 значение | U128 значение | ULong значение | USize значение) & Целое[B] значение)]
Флаги представляют собой набор флагов. Флаги, которые распознаются, должны передаваться как тип объединения для параметра типа A. Например:
примитивный SSE fun значение(): U64 => 1
примитивный AVX fun значение(): U64 => 2
примитивный RDTSCP fun значение(): U64 => 4
тип Features is Флаги[(SSE | AVX | RDTSCP)]
Параметр типа B — это базовое поле, используемое для хранения флагов.
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^
Возвращает
- Флаги[A, B] изо^
Публичные функции
значение
Возвращает битовое кодирование установленных флагов.
fun box value() : B
Возвращает
- B
применить
Возвращает true, если флаг установлен.
fun box apply( flag: A) : Bool val
Параметры
- флаг: A
Возвращает
- Булево значение
все
Устанавливает все биты, включая неопределенные флаги.
fun ref all() : None val
Возвращает
- None значение
очистить
Снимает все флаги.
fun ref clear() : None val
Возвращает
- None значение
установить
Устанавливает флаг.
fun ref set( flag: A) : None val
Параметры
- флаг: A
Возвращает
- None значение
снять
Снимает флаг.
fun ref unset( flag: A) : None val
Параметры
- флаг: A
Возвращает
- None значение
переключить
Устанавливает флаг, если он снят, и снимает флаг, если он установлен.
fun ref flip( flag: A) : None val
Параметры
- флаг: A
Возвращает
- None значение
объединение
Объединение этого и того.
fun ref union( that: Flags[A, B] box) : None val
Параметры
- то: Флаги[A, B] коробка
Возвращает
- None значение
пересечение
Пересечение этого и того.
fun ref intersect( that: Flags[A, B] box) : None val
Параметры
- то: Флаги[A, B] коробка
Возвращает
- None значение
разность
Симметричная разность этого и того.
fun ref difference( that: Flags[A, B] box) : None val
Параметры
- то: Флаги[A, B] коробка
Возвращает
- None значение
удалить
Снимает флаги, которые установлены в том.
fun ref remove( that: Flags[A, B] box) : None val
Параметры
- то: Флаги[A, B] коробка
Возвращает
- None значение
добавить
Это со значением флага.
fun box add( flag: A) : Flags[A, B] iso^
Параметры
- флаг: A
Возвращает
- Флаги[A, B] изо^
вычесть
Это со снятым флагом.
fun box sub( flag: A) : Flags[A, B] iso^
Параметры
- флаг: A
Возвращает
- Флаги[A, B] изо^
op_or
Объединение этого и того.
fun box op_or( that: Flags[A, B] box) : Flags[A, B] iso^
Параметры
- то: Флаги[A, B] коробка
Возвращает
- Флаги[A, B] изо^
op_and
Пересечение этого и того.
fun box op_and( that: Flags[A, B] box) : Flags[A, B] iso^
Параметры
- то: Флаги[A, B] коробка
Возвращает
- Флаги[A, B] изо^
op_xor
Симметричная разность этого и того.
fun box op_xor( that: Flags[A, B] box) : Flags[A, B] iso^
Параметры
- то: Флаги[A, B] коробка
Возвращает
- Флаги[A, B] изо^
без
Флаги в этом, которых нет в том.
fun box without( that: Flags[A, B] box) : Flags[A, B] iso^
Параметры
- то: Флаги[A, B] коробка
Возвращает
- Флаги[A, B] изо^
клонировать
Создать копию.
fun box clone() : Flags[A, B] iso^
Возвращает
- Флаги[A, B] изо^
равно
Возвращает true, если этот объект имеет те же флаги, что и тот.
fun box eq( that: Flags[A, B] box) : Bool val
Параметры
- то: Флаги[A, B] коробка
Возвращает
- Булево значение
меньше
Возвращает true, если флаги, установленные в этом объекте, являются строгим подмножеством флагов, установленных в том. Флаги упорядочены только частично, поэтому lt не является противоположностью ge.
fun box lt( that: Flags[A, B] box) : Bool val
Параметры
- то: Флаги[A, B] коробка
Возвращает
- Булево значение
меньше или равно
Возвращает true, если флаги, установленные в этом объекте, являются подмножеством флагов, установленных в том, или они одинаковы. Флаги упорядочены только частично, поэтому le не является противоположностью te.
fun box le( that: Flags[A, B] box) : Bool val
Параметры
- то: Флаги[A, B] коробка
Возвращает
- Булево значение
больше
Возвращает true, если флаги, установленные в этом объекте, являются строгим надмножеством флагов, установленных в том. Флаги упорядочены только частично, поэтому gt не является противоположностью le.
fun box gt( that: Flags[A, B] box) : Bool val
Параметры
- то: Флаги[A, B] коробка
Возвращает
- Булево значение
больше или равно
Возвращает true, если флаги, установленные в этом объекте, являются надмножеством флагов, установленных в том, или они одинаковы. Флаги упорядочены только частично, поэтому ge не является противоположностью lt.
fun box ge( that: Flags[A, B] box) : Bool val
Параметры
- то: Флаги[A, B] коробка
Возвращает
- Булево значение
сравнить
fun box compare( that: Flags[A, B] box) : (Less val | Equal val | Greater val)
Параметры
- то: Флаги[A, B] коробка
Возвращает
не равно
fun box ne( that: Flags[A, B] box) : Bool val
Параметры
- то: Флаги[A, B] коробка
Возвращает
- Булево значение
© 2016-2020, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/collections-Flags