aboutsummaryrefslogblamecommitdiffstats
path: root/lib/asn1/test/asn1_SUITE_data/P-Record.erl
blob: 9fc6f50d643630062eca5801d46f054cc65d13a9 (plain) (tree)



















































































































































































































































                                                                                                                                                                                                                                                                                                                                                                                                      
%% Generated by the Erlang ASN.1 BER-compiler version, utilizing bit-syntax:1.3.1.4
%% Purpose: encoder and decoder to the types in mod P-Record

-module('P-Record').
-include("P-Record.hrl").
-define('RT_PER',asn1rt_per_bin).
-export([encoding_rule/0]).
-export([
'enc_PersonnelRecord'/1,
'enc_ChildInformation'/1,
'enc_Name'/1,
'enc_EmployeeNumber'/1,
'enc_Date'/1
]).

-export([
'dec_PersonnelRecord'/2,
'dec_ChildInformation'/2,
'dec_Name'/2,
'dec_EmployeeNumber'/2,
'dec_Date'/2
]).

-export([
'v'/0
]).



-export([encode/2,decode/2,encode_disp/2,decode_disp/2]).

encoding_rule() ->
   per_bin.

encode(Type,Data) ->
case catch ?RT_PER:complete(encode_disp(Type,Data)) of
  {'EXIT',{error,Reason}} ->
    {error,Reason};
  {'EXIT',Reason} ->
    {error,{asn1,Reason}};
  {Bytes,Len} ->
    {ok,Bytes};
  X ->
    {ok,X}
end.

decode(Type,Data) ->
case catch decode_disp(Type,Data) of
  {'EXIT',{error,Reason}} ->
    {error,Reason};
  {'EXIT',Reason} ->
    {error,{asn1,Reason}};
  {X,_Rest} ->
    {ok,X};
  {X,_Rest,_Len} ->
    {ok,X}
end.

encode_disp('PersonnelRecord',Data) -> 'enc_PersonnelRecord'(Data);
encode_disp('ChildInformation',Data) -> 'enc_ChildInformation'(Data);
encode_disp('Name',Data) -> 'enc_Name'(Data);
encode_disp('EmployeeNumber',Data) -> 'enc_EmployeeNumber'(Data);
encode_disp('Date',Data) -> 'enc_Date'(Data);
encode_disp(Type,Data) -> exit({error,{asn1,{undefined_type,Type}}}).


decode_disp('PersonnelRecord',Data) -> 'dec_PersonnelRecord'(Data,mandatory);
decode_disp('ChildInformation',Data) -> 'dec_ChildInformation'(Data,mandatory);
decode_disp('Name',Data) -> 'dec_Name'(Data,mandatory);
decode_disp('EmployeeNumber',Data) -> 'dec_EmployeeNumber'(Data,mandatory);
decode_disp('Date',Data) -> 'dec_Date'(Data,mandatory);
decode_disp(Type,Data) -> exit({error,{asn1,{undefined_type,Type}}}).





'enc_PersonnelRecord'(Val) ->
{Val1,Opt} = ?RT_PER:fixoptionals([{children,6}],Val),
[
?RT_PER:setoptionals(Opt),

%% attribute number 1 with type Externaltypereference6P-RecordName
'enc_Name'(?RT_PER:cindex(2,Val1,name)),

%% attribute number 2 with type VisibleString
?RT_PER:encode_VisibleString([],?RT_PER:cindex(3,Val1,title)),

%% attribute number 3 with type INTEGER
?RT_PER:encode_integer([],?RT_PER:cindex(4,Val1,number)),

%% attribute number 4 with type VisibleString
?RT_PER:encode_VisibleString([],?RT_PER:cindex(5,Val1,dateOfHire)),

%% attribute number 5 with type Externaltypereference10P-RecordName
'enc_Name'(?RT_PER:cindex(6,Val1,nameOfSpouse)),
case ?RT_PER:cindex(7,Val1,children) of
asn1_DEFAULT -> [];
_ ->

%% attribute number 6 with type SEQUENCE OF
'enc_PersonnelRecord_children'(?RT_PER:cindex(7,Val1,children))
end].

'enc_PersonnelRecord_children'({'PersonnelRecord_children',Val}) ->
'enc_PersonnelRecord_children'(Val);

'enc_PersonnelRecord_children'(Val) ->
[

   ?RT_PER:encode_length(undefined,length(Val)),
   'enc_PersonnelRecord_children_components'(Val, [])
].
'enc_PersonnelRecord_children_components'([], Acc) -> lists:reverse(Acc);

'enc_PersonnelRecord_children_components'([H|T], Acc) ->
'enc_PersonnelRecord_children_components'(T, ['enc_ChildInformation'(H)

 | Acc]).

'dec_PersonnelRecord_children'(Bytes,Telltype) ->

{Num,Bytes1} = ?RT_PER:decode_length(Bytes,undefined),
'dec_PersonnelRecord_children_components'(Num, Bytes1, Telltype, []).
'dec_PersonnelRecord_children_components'(0, Bytes, Telltype, Acc) ->
   {lists:reverse(Acc), Bytes};
