The BIT_FLAGS 시그니처
The BIT_FLAGS 시그니처
BIT_FLAGS 시그니처는 시스템 플래그의 추상 표현에 대한 일반적인 연산 집합을 정의해요. 보통 옵션 집합을 제공하는 하위 구조들의 인터페이스 일부로 포함돼요.
출처: 문서
본문
시놉시스 (Synopsis)
signature BIT_FLAGS (* OPTIONAL *)
인터페이스 (Interface)
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
설명 (Description)
eqtype flags
이 타입은 시스템 플래그 집합의 추상 표현이에요.
val toWord : flags -> SysWord.word
val fromWord : SysWord.word -> flags
이 함수들은 추상 플래그 타입과 시스템 워드로 표현되는 비트 벡터 사이를 변환해요. 비트의 해석은 시스템 의존적이지만 호스트 운영체제의 C 언어 바인딩을 따르죠. fromWord 함수 인자에 대한 오류 검사는 없다는 점에 주의해요.
all
모든 플래그의 합집합을 나타내요. 이 값은 일치하는 구조에 정의된 flags 값의 상위집합일 수 있어요. 예를 들어 BIT_FLAGS는 POSIX 표준이 지정한 플래그를 정의하는 데 쓰이는데, POSIX 규격 운영체제는 Posix 구조에는 정의되지 않았지만 all 값에는 설정될 수 있는 추가 플래그를 제공할 수 있어요.
flags l
리스트 l에 있는 플래그들의 합집합을 나타내는 값을 돌려줘요. flags []는 빈 집합을 나타내요.
intersect l
리스트 l에 있는 플래그 집합들의 교집합을 나타내는 값을 돌려줘요. intersect []는 all을 나타내요.
clear (fl1, fl2)
fl1에는 설정되지 않았지만 fl2에는 설정된 플래그 집합, 즉 집합 차이 fl2 \ fl1을 돌려줘요. 다음 식과 동등해요.
fromWord(SysWord.andb(SysWord.notb (toWord fl1), toWord fl2))
allSet (fl1, fl2)
fl1의 모든 플래그가 fl2에도 있으면 true를 돌려줘요(즉 fl1이 fl2에 포함되는지 검사해요).
anySet (fl1, fl2)
fl1의 플래그 중 하나라도 fl2에도 있으면 true를 돌려줘요(즉 교집합이 비어 있지 않은지 검사해요).