package goblint

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

See LibraryFunctions implementation for example usage.

Library function descriptor DSL.

Type parameters in this module can be ignored for usage. They are inferred automatically and used to ensure type-safety.

type ('k, 'l, 'r) arg_desc

Argument descriptor.

type ('k, 'r) args_desc =
  1. | [] : ('r, 'r) args_desc
    (*

    End of arguments. No more arguments may occur.

    *)
  2. | VarArgs : (_, 'l, 'r) arg_desc -> ('l, 'r) args_desc
    (*

    Variadic arguments, all with the same argument descriptor. Any number of arguments (including 0) may occur.

    *)
  3. | :: : ('k, _, 'm) arg_desc * ('m, 'r) args_desc -> ('k, 'r) args_desc
    (*

    Cons one argument descriptor. Argument must occur.

    *)

Arguments descriptor. Overrides standard list syntax.

val special : ?attrs:LibraryDesc.attr list -> ('k, LibraryDesc.special) args_desc -> 'k -> LibraryDesc.t

Create library function descriptor from arguments descriptor and continuation function, which takes as many arguments as are captured using __ and returns the corresponding LibraryDesc.special.

Create unknown library function descriptor from arguments descriptor, which must drop all arguments.

val __ : string -> LibraryDesc.Access.t list -> (GoblintCil.Cil.exp -> 'r, GoblintCil.Cil.exp list -> 'r, 'r) arg_desc

Argument descriptor, which captures the named argument with accesses for continuation function of special.

val __' : LibraryDesc.Access.t list -> (GoblintCil.Cil.exp -> 'r, GoblintCil.Cil.exp list -> 'r, 'r) arg_desc

Argument descriptor, which captures an unnamed argument with accesses for continuation function of special.

val drop : string -> LibraryDesc.Access.t list -> ('r, 'r, 'r) arg_desc

Argument descriptor, which drops (does not capture) the named argument with accesses.

val drop' : LibraryDesc.Access.t list -> ('r, 'r, 'r) arg_desc

Argument descriptor, which drops (does not capture) an unnamed argument with accesses.

Shallow AccessKind.t.Read access. All immediate arguments of function calls are always read, this specifies the reading of pointed-to values.

Deep AccessKind.t.Read access. All immediate arguments of function calls are always read, this specifies the reading of pointed-to values. Rarely needed.

Deep AccessKind.t.Write access. Rarely needed.

Deep AccessKind.t.Free access. Rarely needed.

Deep AccessKind.t.Spawn access. Rarely needed.