defmodule StellarBase.XDR.SCError do @moduledoc """ Automatically generated by xdrgen DO NOT EDIT or your changes may be overwritten Target implementation: elixir_xdr at https://hex.pm/packages/elixir_xdr Representation of Stellar `SCError` type. """ @behaviour XDR.Declaration alias StellarBase.XDR.{ SCErrorType, SCErrorCode } @struct_spec XDR.Struct.new( type: SCErrorType, code: SCErrorCode ) @type type_type :: SCErrorType.t() @type code_type :: SCErrorCode.t() @type t :: %__MODULE__{type: type_type(), code: code_type()} defstruct [:type, :code] @spec new(type :: type_type(), code :: code_type()) :: t() def new( %SCErrorType{} = type, %SCErrorCode{} = code ), do: %__MODULE__{type: type, code: code} @impl true def encode_xdr(%__MODULE__{type: type, code: code}) do [type: type, code: code] |> XDR.Struct.new() |> XDR.Struct.encode_xdr() end @impl true def encode_xdr!(%__MODULE__{type: type, code: code}) do [type: type, code: code] |> XDR.Struct.new() |> XDR.Struct.encode_xdr!() end @impl true def decode_xdr(bytes, struct \\ @struct_spec) def decode_xdr(bytes, struct) do case XDR.Struct.decode_xdr(bytes, struct) do {:ok, {%XDR.Struct{components: [type: type, code: code]}, rest}} -> {:ok, {new(type, code), rest}} error -> error end end @impl true def decode_xdr!(bytes, struct \\ @struct_spec) def decode_xdr!(bytes, struct) do {%XDR.Struct{components: [type: type, code: code]}, rest} = XDR.Struct.decode_xdr!(bytes, struct) {new(type, code), rest} end end