lib/opc_ua/nodestore/qualified_name.ex

defmodule OpcUA.QualifiedName do
  use IsEnumerable
  use IsAccessible

  @moduledoc """
  A name qualified by a namespace.
  """
  alias OpcUA.QualifiedName
  @enforce_keys [:ns_index, :name]

  defstruct ns_index: nil,
            name: nil

  @doc """
  Creates a structure for a name qualified by a namespace.
  """
  @spec new(list()) :: %QualifiedName{}
  def new(ns_index: ns_index, name: name) when is_integer(ns_index) and is_binary(name) do
    %QualifiedName{ns_index: ns_index, name: name}
  end

  def new(_invalid_data), do: raise("Invalid Namespace index or name (data type)")
end