CPSolver.ConstraintStore behaviour (Fixpoint v0.8.28)

Constraint store is a key-value store, where key is a variable id, and value is a implementation-dependent structure that allows to update and keep track of variables' domains.

Summary

Types

Link to this type

get_operation()

@type get_operation() :: CPSolver.Common.domain_get_operation() | nil
Link to this type

update_operation()

@type update_operation() :: CPSolver.Common.domain_update_operation()

Callbacks

Link to this callback

create(variables, opts)

@callback create(variables :: Enum.t(), opts :: Keyword.t()) ::
  {:ok, any()} | {:error, any()}
Link to this callback

dispose(store, variables)

@callback dispose(store :: any(), variables :: [CPSolver.Variable.t()]) ::
  :ok | :not_found
Link to this callback

domain(store, variable)

@callback domain(store :: any(), variable :: CPSolver.Variable.t()) ::
  {:ok, any()} | {:error, any()}
Link to this callback

get(store, variable, get_operation, list)

@callback get(store :: any(), variable :: CPSolver.Variable.t(), get_operation(), [any()]) ::
  {:ok, any()} | {:error, any()}
Link to this callback

on_change(store, variable, change)

@callback on_change(
  store :: any(),
  variable :: CPSolver.Variable.t(),
  change :: CPSolver.Common.domain_change()
) :: any()
Link to this callback

on_fail(store, variable)

@callback on_fail(store :: any(), variable :: CPSolver.Variable.t()) :: any()
Link to this callback

on_fix(store, variable, value)

@callback on_fix(store :: any(), variable :: CPSolver.Variable.t(), value :: any()) ::
  any()
Link to this callback

on_no_change(store, variable)

@callback on_no_change(store :: any(), variable :: CPSolver.Variable.t()) :: any()
Link to this callback

update(store, variable, update_operation, list)

@callback update(store :: any(), variable :: CPSolver.Variable.t(), update_operation(), [
  any()
]) :: any()
Link to this callback

update_domain(store, variable, update_operation, list)

@callback update_domain(
  store :: any(),
  variable :: CPSolver.Variable.t(),
  update_operation(),
  [any()]
) ::
  any()

Functions

Link to this function

create_store(variables, opts \\ [])

Link to this function

default_store()

Link to this function

default_store_opts()

Link to this function

dispose(store, variables)

Link to this function

domain(variable)

Link to this function

domain(store, variable)

Link to this function

fixed?(variable)

Link to this function

get(store, variable, operation, args \\ [])

Link to this function

set_store(store)

Link to this function

update(store, variable, operation, args \\ [])