'dec_PersonnelRecord_children_components'(Num, Bytes, Telltype, Acc) ->
   {Term,Remain} = 'P-Record':'dec_ChildInformation'(Bytes,Telltype),
   'dec_PersonnelRecord_children_components'(Num-1, Remain, Telltype, [Term|Acc]).


'dec_PersonnelRecord'(Bytes,Telltype) ->
{Opt,Bytes1} = ?RT_PER:getoptionals(Bytes,1), 
%%  attribute number 1 with type Name
{Term1,Bytes2} = 'dec_Name'(Bytes1,telltype),

%% attribute number 2 with type VisibleString
{Term2,Bytes3} = ?RT_PER:decode_VisibleString(Bytes2,[]),

%% attribute number 3 with type INTEGER
{Term3,Bytes4} = ?RT_PER:decode_integer(Bytes3,[]),

%% attribute number 4 with type VisibleString
{Term4,Bytes5} = ?RT_PER:decode_VisibleString(Bytes4,[]),

%%  attribute number 5 with type Name
{Term5,Bytes6} = 'dec_Name'(Bytes5,telltype),

%% attribute number 6 with type SEQUENCE OF
{Term6,Bytes7} = case element(1,Opt) of
1 ->'dec_PersonnelRecord_children'(Bytes6, Telltype);
0 ->{[],Bytes6}

end,
{{'PersonnelRecord',Term1,Term2,Term3,Term4,Term5,Term6},Bytes7}.

'enc_ChildInformation'(Val) ->
{Val1,Opt} = ?RT_PER:fixoptionals([{name,1},{dateOfBirth,2}],Val),
[
?RT_PER:setoptionals(Opt),
case ?RT_PER:cindex(2,Val1,name) of
asn1_NOVALUE -> [];
_ ->

%% attribute number 1 with type Externaltypereference15P-RecordName
'enc_Name'(?RT_PER:cindex(2,Val1,name))
end,
case ?RT_PER:cindex(3,Val1,dateOfBirth) of
asn1_NOVALUE -> [];
_ ->

%% attribute number 2 with type VisibleString
?RT_PER:encode_VisibleString([],?RT_PER:cindex(3,Val1,dateOfBirth))
end].


'dec_ChildInformation'(Bytes,Telltype) ->
{Opt,Bytes1} = ?RT_PER:getoptionals(Bytes,2), 
%%  attribute number 1 with type Name
{Term1,Bytes2} = case element(1,Opt) of
1 ->'dec_Name'(Bytes1,telltype);
0 ->{asn1_NOVALUE,Bytes1}

end,

%% attribute number 2 with type VisibleString
{Term2,Bytes3} = case element(2,Opt) of
1 ->?RT_PER:decode_VisibleString(Bytes2,[]);
0 ->{asn1_NOVALUE,Bytes2}

end,
{{'ChildInformation',Term1,Term2},Bytes3}.

'enc_Name'(Val) ->
Val1 = ?RT_PER:list_to_record('Name', Val),
[

%% attribute number 1 with type VisibleString
?RT_PER:encode_VisibleString([],?RT_PER:cindex(2,Val1,givenName)),

%% attribute number 2 with type VisibleString
?RT_PER:encode_VisibleString([],?RT_PER:cindex(3,Val1,initial)),

%% attribute number 3 with type VisibleString
?RT_PER:encode_VisibleString([],?RT_PER:cindex(4,Val1,familyName))].


'dec_Name'(Bytes,Telltype) ->

%% attribute number 1 with type VisibleString
{Term1,Bytes1} = ?RT_PER:decode_VisibleString(Bytes,[]),

%% attribute number 2 with type VisibleString
{Term2,Bytes2} = ?RT_PER:decode_VisibleString(Bytes1,[]),

%% attribute number 3 with type VisibleString
{Term3,Bytes3} = ?RT_PER:decode_VisibleString(Bytes2,[]),
{{'Name',Term1,Term2,Term3},Bytes3}.


'enc_EmployeeNumber'({'EmployeeNumber',Val}) ->
'enc_EmployeeNumber'(Val);

'enc_EmployeeNumber'(Val) ->
?RT_PER:encode_integer([],Val).


'dec_EmployeeNumber'(Bytes,Telltype) ->
?RT_PER:decode_integer(Bytes,[]).


'enc_Date'({'Date',Val}) ->
'enc_Date'(Val);

'enc_Date'(Val) ->
?RT_PER:encode_VisibleString([],Val).


'dec_Date'(Bytes,Telltype) ->
?RT_PER:decode_VisibleString(Bytes,[]).

'v'() ->
{'PersonnelRecord',{'Name',{74,111,104,110},[80],[83,109,105,116,104]},[68,105,114,101,99,116,111,114],51,[49,57,55,49,48,57,49,55],{'Name',{77,97,114,121},[84],[83,109,105,116,104]},[{'ChildInformation',{'Name',[82,97,108,112,104],[84],[83,109,105,116,104]},[49,57,53,55,49,49,49,49]},{'ChildInformation',{'Name',[83,117,115,97,110],[66],[74,111,110,101,115]},[49,57,53,57,48,55,49,55]}]}.