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

« back to all changes in this revision

Viewing changes to lib/edoc/src/edoc_types.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:
16
16
%%
17
17
%% @private
18
18
%% @copyright 2001-2003 Richard Carlsson
19
 
%% @author Richard Carlsson <richardc@it.uu.se>
 
19
%% @author Richard Carlsson <carlsson.richard@gmail.com>
20
20
%% @see edoc
21
21
%% @end
22
22
%% =====================================================================
25
25
 
26
26
-module(edoc_types).
27
27
 
28
 
-export([is_predefined/1, to_ref/1, to_xml/2, to_label/1, arg_names/1,
29
 
         set_arg_names/2, arg_descs/1, range_desc/1]).
 
28
-export([is_predefined/2, is_new_predefined/2, is_predefined_otp_type/2,
 
29
         to_ref/1, to_xml/2, to_label/1, arg_names/1, set_arg_names/2,
 
30
         arg_descs/1, range_desc/1]).
30
31
 
31
32
%% @headerfile "edoc_types.hrl"
32
33
 
33
34
-include("edoc_types.hrl").
34
 
-include("xmerl.hrl").
35
 
 
36
 
 
37
 
is_predefined(any) -> true;
38
 
is_predefined(atom) -> true;
39
 
is_predefined(binary) -> true;
40
 
is_predefined(bool) -> true;
41
 
is_predefined(char) -> true;
42
 
is_predefined(cons) -> true;
43
 
is_predefined(deep_string) -> true;
44
 
is_predefined(float) -> true;
45
 
is_predefined(function) -> true;
46
 
is_predefined(integer) -> true;
47
 
is_predefined(list) -> true;
48
 
is_predefined(nil) -> true;
49
 
is_predefined(none) -> true;
50
 
is_predefined(number) -> true;
51
 
is_predefined(pid) -> true;
52
 
is_predefined(port) -> true;
53
 
is_predefined(reference) -> true;
54
 
is_predefined(string) -> true;
55
 
is_predefined(term) -> true;
56
 
is_predefined(tuple) -> true;
57
 
is_predefined(_) -> false.
 
35
-include_lib("xmerl/include/xmerl.hrl").
 
36
 
 
37
 
 
38
is_predefined(any, 0) -> true;
 
39
is_predefined(atom, 0) -> true;
 
40
is_predefined(binary, 0) -> true;
 
41
is_predefined(bool, 0) -> true;    % kept for backwards compatibility
 
42
is_predefined(char, 0) -> true;
 
43
is_predefined(cons, 2) -> true;
 
44
is_predefined(deep_string, 0) -> true;
 
45
is_predefined(float, 0) -> true;
 
46
is_predefined(function, 0) -> true;
 
47
is_predefined(integer, 0) -> true;
 
48
is_predefined(list, 0) -> true;
 
49
is_predefined(list, 1) -> true;
 
50
is_predefined(nil, 0) -> true;
 
51
is_predefined(none, 0) -> true;
 
52
is_predefined(no_return, 0) -> true;
 
53
is_predefined(number, 0) -> true;
 
54
is_predefined(pid, 0) -> true;
 
55
is_predefined(port, 0) -> true;
 
56
is_predefined(reference, 0) -> true;
 
57
is_predefined(string, 0) -> true;
 
58
is_predefined(term, 0) -> true;
 
59
is_predefined(tuple, 0) -> true;
 
60
is_predefined(F, A) -> is_new_predefined(F, A).
 
61
 
 
62
%% Should eventually be coalesced with is_predefined/2.
 
63
is_new_predefined(arity, 0) -> true;
 
64
is_new_predefined(bitstring, 0) -> true;
 
65
is_new_predefined(boolean, 0) -> true;
 
66
is_new_predefined(byte, 0) -> true;
 
67
is_new_predefined(iodata, 0) -> true;
 
68
is_new_predefined(iolist, 0) -> true;
 
69
is_new_predefined(maybe_improper_list, 0) -> true;
 
70
is_new_predefined(maybe_improper_list, 2) -> true;
 
71
is_new_predefined(mfa, 0) -> true;
 
72
is_new_predefined(module, 0) -> true;
 
73
is_new_predefined(neg_integer, 0) -> true;
 
74
is_new_predefined(node, 0) -> true;
 
