1
-module(mk_ssl_pkix_oid).
5
-define(PKIX_MODULES, ['OTP-PKIX']).
8
{ok, Fd} = file:open("ssl_pkix_oid.erl", [write]),
9
io:fwrite(Fd, "%%% File: ssl_pkix_oid.erl\n"
10
"%%% NB This file has been automatically generated by "
12
"%%% Do not edit it.\n\n", []),
13
io:fwrite(Fd, "-module(ssl_pkix_oid).\n", []),
14
io:fwrite(Fd, "-export([id2atom/1, atom2id/1, all_atoms/0, "
15
"all_ids/0]).\n\n", []),
18
AIds0 = get_atom_ids(?PKIX_MODULES),
20
AIds1 = modify_atoms(AIds0),
21
gen_id2atom(Fd, AIds1),
22
gen_atom2id(Fd, AIds1),
29
get_atom_ids([], AIdss) ->
31
get_atom_ids([M| Ms], AIdss) ->
32
{value, {exports, Exports}} =
33
lists:keysearch(exports, 1, M:module_info()),
35
fun ({info, 0}) -> false;
36
({module_info, 0}) -> false;
37
({encoding_rule, 0}) -> false;
39
case atom_to_list(F) of
40
%% Remove upper-bound (ub-) functions
48
AIds = lists:map(fun(F) -> {F, M:F()} end, As),
49
get_atom_ids(Ms, [AIds| AIdss]).
53
NAS = case atom_to_list(A) of
59
{list_to_atom(NAS), I} end,
62
gen_id2atom(Fd, AIds0) ->
63
AIds1 = lists:keysort(2, AIds0),
67
io_lib:fwrite("id2atom(~p) ->\n ~p", [Id, Atom])
69
io:fwrite(Fd, "~s;\nid2atom(Any)->\n Any.\n\n", [Txt]).
71
gen_atom2id(Fd, AIds0) ->
72
AIds1 = lists:keysort(1, AIds0),
76
io_lib:fwrite("atom2id(~p) ->\n ~p", [Atom, Id])
78
io:fwrite(Fd, "~s;\natom2id(Any)->\n Any.\n\n", [Txt]).
81
Atoms = lists:sort([A || {A, _} <- AIds]),
82
Ids = lists:sort([I || {_, I} <- AIds]),
83
F = fun(X) -> io_lib:fwrite(" ~w", [X]) end,
84
ATxt = "all_atoms() ->\n" ++ join(",\n", lists:map(F, Atoms)),
85
io:fwrite(Fd, "~s.\n\n", [ATxt]),
86
ITxt = "all_ids() ->\n" ++ join(",\n", lists:map(F, Ids)),
87
io:fwrite(Fd, "~s.\n\n", [ITxt]).
89
join(Sep, [H1, H2| T]) ->
90
[H1, Sep| join(Sep, [H2| T])];