48
48
%%--------------------------------------------------------------------
50
get_dimension(X) when record(X, array) ->
50
get_dimension(X) when is_record(X, array) ->
51
51
[element(3, L) || L <- X#array.size].
53
53
%% Should find the name hidden in constructs
54
54
get_id( [{'<identifier>', _LineNo, Id}] ) -> Id;
55
55
get_id( {'<identifier>', _LineNo, Id} ) -> Id;
56
get_id(Id) when list(Id), integer(hd(Id)) -> Id;
57
get_id(X) when record(X, scoped_id) -> X#scoped_id.id;
58
get_id(X) when record(X, array) -> get_id(X#array.id);
56
get_id(Id) when is_list(Id) andalso is_integer(hd(Id)) -> Id;
57
get_id(X) when is_record(X, scoped_id) -> X#scoped_id.id;
58
get_id(X) when is_record(X, array) -> get_id(X#array.id);
59
59
get_id( {'<string_literal>', _LineNo, Id} ) -> Id;
60
60
get_id( {'<wstring_literal>', _LineNo, Id} ) -> Id.
62
62
get_line([{'<identifier>', LineNo, _Id}]) -> LineNo;
63
63
get_line({'<identifier>', LineNo, _Id}) -> LineNo;
64
get_line(X) when record(X, scoped_id) -> X#scoped_id.line;
65
get_line(X) when record(X, module) -> get_line(X#module.id);
66
get_line(X) when record(X, interface) -> get_line(X#interface.id);
67
get_line(X) when record(X, forward) -> get_line(X#forward.id);
68
get_line(X) when record(X, const) -> get_line(X#const.id);
69
get_line(X) when record(X, typedef) -> get_line(X#typedef.id);
70
get_line(X) when record(X, struct) -> get_line(X#struct.id);
71
get_line(X) when record(X, member) -> get_line(X#member.id);
72
get_line(X) when record(X, union) -> get_line(X#union.id);
73
get_line(X) when record(X, case_dcl) -> get_line(X#case_dcl.id);
74
get_line(X) when record(X, enum) -> get_line(X#enum.id);
75
get_line(X) when record(X, enumerator) -> get_line(X#enumerator.id);
76
get_line(X) when record(X, array) -> get_line(X#array.id);
77
get_line(X) when record(X, attr) -> get_line(X#attr.id);
78
get_line(X) when record(X, except) -> get_line(X#except.id);
79
get_line(X) when record(X, op) -> get_line(X#op.id);
80
get_line(X) when record(X, param) -> get_line(X#param.id);
81
get_line(X) when record(X, id_of) -> get_line(X#id_of.id);
64
get_line(X) when is_record(X, scoped_id) -> X#scoped_id.line;
65
get_line(X) when is_record(X, module) -> get_line(X#module.id);
66
get_line(X) when is_record(X, interface) -> get_line(X#interface.id);
67
get_line(X) when is_record(X, forward) -> get_line(X#forward.id);
68
get_line(X) when is_record(X, const) -> get_line(X#const.id);
69
get_line(X) when is_record(X, typedef) -> get_line(X#typedef.id);
70
get_line(X) when is_record(X, struct) -> get_line(X#struct.id);
71
get_line(X) when is_record(X, member) -> get_line(X#member.id);
72
get_line(X) when is_record(X, union) -> get_line(X#union.id);
73
get_line(X) when is_record(X, case_dcl) -> get_line(X#case_dcl.id);
74
get_line(X) when is_record(X, enum) -> get_line(X#enum.id);
75
get_line(X) when is_record(X, enumerator) -> get_line(X#enumerator.id);
76
get_line(X) when is_record(X, array) -> get_line(X#array.id);
77
get_line(X) when is_record(X, attr) -> get_line(X#attr.id);
78
get_line(X) when is_record(X, except) -> get_line(X#except.id);
79
get_line(X) when is_record(X, op) -> get_line(X#op.id);
80
get_line(X) when is_record(X, param) -> get_line(X#param.id);
81
get_line(X) when is_record(X, id_of) -> get_line(X#id_of.id);
83
83
get_line({'or', T1, _T2}) -> get_line(T1);
84
84
get_line({'xor', T1, _T2}) -> get_line(T1);
111
111
%% and the type of a typedef is its name.
114
get_id2(X) when record(X, module) -> get_id(X#module.id);
115
get_id2(X) when record(X, interface) -> get_id(X#interface.id);
116
get_id2(X) when record(X, forward) -> get_id(X#forward.id);
117
get_id2(X) when record(X, const) -> get_id(X#const.id);
118
get_id2(X) when record(X, typedef) -> get_id(hd(X#typedef.id));
119
get_id2(X) when record(X, struct) -> get_id(X#struct.id);
120
get_id2(X) when record(X, member) -> get_id(hd(X#member.id));
121
get_id2(X) when record(X, union) -> get_id(X#union.id);
122
get_id2(X) when record(X, case_dcl) -> get_id(X#case_dcl.id);
123
get_id2(X) when record(X, enum) -> get_id(X#enum.id);
124
get_id2(X) when record(X, enumerator) -> get_id(X#enumerator.id);
125
get_id2(X) when record(X, array) -> get_id(X#array.id);
126
get_id2(X) when record(X, attr) -> get_id(X#attr.id);
127
get_id2(X) when record(X, except) -> get_id(X#except.id);
128
get_id2(X) when record(X, op) -> get_id(X#op.id);
129
get_id2(X) when record(X, param) -> get_id(X#param.id);
130
get_id2(X) when record(X, type_dcl) -> get_id2(X#type_dcl.type);
131
get_id2(X) when record(X, scoped_id) -> ic_symtab:scoped_id_strip(X);
132
get_id2(X) when record(X, preproc) -> get_id(X#preproc.id);
133
get_id2(X) when record(X, id_of) -> get_id2(X#id_of.id);
114
get_id2(X) when is_record(X, module) -> get_id(X#module.id);
115
get_id2(X) when is_record(X, interface) -> get_id(X#interface.id);
116
get_id2(X) when is_record(X, forward) -> get_id(X#forward.id);
117
get_id2(X) when is_record(X, const) -> get_id(X#const.id);
118
get_id2(X) when is_record(X, typedef) -> get_id(hd(X#typedef.id));
119
get_id2(X) when is_record(X, struct) -> get_id(X#struct.id);
120
get_id2(X) when is_record(X, member) -> get_id(hd(X#member.id));
121
get_id2(X) when is_record(X, union) -> get_id(X#union.id);
122
get_id2(X) when is_record(X, case_dcl) -> get_id(X#case_dcl.id);
123
get_id2(X) when is_record(X, enum) -> get_id(X#enum.id);
124
get_id2(X) when is_record(X, enumerator) -> get_id(X#enumerator.id);
125
get_id2(X) when is_record(X, array) -> get_id(X#array.id);
126
get_id2(X) when is_record(X, attr) -> get_id(X#attr.id);
127
get_id2(X) when is_record(X, except) -> get_id(X#except.id);
128
get_id2(X) when is_record(X, op) -> get_id(X#op.id);
129
get_id2(X) when is_record(X, param) -> get_id(X#param.id);
130
get_id2(X) when is_record(X, type_dcl) -> get_id2(X#type_dcl.type);
131
get_id2(X) when is_record(X, scoped_id) -> ic_symtab:scoped_id_strip(X);
132
get_id2(X) when is_record(X, preproc) -> get_id(X#preproc.id);
133
get_id2(X) when is_record(X, id_of) -> get_id2(X#id_of.id);
134
134
get_id2(X) -> get_id(X).
136
get_body(X) when record(X, module) -> X#module.body;
137
get_body(X) when record(X, interface) -> X#interface.body;
138
get_body(X) when record(X, struct) -> X#struct.body;
139
get_body(X) when record(X, union) -> X#union.body;
140
get_body(X) when record(X, enum) -> X#enum.body;
141
get_body(X) when record(X, typedef) -> X#typedef.type; % See Note
142
get_body(X) when record(X, except) -> X#except.body.
136
get_body(X) when is_record(X, module) -> X#module.body;
137
get_body(X) when is_record(X, interface) -> X#interface.body;
138
get_body(X) when is_record(X, struct) -> X#struct.body;
139
get_body(X) when is_record(X, union) -> X#union.body;
140
get_body(X) when is_record(X, enum) -> X#enum.body;
141
get_body(X) when is_record(X, typedef) -> X#typedef.type; % See Note
142
get_body(X) when is_record(X, except) -> X#except.body.
144
get_type(X) when record(X, const) -> X#const.type;
145
get_type(X) when record(X, type_dcl) -> X#type_dcl.type;
146
get_type(X) when record(X, typedef) -> X#typedef.id; % See Note
147
get_type(X) when record(X, member) -> X#member.type;
148
get_type(X) when record(X, union) -> X#union.type;
149
get_type(X) when record(X, case_dcl) -> X#case_dcl.type;
150
get_type(X) when record(X, sequence) -> X#sequence.type;
151
get_type(X) when record(X, attr) -> X#attr.type;
152
get_type(X) when record(X, op) -> X#op.type;
153
get_type(X) when record(X, param) -> X#param.type.
144
get_type(X) when is_record(X, const) -> X#const.type;
145
get_type(X) when is_record(X, type_dcl) -> X#type_dcl.type;
146
get_type(X) when is_record(X, typedef) -> X#typedef.id; % See Note
147
get_type(X) when is_record(X, member) -> X#member.type;
148
get_type(X) when is_record(X, union) -> X#union.type;
149
get_type(X) when is_record(X, case_dcl) -> X#case_dcl.type;
150
get_type(X) when is_record(X, sequence) -> X#sequence.type;
151
get_type(X) when is_record(X, attr) -> X#attr.type;
152
get_type(X) when is_record(X, op) -> X#op.type;
153
get_type(X) when is_record(X, param) -> X#param.type.
154
154
%%get_type(X) when record(X, id_of) -> get_type(X#id_of.type).
156
156
%% Temporary place
157
get_tk(X) when record(X, interface) -> X#interface.tk;
158
get_tk(X) when record(X, forward) -> X#forward.tk;
159
get_tk(X) when record(X, const) -> X#const.tk;
160
get_tk(X) when record(X, type_dcl) -> X#type_dcl.tk;
161
get_tk(X) when record(X, typedef) -> X#typedef.tk;
162
get_tk(X) when record(X, struct) -> X#struct.tk;
163
get_tk(X) when record(X, union) -> X#union.tk;
164
get_tk(X) when record(X, enum) -> X#enum.tk;
165
get_tk(X) when record(X, attr) -> X#attr.tk;
166
get_tk(X) when record(X, except) -> X#except.tk;
167
get_tk(X) when record(X, op) -> X#op.tk;
168
get_tk(X) when record(X, id_of) -> X#id_of.tk;
169
get_tk(X) when record(X, param) -> X#param.tk.
157
get_tk(X) when is_record(X, interface) -> X#interface.tk;
158
get_tk(X) when is_record(X, forward) -> X#forward.tk;
159
get_tk(X) when is_record(X, const) -> X#const.tk;
160
get_tk(X) when is_record(X, type_dcl) -> X#type_dcl.tk;
161
get_tk(X) when is_record(X, typedef) -> X#typedef.tk;
162
get_tk(X) when is_record(X, struct) -> X#struct.tk;
163
get_tk(X) when is_record(X, union) -> X#union.tk;
164
get_tk(X) when is_record(X, enum) -> X#enum.tk;
165
get_tk(X) when is_record(X, attr) -> X#attr.tk;
166
get_tk(X) when is_record(X, except) -> X#except.tk;
167
get_tk(X) when is_record(X, op) -> X#op.tk;
168
get_tk(X) when is_record(X, id_of) -> X#id_of.tk;
169
get_tk(X) when is_record(X, param) -> X#param.tk.
172
172
%% Get idlist returns the list of identifiers found in typedefs, case
174
get_idlist(X) when record(X, typedef) -> X#typedef.id;
175
get_idlist(X) when record(X, member) -> X#member.id;
176
get_idlist(X) when record(X, case_dcl) -> X#case_dcl.label;
177
get_idlist(X) when record(X, attr) -> X#attr.id.
180
is_oneway(X) when record(X, op) ->
174
get_idlist(X) when is_record(X, typedef) -> X#typedef.id;
175
get_idlist(X) when is_record(X, member) -> X#member.id;
176
get_idlist(X) when is_record(X, case_dcl) -> X#case_dcl.label;
177
get_idlist(X) when is_record(X, attr) -> X#attr.id.
180
is_oneway(X) when is_record(X, op) ->
181
181
case X#op.oneway of
182
182
{oneway, _} -> true;
252
get_type_code2(_, _, X) when record(X, struct) -> X#struct.tk;
253
get_type_code2(_, _, X) when record(X, union) -> X#union.tk;
254
get_type_code2(_, _, X) when record(X, enum) -> X#enum.tk;
255
get_type_code2(_, _, X) when record(X, attr) -> X#attr.tk;
256
get_type_code2(_, _, X) when record(X, except) -> X#except.tk;
257
get_type_code2(_, _, X) when record(X, op) -> X#op.tk;
258
get_type_code2(_, _, X) when record(X, id_of) -> X#id_of.tk;
259
get_type_code2(_, _, X) when record(X, param) -> X#param.tk;
252
get_type_code2(_, _, X) when is_record(X, struct) -> X#struct.tk;
253
get_type_code2(_, _, X) when is_record(X, union) -> X#union.tk;
254
get_type_code2(_, _, X) when is_record(X, enum) -> X#enum.tk;
255
get_type_code2(_, _, X) when is_record(X, attr) -> X#attr.tk;
256
get_type_code2(_, _, X) when is_record(X, except) -> X#except.tk;
257
get_type_code2(_, _, X) when is_record(X, op) -> X#op.tk;
258
get_type_code2(_, _, X) when is_record(X, id_of) -> X#id_of.tk;
259
get_type_code2(_, _, X) when is_record(X, param) -> X#param.tk;
261
get_type_code2(G, N, X) when record(X, member) ->
261
get_type_code2(G, N, X) when is_record(X, member) ->
262
262
ET = get_type_code(G, N, element(2,X)),
263
263
Id = element(3,X),
268
268
case element(1,Head) of
270
270
get_array_tc(ET, element(3,Head));