View Source Kinda.CodeGen.DeclarationManifest (kinda v0.11.0)

A versioned declaration manifest for generated NIFs and types.

A manifest bundles generated NIF declarations (Kinda.CodeGen.NIFDecl) and type declarations (Kinda.CodeGen.TypeDecl), optionally keeping the source signature manifest they were derived from. Manifests are the canonical machine-readable contract between Kinda's codegen pipeline and downstream consumers, and can be serialized to and from maps as well as loaded from .ex or .json files via load!/1.

Summary

Types

source()

@type source() :: t() | map() | Path.t()

t()

@type t() :: %Kinda.CodeGen.DeclarationManifest{
  nif_decls: [Kinda.CodeGen.NIFDecl.t()],
  signature_manifest: map() | nil,
  signature_manifest_version: pos_integer() | nil,
  type_decls: [Kinda.CodeGen.TypeDecl.t()],
  version: pos_integer()
}

Functions

build(nif_decls, signature_manifest \\ nil)

@spec build([Kinda.CodeGen.NIFDecl.t()], map() | nil) :: t()

from_manifest(manifest)

@spec from_manifest(map()) :: t()

from_parts(nif_decls, type_decls, signature_manifest \\ nil)

@spec from_parts(
  [Kinda.CodeGen.NIFDecl.t()],
  [Kinda.CodeGen.TypeDecl.t()],
  map() | nil
) :: t()

load!(declaration_manifest)

@spec load!(source()) :: t()

merge_nif_decls(declaration_manifest, nif_decls)

@spec merge_nif_decls(t(), [Kinda.CodeGen.NIFDecl.t()]) :: t()

nif_decls(declaration_manifest)

@spec nif_decls(t()) :: [Kinda.CodeGen.NIFDecl.t()]

put_nif_decls(declaration_manifest, nif_decls)

@spec put_nif_decls(t(), [Kinda.CodeGen.NIFDecl.t()]) :: t()

put_signature_manifest(declaration_manifest, signature_manifest)

@spec put_signature_manifest(t(), map() | nil) :: t()

put_type_decls(declaration_manifest, type_decls)

@spec put_type_decls(t(), [Kinda.CodeGen.TypeDecl.t()]) :: t()

signature_manifest(declaration_manifest)

@spec signature_manifest(t()) :: map() | nil

signature_manifest_version(declaration_manifest)

@spec signature_manifest_version(t()) :: pos_integer() | nil

to_manifest(declaration_manifest)

@spec to_manifest(t()) :: map()

type_decls(declaration_manifest)

@spec type_decls(t()) :: [Kinda.CodeGen.TypeDecl.t()]