Current section

Files

Jump to
fixpoint lib solver domain default_domain.ex
Raw

lib/solver/domain/default_domain.ex

defmodule CPSolver.DefaultDomain do
alias CPSolver.BitVectorDomain, as: Domain
defdelegate new(values), to: Domain
defdelegate map(domain, mapper), to: Domain
defdelegate remove(values, val), to: Domain
defdelegate removeAbove(values, val), to: Domain
defdelegate removeBelow(values, val), to: Domain
def to_list(arg) when is_list(arg) do
arg
end
def to_list(arg) do
Domain.to_list(arg)
end
def copy(domain) do
domain
|> Domain.to_list()
|> Domain.new()
end
def size(domain) when is_integer(domain) do
1
end
def size(domain) do
Domain.size(domain)
end
def fixed?(domain) when is_integer(domain) do
true
end
def fixed?(domain) do
Domain.fixed?(domain)
end
def contains?(domain, value) when is_integer(domain) do
domain == value
end
def contains?(domain, value) do
Domain.contains?(domain, value)
end
def min(domain) when is_integer(domain) do
domain
end
def min(domain) do
Domain.min(domain)
end
def max(domain) when is_integer(domain) do
domain
end
def max(domain) do
Domain.max(domain)
end
def fix(domain, value) when is_integer(domain) do
(domain != value && :fail) || :no_change
end
def fix(domain, value) do
Domain.fix(domain, value)
end
end