%%
%% %CopyrightBegin%
%%
%% SPDX-License-Identifier: Apache-2.0
%%
%% Copyright Ericsson AB 2010-2025. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%%     http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%%
%% %CopyrightEnd%
%%

%%
%% This file contains code that's included by encode/decode modules
%% generated by diameter_codegen.erl. This code used to do most of the
%% work, but now passes it off to module diameter_gen.
%%

%% encode_avps/3

encode_avps(Name, Avps, Opts) ->
    diameter_gen:encode_avps(Name, Avps, Opts#{module => ?MODULE}).

%% decode_avps/2

decode_avps(Name, Avps, Opts) ->
    diameter_gen:decode_avps(Name, Avps, Opts#{module => ?MODULE}).

%% avp/5

avp(T, Data, Name, Opts, Mod) ->
    Mod:avp(T, Data, Name, Opts#{module := Mod}).

%% grouped_avp/4

grouped_avp(T, Name, Data, Opts) ->
    diameter_gen:grouped_avp(T, Name, Data, Opts).

%% empty_group/2

empty_group(Name, Opts) ->
    diameter_gen:empty_group(Name, Opts).

%% empty/2

empty(Name, Opts) ->
    diameter_gen:empty(Name, Opts).
