Current section
Files
Jump to
Current section
Files
lib/unifex/code_generator/tie_header.ex
defmodule Unifex.CodeGenerator.TieHeader do
@moduledoc false
# Generates connective header file that includes proper header based
# on selected interface.
import Unifex.CodeGenerator.Utils, only: [sigil_g: 2]
alias Unifex.CodeGenerator
@spec generate_header(name :: Unifex.Specs.native_name_t(), generators :: [CodeGenerator.t()]) ::
CodeGenerator.code_t()
def generate_header(name, generators) do
~g"""
#pragma once
#{generate_includes(name, generators)}
"""
end
defp generate_includes(name, generators) do
Enum.map_join(generators, "\n", &generate_include(name, &1))
end
defp generate_include(name, generator) do
~g"""
#ifdef #{generator.identification_constant()}
#include "#{generator.interface_io_name()}/#{name}.h"
#endif
"""
end
end