lib/zig/easy_c.ex

defmodule Zig.EasyC do
  @moduledoc """
  """

  require EEx

  easy_c = Path.join(__DIR__, "templates/easy_c.zig.eex")
  EEx.function_from_file(:def, :build_from, easy_c, [:assigns])

  def normalize_aliasing(opts) do
    if opts[:easy_c] do
      Keyword.update!(opts, :nifs, &add_aliasing/1)
    else
      opts
    end
  end

  defp add_aliasing(nifs) do
    Enum.map(nifs, fn
      {fun, opts} ->
        {fun, Keyword.update(opts, :alias, :"easy_c.#{fun}", &:"easy_c.#{&1}")}
    end)
  end
end