Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Zwinkau
libfirm
Commits
6a222c1d
Commit
6a222c1d
authored
Apr 29, 2005
by
Götz Lindenmaier
Browse files
more access functions
[r5743]
parent
70128011
Changes
2
Hide whitespace changes
Inline
Side-by-side
ir/tr/type.c
View file @
6a222c1d
...
...
@@ -826,6 +826,14 @@ type *get_class_subtype (type *clss, int pos) {
assert
(
pos
>=
0
&&
pos
<
get_class_n_subtypes
(
clss
));
return
clss
->
attr
.
ca
.
subtypes
[
pos
]
=
skip_tid
(
clss
->
attr
.
ca
.
subtypes
[
pos
]);
}
int
get_class_subtype_index
(
type
*
clss
,
const
type
*
subclass
)
{
int
i
,
n_subtypes
=
get_class_n_subtypes
(
clss
);
assert
(
is_Class_type
(
subclass
));
for
(
i
=
0
;
i
<
n_subtypes
;
++
i
)
{
if
(
get_class_subtype
(
clss
,
i
)
==
subclass
)
return
i
;
}
return
-
1
;
}
void
set_class_subtype
(
type
*
clss
,
type
*
subtype
,
int
pos
)
{
assert
(
clss
&&
(
clss
->
type_op
==
type_class
));
assert
(
pos
>=
0
&&
pos
<
get_class_n_subtypes
(
clss
));
...
...
@@ -859,10 +867,9 @@ int get_class_n_supertypes (const type *clss) {
return
(
ARR_LEN
(
clss
->
attr
.
ca
.
supertypes
));
}
int
get_class_supertype_index
(
type
*
clss
,
type
*
super_clss
)
{
int
i
;
assert
(
clss
&&
(
clss
->
type_op
==
type_class
));
int
i
,
n_supertypes
=
get_class_n_supertypes
(
clss
);
assert
(
super_clss
&&
(
super_clss
->
type_op
==
type_class
));
for
(
i
=
0
;
i
<
get_class_
n_supertypes
(
clss
)
;
i
++
)
for
(
i
=
0
;
i
<
n_supertypes
;
i
++
)
if
(
get_class_supertype
(
clss
,
i
)
==
super_clss
)
return
i
;
return
-
1
;
...
...
@@ -890,14 +897,14 @@ void remove_class_supertype(type *clss, type *supertype) {
}
const
char
*
get_peculiarity_string
(
peculiarity
p
)
{
#define X(a) case a: return #a
switch
(
p
)
{
case
peculiarity_description
:
return
"peculiarity_description"
;
case
peculiarity_inherited
:
return
"peculiarity_inherited"
;
default:
return
"peculiarity_existent"
;
X
(
peculiarity_description
);
X
(
peculiarity_inherited
);
X
(
peculiarity_existent
);
}
#undef X
return
"invalid peculiarity"
;
}
peculiarity
get_class_peculiarity
(
const
type
*
clss
)
{
...
...
ir/tr/type.h
View file @
6a222c1d
...
...
@@ -432,6 +432,12 @@ int get_class_n_subtypes (const type *clss);
/** Gets the subtype at position pos, 0 <= pos < n_subtype. */
type
*
get_class_subtype
(
type
*
clss
,
int
pos
);
/** Returns the index to access subclass as subtype of class.
*
* If subclass is no direct subtype of class returns -1.
*/
int
get_class_subtype_index
(
type
*
clss
,
const
type
*
subclass
);
/** Sets the subtype at position pos, 0 <= pos < n_subtype.
*
* Does not set the corresponding supertype relation for subtype: this might
...
...
@@ -451,7 +457,10 @@ void add_class_supertype (type *clss, type *supertype);
/** Returns the number of supertypes */
int
get_class_n_supertypes
(
const
type
*
clss
);
/** Returns the index of an supertype in a type. */
/** Returns the index to access superclass as supertype of class.
*
* If superclass is no direct supertype of class returns -1.
*/
int
get_class_supertype_index
(
type
*
clss
,
type
*
super_clss
);
/** Gets the supertype at position pos, 0 <= pos < n_supertype. */
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment