Unifex.CodeGenerator.Utils (Unifex v0.7.1) View Source

Utilities for code generation.

Link to this section Summary

Link to this section Functions

Link to this function

generate_enums_definitions(config, generator, ctx)

View Source

Specs

generate_enums_definitions(
  config :: Enumerable.t(),
  generator :: (term(), map() -> Unifex.CodeGenerator.code_t()),
  ctx :: map()
) :: Unifex.CodeGenerator.code_t()
Link to this function

generate_functions(config, generator, ctx)

View Source

Specs

generate_functions(
  config :: Enumerable.t(),
  generator :: (term(), map() -> Unifex.CodeGenerator.code_t()),
  ctx :: map()
) :: Unifex.CodeGenerator.code_t()
Link to this function

generate_functions_declarations(config, generator, ctx)

View Source

Specs

generate_functions_declarations(
  config :: Enumerable.t(),
  generator :: (term(), map() -> Unifex.CodeGenerator.code_t()),
  ctx :: map()
) :: Unifex.CodeGenerator.code_t()
Link to this function

generate_maybe_unused_args_statements(args)

View Source

Specs

generate_maybe_unused_args_statements(args :: [String.t()]) :: [String.t()]
Link to this function

generate_serialization(ast, serializers)

View Source

Specs

generate_serialization(
  ast :: Macro.t(),
  serializers :: %{
    arg_serializer:
      (type :: Unifex.CodeGenerator.BaseType.t(), name :: atom() -> output),
    tuple_serializer: ([output] -> output)
  }
) ::
  {output,
   label: atom(),
   arg: {name :: atom(), type :: Unifex.CodeGenerator.BaseType.t()}}
when output: term()

Traverses Elixir specification AST and creates C data types serialization with serializers.

Link to this function

generate_structs_definitions(config, generator, ctx)

View Source

Specs

generate_structs_definitions(
  config :: Enumerable.t(),
  generator :: (term(), map() -> Unifex.CodeGenerator.code_t()),
  ctx :: map()
) :: Unifex.CodeGenerator.code_t()

Specs

sigil_g(String.t(), []) :: String.t()

Sigil used for templating generated code.