# credo:disable-for-this-file defmodule Onnx.StringStringEntryProto do @moduledoc false defstruct key: "", value: "" ( ( @spec encode(struct) :: {:ok, iodata} | {:error, any} def encode(msg) do try do {:ok, encode!(msg)} rescue e in [Protox.EncodingError, Protox.RequiredFieldsError] -> {:error, e} end end @spec encode!(struct) :: iodata | no_return def encode!(msg) do [] |> encode_key(msg) |> encode_value(msg) end ) [] [ defp encode_key(acc, msg) do try do if msg.key == "" do acc else [acc, "\n", Protox.Encode.encode_string(msg.key)] end rescue ArgumentError -> reraise Protox.EncodingError.new(:key, "invalid field value"), __STACKTRACE__ end end, defp encode_value(acc, msg) do try do if msg.value == "" do acc else [acc, "\x12", Protox.Encode.encode_string(msg.value)] end rescue ArgumentError -> reraise Protox.EncodingError.new(:value, "invalid field value"), __STACKTRACE__ end end ] [] ) ( ( @spec decode(binary) :: {:ok, struct} | {:error, any} def decode(bytes) do try do {:ok, decode!(bytes)} rescue e in [Protox.DecodingError, Protox.IllegalTagError, Protox.RequiredFieldsError] -> {:error, e} end end ( @spec decode!(binary) :: struct | no_return def decode!(bytes) do parse_key_value(bytes, struct(Onnx.StringStringEntryProto)) end ) ) ( @spec parse_key_value(binary, struct) :: struct defp parse_key_value(<<>>, msg) do msg end defp parse_key_value(bytes, msg) do {field, rest} = case Protox.Decode.parse_key(bytes) do {0, _, _} -> raise %Protox.IllegalTagError{} {1, _, bytes} -> {len, bytes} = Protox.Varint.decode(bytes) {delimited, rest} = Protox.Decode.parse_delimited(bytes, len) {[key: delimited], rest} {2, _, bytes} -> {len, bytes} = Protox.Varint.decode(bytes) {delimited, rest} = Protox.Decode.parse_delimited(bytes, len) {[value: delimited], rest} {tag, wire_type, rest} -> {_, rest} = Protox.Decode.parse_unknown(tag, wire_type, rest) {[], rest} end msg_updated = struct(msg, field) parse_key_value(rest, msg_updated) end ) [] ) ( @spec json_decode(iodata(), keyword()) :: {:ok, struct()} | {:error, any()} def json_decode(input, opts \\ []) do try do {:ok, json_decode!(input, opts)} rescue e in Protox.JsonDecodingError -> {:error, e} end end @spec json_decode!(iodata(), keyword()) :: struct() | no_return() def json_decode!(input, opts \\ []) do {json_library_wrapper, json_library} = Protox.JsonLibrary.get_library(opts, :decode) Protox.JsonDecode.decode!( input, Onnx.StringStringEntryProto, &json_library_wrapper.decode!(json_library, &1) ) end @spec json_encode(struct(), keyword()) :: {:ok, iodata()} | {:error, any()} def json_encode(msg, opts \\ []) do try do {:ok, json_encode!(msg, opts)} rescue e in Protox.JsonEncodingError -> {:error, e} end end @spec json_encode!(struct(), keyword()) :: iodata() | no_return() def json_encode!(msg, opts \\ []) do {json_library_wrapper, json_library} = Protox.JsonLibrary.get_library(opts, :encode) Protox.JsonEncode.encode!(msg, &json_library_wrapper.encode!(json_library, &1)) end ) [] ( @spec fields_defs() :: list(Protox.Field.t()) def fields_defs() do [ %{ __struct__: Protox.Field, json_name: "key", kind: {:scalar, ""}, label: :optional, name: :key, tag: 1, type: :string }, %{ __struct__: Protox.Field, json_name: "value", kind: {:scalar, ""}, label: :optional, name: :value, tag: 2, type: :string } ] end [ @spec(field_def(atom) :: {:ok, Protox.Field.t()} | {:error, :no_such_field}), ( def field_def(:key) do {:ok, %{ __struct__: Protox.Field, json_name: "key", kind: {:scalar, ""}, label: :optional, name: :key, tag: 1, type: :string }} end def field_def("key") do {:ok, %{ __struct__: Protox.Field, json_name: "key", kind: {:scalar, ""}, label: :optional, name: :key, tag: 1, type: :string }} end [] ), ( def field_def(:value) do {:ok, %{ __struct__: Protox.Field, json_name: "value", kind: {:scalar, ""}, label: :optional, name: :value, tag: 2, type: :string }} end def field_def("value") do {:ok, %{ __struct__: Protox.Field, json_name: "value", kind: {:scalar, ""}, label: :optional, name: :value, tag: 2, type: :string }} end [] ), def field_def(_) do {:error, :no_such_field} end ] ) [] ( @spec required_fields() :: [] def required_fields() do [] end ) ( @spec syntax() :: atom() def syntax() do :proto3 end ) [ @spec(default(atom) :: {:ok, boolean | integer | String.t() | float} | {:error, atom}), def default(:key) do {:ok, ""} end, def default(:value) do {:ok, ""} end, def default(_) do {:error, :no_such_field} end ] end