#include namespace elna::source { type::type(const std::size_t byte_size) : byte_size(byte_size) { } std::size_t type::size() const noexcept { return this->byte_size; } primitive_type::primitive_type(const std::string& type_name, const std::size_t byte_size) : type(byte_size), type_name(type_name) { } pointer_type::pointer_type(std::shared_ptr base_type, const std::size_t byte_size) : type(byte_size), base_type(base_type) { } procedure_type::procedure_type(std::vector> arguments, const std::size_t byte_size) : arguments(std::move(arguments)), type(byte_size) { } }