defmodule Kinda.CodeGen.Resource do alias Kinda.CodeGen.Type def resource_type_struct("[*c]const " <> type, %{} = resource_kind_map) do mod = Map.fetch!(resource_kind_map, type) "#{mod}.Array" end def resource_type_struct("[*c]" <> type, %{} = resource_kind_map) do mod = Map.fetch!(resource_kind_map, type) "#{mod}.Ptr" end def resource_type_struct(type, %{} = resource_kind_map) do mod = Map.fetch!(resource_kind_map, type) "#{mod}" end def resource_type_resource_kind(type, %{} = resource_kind_map) do resource_type_struct(type, resource_kind_map) <> ".resource" end def resource_type_var(type, %{} = resource_kind_map) do resource_type_resource_kind(type, resource_kind_map) <> ".t" end def resource_open(%Type{kind_name: kind_name}) do """ #{kind_name}.open_all(env); """ end end