Packages

This is a flatbuffers implementation in Elixir. In contrast to existing implementations there is no need to compile code from a schema. Instead, data and schemas are processed dynamically at runtime, offering greater flexibility.

Current section

Files

Jump to
eflatbuffers lib utils.ex
Raw

lib/utils.ex

defmodule Eflatbuffers.Utils do
def scalar?({ type, _options }), do: scalar?(type)
def scalar?(:string), do: false
def scalar?(:vector), do: false
def scalar?(:table), do: false
def scalar?(:enum), do: true
def scalar?(_), do: true
def scalar_size({ type, _options }), do: scalar_size(type)
def scalar_size(:byte ), do: 1
def scalar_size(:ubyte), do: 1
def scalar_size(:bool ), do: 1
def scalar_size(:short ), do: 2
def scalar_size(:ushort), do: 2
def scalar_size(:int ), do: 4
def scalar_size(:uint ), do: 4
def scalar_size(:float), do: 4
def scalar_size(:long ), do: 8
def scalar_size(:ulong ), do: 8
def scalar_size(:double), do: 8
def scalar_size(type), do: throw({:error, {:unknown_scalar, type}})
def extract_scalar_type({:enum, %{ name: enum_name }}, {tables, _options}) do
{ :enum, %{ type: type }} = Map.get(tables, enum_name)
type
end
def extract_scalar_type(type, _), do: type
end