category

# `flags`

Implementation of persistent object flags.

Author: Theofrastos Mantadelis
Version: 1.0
Date: 2010/11/27
Compilation flags:
`static`
Dependencies:
(none)
Remarks:
(none)
Inherited public predicates:
(none)

- Public predicates

  - `get_flag_value/2`

  - `set_flag_value/2`

  - `set_flag_value/3`

  - `reset_flags/0`

  - `reset_flags/1`

  - `flag_groups/1`

  - `flag_group_chk/1`

  - `print_flags/0`

  - `print_flags/1`

  - `defined_flag/6`

  - `built_in_flag/2`

- Protected predicates

  - `unsafe_set_flag_value/2`

  - `define_flag/1`

  - `define_flag/2`

- Private predicates

  - `defined_flag_/6`

  - `flag_value_/2`

  - `validate/3`

  - `validate_type/1`

  - `is_validator/1`

- Operators

## Public predicates

### `get_flag_value/2`

Gets or tests the value of a flag.

Compilation flags:
`static`
Template:
`get_flag_value(Flag,Value)`
Mode and number of proofs:
`get_flag_value(+atom,?nonvar)` - `zero_or_one`

### `set_flag_value/2`

Sets the value of a flag.

Compilation flags:
`static`
Template:
`set_flag_value(Flag,NewValue)`
Mode and number of proofs:
`set_flag_value(+atom,@nonvar)` - `one`

### `set_flag_value/3`

Sets the value of a flag, returning the old value.

Compilation flags:
`static`
Template:
`set_flag_value(Flag,OldValue,NewValue)`
Mode and number of proofs:
`set_flag_value(+atom,?nonvar,@nonvar)` - `one`

### `reset_flags/0`

Resets all flags to their default values.

Compilation flags:
`static`
Mode and number of proofs:
`reset_flags` - `one`

### `reset_flags/1`

Resets all flags in a group to their default values.

Compilation flags:
`static`
Template:
`reset_flags(Group)`
Mode and number of proofs:
`reset_flags(+atom)` - `one`

### `flag_groups/1`

Returns a list of all flag groups.

Compilation flags:
`static`
Template:
`flag_groups(Groups)`
Mode and number of proofs:
`flag_groups(-list(atom))` - `one`

### `flag_group_chk/1`

Checks if a given atom is a flag group.

Compilation flags:
`static`
Template:
`flag_group_chk(Group)`
Mode and number of proofs:
`flag_group_chk(+atom)` - `zero_or_one`

### `print_flags/0`

Prints a listing of all flags.

Compilation flags:
`static`
Mode and number of proofs:
`print_flags` - `one`

### `print_flags/1`

Prints a listing of all flags in a group.

Compilation flags:
`static`
Template:
`print_flags(Group)`
Mode and number of proofs:
`print_flags(+atom)` - `one`

### `defined_flag/6`

Gets or test the existing (visible) flag definitions.

Compilation flags:
`static`
Template:
`defined_flag(Flag,Group,Type,DefaultValue,Description,Access)`
Mode and number of proofs:
`defined_flag(?atom,?atom,?nonvar,?nonvar,?atom,?atom)` - `zero_or_more`

### `built_in_flag/2`

True if the argument is a built-in flag type with the specified default value.

Compilation flags:
`static`
Template:
`built_in_flag(Type,DefaultValue)`
Mode and number of proofs:
`built_in_flag(?atom,?nonvar)` - `zero_or_more`

## Protected predicates

### `unsafe_set_flag_value/2`

Sets the value of a flag without performing any validation checks.

Compilation flags:
`static`
Template:
`unsafe_set_flag_value(Flag,NewValue)`
Mode and number of proofs:
`unsafe_set_flag_value(+atom,@nonvar)` - `one`

### `define_flag/1`

Defines a new flag using default options.

Compilation flags:
`static`
Template:
`define_flag(Flag)`
Mode and number of proofs:
`define_flag(+atom)` - `one`

### `define_flag/2`

Defines a new flag using a given set of options (for example, [group(general), type(nonvar), default(true), description(Flag), access(read_write)]).

Compilation flags:
`static`
Template:
`define_flag(Flag,Options)`
Mode and number of proofs:
`define_flag(+atom,@list)` - `one`

## Private predicates

### `defined_flag_/6`

Gets or test the existing flag definitions.

Compilation flags:
`dynamic`
Template:
`defined_flag_(Flag,Group,Type,DefaultValue,Description,Access)`
Mode and number of proofs:
`defined_flag_(?atom,?atom,?nonvar,?nonvar,?atom,?atom)` - `zero_or_more`

### `flag_value_/2`

Table of flag values.

Compilation flags:
`dynamic`
Template:
`flag_value_(Flag,Value)`
Mode and number of proofs:
`flag_value_(?atom,?nonvar)` - `zero_or_more`

### `validate/3`

Compilation flags:
`static`

### `validate_type/1`

Compilation flags:
`static`

### `is_validator/1`

Compilation flags:
`static`

## Operators

(none)