Packages
vix
0.10.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.1
0.33.0
0.32.0
0.31.1
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.1
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.1
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.1
0.6.0
0.5.0
0.4.0
0.3.0
0.2.1
0.2.0
retired
0.1.0
NIF based bindings for libvips
Current section
Files
Jump to
Current section
Files
lib/vix/g_object/uint64.ex
defmodule Vix.GObject.UInt64 do
alias Vix.Type
@moduledoc false
@behaviour Type
@impl Type
def typespec do
quote do
non_neg_integer()
end
end
@impl Type
def default({_min, _max, default}), do: default
@impl Type
def to_nif_term(value, data) do
case value do
value when is_integer(value) and value >= 0 ->
validate_number_limits!(value, data)
value
value ->
raise ArgumentError, message: "expected unsigned integer. given: #{inspect(value)}"
end
end
@impl Type
def to_erl_term(value), do: value
defp validate_number_limits!(_value, nil), do: :ok
defp validate_number_limits!(value, {min, max, _default}) do
if max && value > max do
raise ArgumentError, "value must be <= #{max}"
end
if min && value < min do
raise ArgumentError, "value must be >= #{min}"
end
:ok
end
end