diff options
author | Björn Gustavsson <[email protected]> | 2013-05-28 06:49:38 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2013-08-30 10:13:16 +0200 |
commit | 060bd359237cdb629abba03620323c0ed8084910 (patch) | |
tree | 77131a0c11a899ec9c3d13a691edbeb68b181596 /lib/asn1/src/asn1ct_gen_ber_bin_v2.erl | |
parent | b2b81e94855075c8e7cbd7f61d62900914d72222 (diff) | |
download | otp-060bd359237cdb629abba03620323c0ed8084910.tar.gz otp-060bd359237cdb629abba03620323c0ed8084910.tar.bz2 otp-060bd359237cdb629abba03620323c0ed8084910.zip |
Refactor encoding of REAL
To facilitate optimizing PER encoding using an intermediate
format, we must change asn1rtt_real_common:encode_real/1 so that
it only returns the encoded binary.
Diffstat (limited to 'lib/asn1/src/asn1ct_gen_ber_bin_v2.erl')
-rw-r--r-- | lib/asn1/src/asn1ct_gen_ber_bin_v2.erl | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/asn1/src/asn1ct_gen_ber_bin_v2.erl b/lib/asn1/src/asn1ct_gen_ber_bin_v2.erl index 8ab49aec2c..229a22b2ad 100644 --- a/lib/asn1/src/asn1ct_gen_ber_bin_v2.erl +++ b/lib/asn1/src/asn1ct_gen_ber_bin_v2.erl @@ -196,8 +196,16 @@ gen_encode_prim(_Erules, #type{}=D, DoTag, Value) -> emit(["case ",Value," of",nl]), emit_enc_enumerated_cases(NamedNumberList,DoTag); 'REAL' -> - emit([{call,ber,encode_tags, - [DoTag,{call,real_common,ber_encode_real,[Value]}]}]); + asn1ct_name:new(realval), + asn1ct_name:new(realsize), + emit(["begin",nl, + {curr,realval}," = ", + {call,real_common,ber_encode_real,[Value]},com,nl, + {curr,realsize}," = ", + {call,erlang,byte_size,[{curr,realval}]},com,nl, + {call,ber,encode_tags, + [DoTag,{curr,realval},{curr,realsize}]},nl, + "end"]); {'BIT STRING',NamedNumberList} -> call(encode_bit_string, [{asis,BitStringConstraint},Value, |