View Source Kinda.Wrapper.Generate (kinda v0.11.0)
Generic emission helpers for wrapper manifests.
Summary
Types
@type callback_bridge_backlog_entry() :: %{ function: Kinda.Wrapper.Function.t(), callback_bridge: Kinda.Wrapper.CallbackBridge.t() }
@type callback_bridge_manifest() :: %{ required(String.t()) => pos_integer() | [callback_bridge_manifest_entry()] }
@type callback_bridge_manifest_entry() :: %{ required(String.t()) => callback_bridge_manifest_function() | callback_bridge_manifest_metadata() }
@type callback_bridge_manifest_function() :: %{ required(String.t()) => String.t() | non_neg_integer() | boolean() | [String.t()] | nil }
@type declaration_manifest() :: map()
@type declaration_manifest_struct() :: Kinda.CodeGen.DeclarationManifest.t()
@type declaration_surfaces_struct() :: Kinda.CodeGen.DeclarationSurfaces.t()
@type signature_manifest() :: %{ required(String.t()) => pos_integer() | [signature_manifest_entry()] | [signature_manifest_record()] }
@type signature_manifest_entry() :: %{ required(String.t()) => signature_manifest_function() | [signature_manifest_variant()] | String.t() | nil }
@type signature_manifest_record() :: %{ required(String.t()) => String.t() | map() | [signature_manifest_record_field()] }
Functions
@spec callback_bridge_backlog(Kinda.Wrapper.Manifest.t(), module()) :: [ callback_bridge_backlog_entry() ]
@spec callback_bridge_manifest(Kinda.Wrapper.Manifest.t(), module()) :: callback_bridge_manifest()
@spec declaration_manifest(Kinda.Wrapper.Manifest.t(), module()) :: declaration_manifest()
@spec declaration_manifest_struct(Kinda.Wrapper.Manifest.t(), module()) :: declaration_manifest_struct()
@spec declaration_surfaces_struct(Kinda.Wrapper.Manifest.t(), module()) :: declaration_surfaces_struct()
@spec elixir_functions(Kinda.Wrapper.Manifest.t(), module()) :: [{atom(), [atom()]}]
@spec elixir_nif_decls(Kinda.Wrapper.Manifest.t(), module()) :: [ Kinda.CodeGen.NIFDecl.t() ]
@spec render_callback_bridge_report(Kinda.Wrapper.Manifest.t(), module()) :: String.t()
@spec render_elixir_manifest(Kinda.Wrapper.Manifest.t(), module()) :: String.t()
@spec render_zig_nif_entries(Kinda.Wrapper.Manifest.t(), module()) :: String.t()
@spec signature_manifest(Kinda.Wrapper.Manifest.t(), module()) :: signature_manifest()
@spec write_callback_bridge_manifest( Kinda.Wrapper.Manifest.t(), module(), nil | String.t(), (callback_bridge_manifest() -> iodata()) ) :: :ok
@spec write_callback_bridge_report( Kinda.Wrapper.Manifest.t(), module(), nil | String.t() ) :: :ok
@spec write_declaration_manifest( Kinda.Wrapper.Manifest.t(), module(), nil | String.t(), (declaration_manifest() -> iodata()) ) :: :ok
@spec write_elixir_manifest(Kinda.Wrapper.Manifest.t(), module(), nil | String.t()) :: :ok
@spec write_signature_manifest( Kinda.Wrapper.Manifest.t(), module(), nil | String.t(), (signature_manifest() -> iodata()) ) :: :ok
@spec write_zig_nif_entries(Kinda.Wrapper.Manifest.t(), module(), nil | String.t()) :: :ok
@spec zig_entries(Kinda.Wrapper.Manifest.t(), module()) :: [String.t()]