[ Predicate Database and Compiler | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

# get_flag(++PredSpec, ?Flag, -Value)

Succeeds if the flag Flag of the procedure specified by PredSpec has the value Value.

PredSpec
  Expression of the form Atom/Integer.
Flag
  Atom or variable.
Value
  Atom, integer, compound_term or variable.

## Description

Used to get the value Value of the flag Flag of the procedure specified by PredSpec. The values of certain flags may be set using set_flag/3. It can also be used to test if a procedure with a given functor exists or has certain properties.

The possible flags, their values and their meanings are:

        Flags             Values        Description
       ------------------------------------------------------
        auxiliary         on,off        predicate is a
                                        compiler auiliary
        call_type         prolog,       predicate calling
                          external      convention
        debugged          on, off       compiled in
                                        debugging mode
        declared          on, off       predicate was
                                        declared
        defined           on, off       predicate code
                                        exists
        definition_module an atom       where the procedure
                                        is defined
        demon             on, off       predicate is a demon
        deprecated        on, off       predicate is deprecated,
                                        warning on use
        leash             stop,         see below
                          print,
                          notrace
        mode              pred(Mode1,   the mode of the
                          ...)          predicate
        parallel          on, off       clauses may be exe-
                                        cuted in parallel
        priority          1..12         waking priority
        skip              on, off       procedure will be
                                        traced, but its
                                        children will not
        spy               on, off       procedure has a
                                        spypoint
        stability         static,       is the procedure
                          dynamic       dynamic?
        tool              on, off       tool property
        type              built-in,     type of predicate
                          user
        visibility        local,        module scope
                          exported,
                          reexported,
                          imported
        source_file       an atom       the file where
                                        defined
        source_line       an integer    starting line
                                        number in the file
        source_offset     an integer    byte offset at
                                        which the procedure
                                        definition starts
                                        in its source file

The possible values of leash and their meanings are:

       -----------------------------------------------------
       | Values   Description                               |
       |--------------------------------------------------  |
       | stop     procedure ports are printed and the       |
       |          debugger stops on them                    |
       | print    procedure ports are printed and the       |
       |          debugger does not stop on them            |
       | notrace  procedure ports will not be shown, but    |
       |          its childrens's ports will                |
       -----------------------------------------------------|

### Modes and Determinism

- get_flag(++, -, -) is nondet
- get_flag(++, +, -) is semidet

### Modules

This predicate is sensitive to its module context (tool predicate, see @/2).

### Fail Conditions

Fails if the flag Flag of the procedure specified by PredSpec does not have the value Value, if its value is unknown or if the procedure does not exist

### Exceptions

(4) instantiation fault
  PredSpec is not instantiated
(5) type error
  PredSpec is not an expression of the form Atom/Integer.
(5) type error
  Flag is instantiated but not to an atom.
(5) type error
  Value is not an atom.

## Examples

    Success:
        [eclipse]: get_flag(member/2, F, V),
                printf("%-20s%w\n", [F, V]), fail.

        mode                member(?, ?)
        call_type           prolog
        debugged            off
        declared            on
        autoload            off
        auxiliary           off
        defined             on
        leash               stop
        skip                off
        spy                 off
        start_tracing       off
        stability           static
        tool                off
        type                built_in
        visibility          imported
        priority            2
        demon               off
        parallel            off
        definition_module   sepia_kernel

    Fail:
        get_flag(true/0, defined, off).
        get_flag(undef/0, F, V).
    Error:
        get_flag(X, spy, on).           (Error 4).
        get_flag("a", spy, on).         (Error 5).

## See Also

pred / 1, set_flag / 3, current_module_predicate / 2