Current section

Files

Jump to
protox lib protox define.ex
Raw

lib/protox/define.ex

defmodule Protox.Define do
@moduledoc false
# Internal. Generates structs from message and enumeration definitions.
defmacro __using__(opts) do
{enums_schemas, opts} = Keyword.pop(opts, :enums_schemas)
{messages_schemas, opts} = Keyword.pop(opts, :messages_schemas)
define(
%Protox.Definition{
enums_schemas: enums_schemas |> Code.eval_quoted() |> elem(0),
messages_schemas: messages_schemas |> Code.eval_quoted() |> elem(0)
},
opts
)
end
def define(%Protox.Definition{} = definition, opts \\ []) do
defined_enums = Protox.DefineEnum.define(definition.enums_schemas)
defined_messages = Protox.DefineMessage.define(definition.messages_schemas, opts)
quote do
unquote_splicing(defined_enums)
unquote_splicing(defined_messages)
end
end
end