defmodule Zig.Type.Float do alias Zig.Type use Type, inspect?: true defstruct [:bits] @type t :: %__MODULE__{bits: 16 | 32 | 64} def parse("f16"), do: %__MODULE__{bits: 16} def parse("f32"), do: %__MODULE__{bits: 32} def parse("f64"), do: %__MODULE__{bits: 64} def from_json(%{"bits" => bits}), do: %__MODULE__{bits: bits} def to_string(float), do: "f#{float.bits}" def to_call(float), do: "f#{float.bits}" def inspect(type, _opts) do import Inspect.Algebra concat(["~t(", to_string(type), ")"]) end def spec(_, _, _), do: Type.spec(:float) def return_allowed?(_), do: true end