用于超过 64 位的位集的类型 (规范)
如果 self
中的所有位都为 1,则返回 .true.
,否则返回 .false.
。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(in) | :: | self |
如果 self
中的任何一位为 1,则返回 .true.
,否则返回 .false.
。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(in) | :: | self |
返回 self
中非零位的数量。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(in) | :: | self |
返回 self
中的位数。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_type), | intent(in) | :: | self |
将 self
中 pos
位置处的位设置为零。如果 pos
小于零或大于 bits(self)-1
,则忽略。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(inout) | :: | self | |||
integer(kind=bits_kind), | intent(in) | :: | pos |
将 self
中从 start_pos
到 stop_pos
位置的所有位设置为零。如果 stop_pos < start_pos
,则不修改任何位。超出范围 0 到 bits(set)-1
的位置将被忽略。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(inout) | :: | self | |||
integer(kind=bits_kind), | intent(in) | :: | start_pos | |||
integer(kind=bits_kind), | intent(in) | :: | stop_pos |
翻转 self
中 pos
位置处的位值,前提是该位置有效。如果 pos
小于 0 或大于 bits(self)-1
,则不更改任何值。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(inout) | :: | self | |||
integer(kind=bits_kind), | intent(in) | :: | pos |
翻转 self
中从 start_pos
到 stop_pos
位置的所有有效位。如果 stop_pos < start_pos
,则不翻转任何位。小于 0 或大于 bits(self)-1
的位置将被忽略。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(inout) | :: | self | |||
integer(kind=bits_kind), | intent(in) | :: | start_pos | |||
integer(kind=bits_kind), | intent(in) | :: | stop_pos |
初始化位集 self
,将 string
视为二进制字面量 status
可能具有以下值:* success
- 如果未发现任何问题,* alloc_fault
- 如果位集分配失败 * char_string_too_large_error
- 如果 string
太大,或 * char_string_invalid_error
- 如果字符串包含无效字符。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(out) | :: | self | |||
character(len=*), | intent(in) | :: | string | |||
integer, | intent(out), | optional | :: | status |
创建大小为 bits
的位集 self
,所有位都初始化为零。bits
必须是非负数。如果发生错误且 status
缺失,则处理将停止并显示信息性停止代码。status
将具有以下值之一;* success
- 如果未发现任何问题,* alloc_fault
- 如果内存分配失败 * array_size_invalid_error
- 如果 bits
为负数或大于 64 且 self
的类为 bitset_64
,或者
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(out) | :: | self | |||
integer(kind=bits_kind), | intent(in) | :: | bits | |||
integer, | intent(out), | optional | :: | status |
从非格式化 I/O 单位 unit
读取位集 self
的组件,假设这些组件是使用 output
编写的。如果发生错误且 status
缺失,则处理将停止并显示信息性停止代码。status
具有以下值之一:* success
- 如果未发现任何问题 * alloc_fault
- 如果为 self
分配内存失败,或 * array_size_invalid_error
如果 unit
中的 bits(self)
为负数或对于 bitset_64
输入大于 64。* read_failure
- 如果从 unit
读取失败
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(out) | :: | self | |||
integer, | intent(in) | :: | unit | |||
integer, | intent(out), | optional | :: | status |
如果 self
中的任何位都不为 1,则返回 .true.
。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(in) | :: | self |
将 self
中的位设置为其逻辑补码
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(inout) | :: | self |
将位集 self
的组件写入非格式化 I/O 单位 unit
,以与 input
兼容的非格式化序列。如果 status
缺失,则错误将导致错误停止并显示信息性停止代码。如果 status
存在,则其默认值为 success
,或者如果写入失败,则值为 write_failure
。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(in) | :: | self | |||
integer, | intent(in) | :: | unit | |||
integer, | intent(out), | optional | :: | status |
使用默认字符 string
中的位集字面量来定义位集 self
。字面量前面可以是任意数量的空格字符。如果 status
缺失,则错误将导致错误停止并显示信息性停止代码。如果 status
存在,则其具有以下值之一 * success
- 如果未发生任何问题,* alloc_fault
- 如果为 SELF 分配内存失败,* array_size_invalid_error - if
bits(self)in
stringis greater than 64 for a
bitset_64, *
char_string_invalid_error- 如果位集字面量包含无效字符,*
char_string_too_small_error - 如果字符串在读取所有位之前结束。* integer_overflow_error
- 如果位集字面量的 bits(self)
值太大而无法表示,
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(out) | :: | self | |||
character(len=*), | intent(in) | :: | string | |||
integer, | intent(out), | optional | :: | status |
使用 I/O 单位 unit
的格式化文件中当前位置处的位集字面量来定义位集 self
。字面量前面可以是任意数量的空格字符。如果 advance
存在,则它必须是 'YES' 或 'NO'。如果不存在,则其默认值为 'YES',以确定是否发生 I/O 提前。如果 status
缺失,则错误将导致错误停止并显示信息性停止代码。如果 status
存在,则其具有以下值之一:* success
- 如果未发生任何问题,* alloc_fault
- 如果 self
的分配失败,* array_size_invalid_error
- 如果位集字面量中的 bits(self)
对于 bitset_64
大于 64,* char_string_invalid_error
- 如果读取位集字面量时发现无效字符,* eof_failure
- 如果 read
语句在完成读取位集字面量之前到达文件末尾,* integer_overflow_error
- 如果位集字面量的 bits(self)
值太大而无法表示,* read_failure
- 如果 read
语句失败,
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(out) | :: | self | |||
integer, | intent(in) | :: | unit | |||
character(len=*), | intent(in), | optional | :: | advance | ||
integer, | intent(out), | optional | :: | status |
设置 self
中 pos
位置处的值,前提是该位置有效。如果位置小于 0 或大于 bits(self)-1
,则 self
保持不变。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(inout) | :: | self | |||
integer(kind=bits_kind), | intent(in) | :: | pos |
将self
中从start_pos
到stop_pos
位置的所有有效位设置为1。如果stop_pos < start_pos
,则不更改任何位。超出0到bits(self)-1
范围的位置将被忽略。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(inout) | :: | self | |||
integer(kind=bits_kind), | intent(in) | :: | start_pos | |||
integer(kind=bits_kind), | intent(in) | :: | stop_pos |
如果pos
位置被设置,则返回.true.
,否则返回.false.
。如果pos
为负数或大于bits(self) - 1
,则结果为.false.
。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(in) | :: | self | |||
integer(kind=bits_kind), | intent(in) | :: | pos |
将self
的值表示为string
中的二进制字面量。Status可能具有值success
或alloc_fault
。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(in) | :: | self | |||
字符(len=:), | intent(out), | 可分配的 | :: | string | ||
integer, | intent(out), | optional | :: | status |
如果pos
位置被设置,则返回1,否则返回0。如果pos
为负数或大于bits(set) - 1
,则结果为0。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(in) | :: | self | |||
integer(kind=bits_kind), | intent(in) | :: | pos |
将位集字面量写入可分配的默认字符string
,表示bitset_large中各个位的值,self
。如果status
不存在,则导致错误停止并显示信息性停止代码。如果status
存在,则其默认值为success
,如果输出字符串分配失败,则值为alloc_fault
。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(in) | :: | self | |||
字符(len=:), | intent(out), | 可分配的 | :: | string | ||
integer, | intent(out), | optional | :: | status |
将位集字面量写入I/O单元unit
,表示位集中各个位的值,self
。默认情况下或如果advance
存在且值为'YES',则使用前进输出。如果advance
存在且值为'NO',则写入不会使当前记录前进。如果status
不存在,则导致错误停止并显示信息性停止代码。如果status
存在,则其默认值为success
,如果输出字符串分配失败,则值为alloc_fault
,如果输出字面量的write
语句失败,则值为write_failure
。
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
class(bitset_large), | intent(in) | :: | self | |||
integer, | intent(in) | :: | unit | |||
character(len=*), | intent(in), | optional | :: | advance | ||
integer, | intent(out), | optional | :: | status |
type, extends(bitset_type) :: bitset_large !! Version: experimental !! !! Type for bitsets with more than 64 bits ([Specification](../page/specs/stdlib_bitsets.html#the-stdlib_bitsets-derived-types)) private integer(block_kind), private, allocatable :: blocks(:) contains procedure, pass(self) :: all => all_large procedure, pass(self) :: any => any_large procedure, pass(self) :: bit_count => bit_count_large procedure, pass(self) :: clear_bit => clear_bit_large procedure, pass(self) :: clear_range => clear_range_large procedure, pass(self) :: flip_bit => flip_bit_large procedure, pass(self) :: flip_range => flip_range_large procedure, pass(self) :: from_string => from_string_large procedure, pass(self) :: init_zero => init_zero_large procedure, pass(self) :: input => input_large procedure, pass(self) :: none => none_large procedure, pass(self) :: not => not_large procedure, pass(self) :: output => output_large procedure, pass(self) :: & read_bitset_string => read_bitset_string_large procedure, pass(self) :: read_bitset_unit => read_bitset_unit_large procedure, pass(self) :: set_bit => set_bit_large procedure, pass(self) :: set_range => set_range_large procedure, pass(self) :: test => test_large procedure, pass(self) :: to_string => to_string_large procedure, pass(self) :: value => value_large procedure, pass(self) :: & write_bitset_string => write_bitset_string_large procedure, pass(self) :: write_bitset_unit => write_bitset_unit_large end type bitset_large