75
is_new_predefined(non_neg_integer, 0) -> true;
 
76
is_new_predefined(nonempty_improper_list, 2) -> true;
 
77
is_new_predefined(nonempty_list, 0) -> true;
 
78
is_new_predefined(nonempty_list, 1) -> true;
 
79
is_new_predefined(nonempty_maybe_improper_list, 0) -> true;
 
80
is_new_predefined(nonempty_maybe_improper_list, 2) -> true;
 
81
is_new_predefined(nonempty_string, 0) -> true;
 
82
is_new_predefined(pos_integer, 0) -> true;
 
83
is_new_predefined(timeout, 0) -> true;
 
84
is_new_predefined(_, _) -> false.
 
85
 
 
86
%% The following types will be removed later, but they are currently
 
87
%% kind of built-in.
 
88
is_predefined_otp_type(array, 0) -> true;
 
89
is_predefined_otp_type(dict, 0) -> true;
 
90
is_predefined_otp_type(digraph, 0) -> true;
 
91
is_predefined_otp_type(gb_set, 0) -> true;
 
92
is_predefined_otp_type(gb_tree, 0) -> true;
 
93
is_predefined_otp_type(queue, 0) -> true;
 
94
is_predefined_otp_type(set, 0) -> true;
 
95
is_predefined_otp_type(_, _) -> false.
58
96
 
59
97
to_ref(#t_typedef{name = N}) ->
60
98
    to_ref(N);
89
127
to_xml(#t_type{name = N, args = As}, Env) ->
90
128
    Predef = case N of
91
129
                 #t_name{module = [], name = T} ->
92
 
                     is_predefined(T);
 
130
                     NArgs = length(As),
 
131
                     (is_predefined(T, NArgs)
 
132
                      orelse is_predefined_otp_type(T, NArgs));
93
133
                 _ ->
94
134
                     false
95
135
             end,
107
147
    {list, [wrap_utype(T, Env)]};
108
148
to_xml(#t_nil{}, _Env) ->
109
149
    nil;
 
150
to_xml(#t_paren{type = T}, Env) ->
 
151
    {paren, [wrap_utype(T, Env)]};
 
152
to_xml(#t_nonempty_list{type = T}, Env) ->
 
153
    {nonempty_list, [wrap_utype(T, Env)]};
110
154
to_xml(#t_atom{val = V}, _Env) ->
111
155
    {atom, [{value, io_lib:write(V)}], []};
112
156
to_xml(#t_integer{val = V}, _Env) ->
113
157
    {integer, [{value, integer_to_list(V)}], []};
 
158
to_xml(#t_integer_range{from = From, to = To}, _Env) ->
 
159
    {range, [{value, integer_to_list(From)++".."++integer_to_list(To)}], []};
 
160
to_xml(#t_binary{base_size = 0, unit_size = 0}, _Ens) ->
 
161
    {binary, [{value, "<<>>"}], []};
 
162
to_xml(#t_binary{base_size = B, unit_size = 0}, _Ens) ->
 
163
    {binary, [{value, io_lib:fwrite("<<_:~w>>", [B])}], []};
 
164
%to_xml(#t_binary{base_size = 0, unit_size = 8}, _Ens) ->
 
165
%    {binary, [{value, "binary()"}], []};
 
166
to_xml(#t_binary{base_size = 0, unit_size = U}, _Ens) ->
 
167
    {binary, [{value, io_lib:fwrite("<<_:_*~w>>", [U])}], []};
 
168
to_xml(#t_binary{base_size = B, unit_size = U}, _Ens) ->
 
169
    {binary, [{value, io_lib:fwrite("<<_:~w, _:_*~w>>", [B, U])}], []};
114
170
to_xml(#t_float{val = V}, _Env) ->
115
171
    {float, [{value, io_lib:write(V)}], []};
116
172
to_xml(#t_union{types = Ts}, Env) ->
117
 
    {union, map(fun wrap_type/2, Ts, Env)};
 
173
    {union, map(fun wrap_utype/2, Ts, Env)};
118
174
to_xml(#t_record{name = N = #t_atom{}, fields = Fs}, Env) ->
119
175
    {record, [to_xml(N, Env) | map(fun to_xml/2, Fs, Env)]};
120
176
to_xml(#t_field{name = N = #t_atom{}, type = T}, Env) ->