From bf3cce888ad50e19e260a7aab76a58d49f4fdf8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Fri, 22 Feb 2013 15:57:04 +0100 Subject: asn1ct_constructed_per: Optimize decoding of OPTIONAL --- lib/asn1/src/asn1ct_constructed_per.erl | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'lib/asn1/src/asn1ct_constructed_per.erl') diff --git a/lib/asn1/src/asn1ct_constructed_per.erl b/lib/asn1/src/asn1ct_constructed_per.erl index bcc5aee8bb..02947ed6ea 100644 --- a/lib/asn1/src/asn1ct_constructed_per.erl +++ b/lib/asn1/src/asn1ct_constructed_per.erl @@ -1248,11 +1248,15 @@ comp_call_pre_post(noext, mandatory, _, _, _, _, _, _) -> comp_call_pre_post(noext, Prop, _, _, TextPos, OptTable, NumOptionals, Ext) -> %% OPTIONAL or DEFAULT OptPos = get_optionality_pos(TextPos, OptTable), - Element = io_lib:format("Opt band (1 bsl ~w)", - [NumOptionals - OptPos]), + Element = case NumOptionals - OptPos of + 0 -> + "Opt band 1"; + Shift -> + lists:concat(["(Opt bsr ",Shift,") band 1"]) + end, {[fun(St) -> emit(["case ",Element," of",nl, - " _Opt",TextPos," when _Opt",TextPos," > 0 ->"]), + "1 ->",nl]), St end], [fun(St) -> -- cgit v1.2.3