~clint-fewbar/ubuntu/precise/erlang/merge-15b

« back to all changes in this revision

Viewing changes to lib/asn1/src/asn1ct_gen.erl

  • Committer: Package Import Robot
  • Author(s): Sergei Golovan
  • Date: 2011-12-15 19:20:10 UTC
  • mfrom: (1.1.18) (3.5.15 sid)
  • mto: (3.5.16 sid)
  • mto: This revision was merged to the branch mainline in revision 33.
  • Revision ID: package-import@ubuntu.com-20111215192010-jnxcfe3tbrpp0big
Tags: 1:15.b-dfsg-1
* New upstream release.
* Upload to experimental because this release breaks external drivers
  API along with ABI, so several applications are to be fixed.
* Removed SSL patch because the old SSL implementation is removed from
  the upstream distribution.
* Removed never used patch which added native code to erlang beam files.
* Removed the erlang-docbuilder binary package because the docbuilder
  application was dropped by upstream.
* Documented dropping ${erlang-docbuilder:Depends} substvar in
  erlang-depends(1) manpage.
* Made erlang-base and erlang-base-hipe provide virtual package
  erlang-abi-15.b (the number means the first erlang version, which
  provides current ABI).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
%%
2
2
%% %CopyrightBegin%
3
3
%%
4
 
%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
 
4
%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
5
5
%%
6
6
%% The contents of this file are subject to the Erlang Public License,
7
7
%% Version 1.1, (the "License"); you may not use this file except in
47
47
         un_hyphen_var/1]).
48
48
-export([gen_encode_constructed/4,
49
49
         gen_decode_constructed/4]).
 
50
-export([nif_parameter/0]).
50
51
 
51
52
%% pgen(Outfile, Erules, Module, TypeOrVal, Options)
52
53
%% Generate Erlang module (.erl) and (.hrl) file corresponding to an ASN.1 module
87
88
% gen_vars(asn1_db:mod_to_vars(Module)),
88
89
% gen_tag_table(AllTypes),
89
90
    file:close(Fid),
90
 
    asn1ct:report_verbose("--~p--~n",[{generated,ErlFile}],Options).
 
91
    asn1ct:verbose("--~p--~n",[{generated,ErlFile}],Options).
91
92
 
92
93
 
93
94
pgen_typeorval(Erules,Module,N2nConvEnums,{Types,Values,_Ptypes,_Classes,Objects,ObjectSets}) ->
938
939
    NoFinalPadding = lists:member(no_final_padding,get(encoding_options)),
939
940
    Call = case Erules of
940
941
               per -> "?RT_PER:complete(encode_disp(Type,Data))";
941
 
               per_bin -> "?RT_PER:complete(encode_disp(Type,Data))";
 
942
               per_bin -> ["?RT_PER:complete(encode_disp(Type,Data))"];
942
943
               ber -> "encode_disp(Type,Data)";
943
944
               ber_bin -> "encode_disp(Type,Data)";
944
945
               ber_bin_v2 -> "encode_disp(Type,Data)";
945
946
               uper_bin when NoFinalPadding == true -> 
946
947
                   "?RT_PER:complete_NFP(encode_disp(Type,Data))";
947
 
               uper_bin -> "?RT_PER:complete(encode_disp(Type,Data))"
 
948
               uper_bin -> ["?RT_PER:complete(encode_disp(Type,Data))"]
948
949
           end,
949
950
    EncWrap = case Erules of
950
951
               ber -> "wrap_encode(Bytes)";
974
975
%     case Erules of
975
976
%       ber_bin_v2 ->
976
977
%           emit(["decode(Type,Data0) ->",nl]),
977
 
%           emit(["{Data,_RestBin} = ?RT_BER:decode(Data0",driver_parameter(),"),",nl]);
 
978
%           emit(["{Data,_RestBin} = ?RT_BER:decode(Data0",nif_parameter(),"),",nl]);
978
979
%       _ ->
979
980
%           emit(["decode(Type,Data) ->",nl])
980
981
%     end,
991
992
            {ber_bin_v2,false} ->
992
993
                io_lib:format("~s~s~s~n",
993
994
                              ["element(1,?RT_BER:decode(Data",
994
 
                               driver_parameter(),"))"]);
 
995
                               nif_parameter(),"))"]);
995
996
            {ber_bin_v2,true} ->
996
997
                emit(["{Data,Rest} = ?RT_BER:decode(Data0",
997
 
                      driver_parameter(),"),",nl]),
 
998
                      nif_parameter(),"),",nl]),
998
999
                "Data";
999
1000
            _ ->
1000
1001
                "Data"
1130
1131
                          "Data) of",nl]),
1131
1132
                    EmitCaseClauses(),
1132
1133
                    emit(["decode_part(Type,Data0) ->",nl]),
1133
 
                    Driver =
1134
 
                        case lists:member(driver,get(encoding_options)) of
1135
 
                            true ->
1136
 
                                ",driver";
1137
 
                            _ -> ""
1138
 
                        end,
1139
 
                    emit(["  case catch decode_inc_disp(Type,element(1,?RT_BER:decode(Data0",Driver,"))) of",nl]),
 
1134
                    emit(["  case catch decode_inc_disp(Type,element(1,"
 
1135
                          "?RT_BER:decode(Data0",nif_parameter(),"))) of",nl]),
1140
1136
%                         "  {Data,_RestBin} = ?RT_BER:decode(Data0),",nl,
1141
1137
%                         "  case catch decode_inc_disp(Type,Data) of",nl]),
1142
1138
                    EmitCaseClauses();
1179
1175
    emit(["decode_partial_inc_disp(Type,_Data) ->",nl,
1180
1176
          "  exit({error,{asn1,{undefined_type,Type}}}).",nl]).
1181
1177
 
1182
 
driver_parameter() ->
 
1178
nif_parameter() ->
1183
1179
    Options = get(encoding_options),
1184
 
    case lists:member(driver,Options) of
1185
 
        true ->
1186
 
            ",driver";
1187
 
        _ -> ""
 
1180
    case {lists:member(driver,Options),lists:member(nif,Options)} of
 
1181
        {true,_} -> ",nif";
 
1182
        {_,true} -> ",nif";
 
1183
        _ ->  ""
1188
1184
    end.
1189
1185
 
1190
1186
gen_wrapper() ->
1340
1336
        Y ->
1341
1337
            Fid = get(gen_file_out),
1342
1338
            file:close(Fid),
1343
 
            asn1ct:report_verbose("--~p--~n",
1344
 
                      [{generated,lists:concat([get(outfile),".hrl"])}],
1345
 
                      Options),
 
1339
            asn1ct:verbose("--~p--~n",
 
1340
                           [{generated,lists:concat([get(outfile),".hrl"])}],
 
1341
                           Options),
1346
1342
            Y
1347
1343
    end.
1348
1344
 
1525
1521
    emit({"-module('",Mod,"').",nl}),
1526
1522
    put(currmod,Mod),
1527
1523
    %emit({"-compile(export_all).",nl}),
1528
 
    case Hrl of
1529
 
        0 -> true;
 
1524
    case {Hrl,lists:member(inline,get(encoding_options))} of
 
1525
        {0,_} -> true;
 
1526
        {_,true} -> true;
1530
1527
        _ -> 
1531
1528
            emit({"-include(\"",Mod,".hrl\").",nl})
1532
1529
    end,