diff options
author | Kenneth Lundin <[email protected]> | 2010-02-19 14:01:57 +0000 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2010-02-19 14:01:57 +0000 |
commit | 18bd1239bee04427340a44f57f993ea92c264e41 (patch) | |
tree | dbb3031dcd2e446eb457ff7ac5229949517d7557 /lib/asn1/test/asn1_SUITE_data/P-Record.erl | |
parent | 729565dc3f8bcf8829508136498aef6a542840f4 (diff) | |
download | otp-18bd1239bee04427340a44f57f993ea92c264e41.tar.gz otp-18bd1239bee04427340a44f57f993ea92c264e41.tar.bz2 otp-18bd1239bee04427340a44f57f993ea92c264e41.zip |
OTP-8463 Support for EXTENSIBILITY IMPLIED and SET/SEQ OF NamedType is
added.
Diffstat (limited to 'lib/asn1/test/asn1_SUITE_data/P-Record.erl')
-rw-r--r-- | lib/asn1/test/asn1_SUITE_data/P-Record.erl | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/lib/asn1/test/asn1_SUITE_data/P-Record.erl b/lib/asn1/test/asn1_SUITE_data/P-Record.erl new file mode 100644 index 0000000000..9fc6f50d64 --- /dev/null +++ b/lib/asn1/test/asn1_SUITE_data/P-Record.erl @@ -0,0 +1,244 @@ +%% 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]}]}. + |