Current section
Files
Jump to
Current section
Files
src/xep0422.erl
%% Created automatically by XML generator (fxml_gen.erl)
%% Source: xmpp_codec.spec
-module(xep0422).
-compile(export_all).
do_decode(<<"external">>, <<"urn:xmpp:fasten:0">>, El,
Opts) ->
decode_fasten_external(<<"urn:xmpp:fasten:0">>,
Opts,
El);
do_decode(<<"apply-to">>, <<"urn:xmpp:fasten:0">>, El,
Opts) ->
decode_fasten_apply_to(<<"urn:xmpp:fasten:0">>,
Opts,
El);
do_decode(Name, <<>>, _, _) ->
erlang:error({xmpp_codec, {missing_tag_xmlns, Name}});
do_decode(Name, XMLNS, _, _) ->
erlang:error({xmpp_codec, {unknown_tag, Name, XMLNS}}).
tags() ->
[{<<"external">>, <<"urn:xmpp:fasten:0">>},
{<<"apply-to">>, <<"urn:xmpp:fasten:0">>}].
do_encode({fasten_apply_to, _, _, _} = Apply_to,
TopXMLNS) ->
encode_fasten_apply_to(Apply_to, TopXMLNS);
do_encode({fasten_external, _} = External, TopXMLNS) ->
encode_fasten_external(External, TopXMLNS).
do_get_name({fasten_apply_to, _, _, _}) ->
<<"apply-to">>;
do_get_name({fasten_external, _}) -> <<"external">>.
do_get_ns({fasten_apply_to, _, _, _}) ->
<<"urn:xmpp:fasten:0">>;
do_get_ns({fasten_external, _}) ->
<<"urn:xmpp:fasten:0">>.
get_els({fasten_apply_to, _id, _external, _sub_els}) ->
_sub_els.
set_els({fasten_apply_to, _id, _external, _},
_sub_els) ->
{fasten_apply_to, _id, _external, _sub_els}.
pp(fasten_apply_to, 3) -> [id, external, sub_els];
pp(fasten_external, 1) -> [name];
pp(_, _) -> no.
records() ->
[{fasten_apply_to, 3}, {fasten_external, 1}].
decode_fasten_external(__TopXMLNS, __Opts,
{xmlel, <<"external">>, _attrs, _els}) ->
Name = decode_fasten_external_attrs(__TopXMLNS,
_attrs,
undefined),
{fasten_external, Name}.
decode_fasten_external_attrs(__TopXMLNS,
[{<<"name">>, _val} | _attrs], _Name) ->
decode_fasten_external_attrs(__TopXMLNS, _attrs, _val);
decode_fasten_external_attrs(__TopXMLNS, [_ | _attrs],
Name) ->
decode_fasten_external_attrs(__TopXMLNS, _attrs, Name);
decode_fasten_external_attrs(__TopXMLNS, [], Name) ->
decode_fasten_external_attr_name(__TopXMLNS, Name).
encode_fasten_external({fasten_external, Name},
__TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:fasten:0">>,
[],
__TopXMLNS),
_els = [],
_attrs = encode_fasten_external_attr_name(Name,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS)),
{xmlel, <<"external">>, _attrs, _els}.
decode_fasten_external_attr_name(__TopXMLNS,
undefined) ->
erlang:error({xmpp_codec,
{missing_attr,
<<"name">>,
<<"external">>,
__TopXMLNS}});
decode_fasten_external_attr_name(__TopXMLNS, _val) ->
_val.
encode_fasten_external_attr_name(_val, _acc) ->
[{<<"name">>, _val} | _acc].
decode_fasten_apply_to(__TopXMLNS, __Opts,
{xmlel, <<"apply-to">>, _attrs, _els}) ->
{External, __Els} =
decode_fasten_apply_to_els(__TopXMLNS,
__Opts,
_els,
undefined,
[]),
Id = decode_fasten_apply_to_attrs(__TopXMLNS,
_attrs,
undefined),
{fasten_apply_to, Id, External, __Els}.
decode_fasten_apply_to_els(__TopXMLNS, __Opts, [],
External, __Els) ->
{External, lists:reverse(__Els)};
decode_fasten_apply_to_els(__TopXMLNS, __Opts,
[{xmlel, <<"external">>, _attrs, _} = _el | _els],
External, __Els) ->
case xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS)
of
<<"urn:xmpp:fasten:0">> ->
decode_fasten_apply_to_els(__TopXMLNS,
__Opts,
_els,
decode_fasten_external(<<"urn:xmpp:fasten:0">>,
__Opts,
_el),
__Els);
_ ->
decode_fasten_apply_to_els(__TopXMLNS,
__Opts,
_els,
External,
[_el | __Els])
end;
decode_fasten_apply_to_els(__TopXMLNS, __Opts,
[{xmlel, _name, _attrs, _} = _el | _els], External,
__Els) ->
case proplists:get_bool(ignore_els, __Opts) of
true ->
decode_fasten_apply_to_els(__TopXMLNS,
__Opts,
_els,
External,
[_el | __Els]);
false ->
__XMLNS = xmpp_codec:get_attr(<<"xmlns">>,
_attrs,
__TopXMLNS),
case xmpp_codec:get_mod(_name, __XMLNS) of
undefined ->
decode_fasten_apply_to_els(__TopXMLNS,
__Opts,
_els,
External,
[_el | __Els]);
Mod ->
decode_fasten_apply_to_els(__TopXMLNS,
__Opts,
_els,
External,
[Mod:do_decode(_name,
__XMLNS,
_el,
__Opts)
| __Els])
end
end;
decode_fasten_apply_to_els(__TopXMLNS, __Opts,
[_ | _els], External, __Els) ->
decode_fasten_apply_to_els(__TopXMLNS,
__Opts,
_els,
External,
__Els).
decode_fasten_apply_to_attrs(__TopXMLNS,
[{<<"id">>, _val} | _attrs], _Id) ->
decode_fasten_apply_to_attrs(__TopXMLNS, _attrs, _val);
decode_fasten_apply_to_attrs(__TopXMLNS, [_ | _attrs],
Id) ->
decode_fasten_apply_to_attrs(__TopXMLNS, _attrs, Id);
decode_fasten_apply_to_attrs(__TopXMLNS, [], Id) ->
decode_fasten_apply_to_attr_id(__TopXMLNS, Id).
encode_fasten_apply_to({fasten_apply_to,
Id,
External,
__Els},
__TopXMLNS) ->
__NewTopXMLNS =
xmpp_codec:choose_top_xmlns(<<"urn:xmpp:fasten:0">>,
[],
__TopXMLNS),
_els = [xmpp_codec:encode(_el, __NewTopXMLNS)
|| _el <- __Els]
++
lists:reverse('encode_fasten_apply_to_$external'(External,
__NewTopXMLNS,
[])),
_attrs = encode_fasten_apply_to_attr_id(Id,
xmpp_codec:enc_xmlns_attrs(__NewTopXMLNS,
__TopXMLNS)),
{xmlel, <<"apply-to">>, _attrs, _els}.
'encode_fasten_apply_to_$external'(undefined,
__TopXMLNS, _acc) ->
_acc;
'encode_fasten_apply_to_$external'(External, __TopXMLNS,
_acc) ->
[encode_fasten_external(External, __TopXMLNS) | _acc].
decode_fasten_apply_to_attr_id(__TopXMLNS, undefined) ->
erlang:error({xmpp_codec,
{missing_attr, <<"id">>, <<"apply-to">>, __TopXMLNS}});
decode_fasten_apply_to_attr_id(__TopXMLNS, _val) ->
_val.
encode_fasten_apply_to_attr_id(_val, _acc) ->
[{<<"id">>, _val} | _acc].