assert(clss && (clss->type_op == type_class));
for (i = 1; i < (ARR_LEN (clss->attr.ca.members))-1; i++)
if (clss->attr.ca.members[i+1] == member) {
- clss->attr.ca.members[i+1] = NULL;
break;
}
+ for(i++; i < (ARR_LEN (clss->attr.ca.members))-1; i++)
+ clss->attr.ca.members[i] = clss->attr.ca.members[i+1];
+ --_ARR_DESCR((clss->attr.ca.members))->nelts;
}
void add_class_subtype (type *clss, type *subtype) {
assert(clss && (clss->type_op == type_class));
for (i = 1; i < (ARR_LEN (clss->attr.ca.subtypes))-1; i++)
if (clss->attr.ca.subtypes[i+1] == subtype) {
- clss->attr.ca.subtypes[i+1] = NULL;
break;
}
+ for(i++; i < (ARR_LEN (clss->attr.ca.subtypes))-1; i++)
+ clss->attr.ca.subtypes[i] = clss->attr.ca.subtypes[i+1];
+ --_ARR_DESCR((clss->attr.ca.subtypes))->nelts;
}
void add_class_supertype (type *clss, type *supertype) {
assert(clss && (clss->type_op == type_class));
for (i = 1; i < (ARR_LEN (clss->attr.ca.supertypes))-1; i++)
if (clss->attr.ca.supertypes[i+1] == supertype) {
- clss->attr.ca.supertypes[i+1] = NULL;
break;
}
+ for(i++; i < (ARR_LEN (clss->attr.ca.supertypes))-1; i++)
+ clss->attr.ca.supertypes[i] = clss->attr.ca.supertypes[i+1];
+ --_ARR_DESCR((clss->attr.ca.supertypes))->nelts;
}
/* typecheck */
bool is_class_type(type *clss) {
void remove_struct_member(type *strct, entity *member) {
int i;
assert(strct && (strct->type_op == type_struct));
- for (i = 1; i < (ARR_LEN (strct->attr.ca.members))-1; i++)
- if (strct->attr.ca.members[i+1] == member) {
- strct->attr.ca.members[i+1] = NULL;
+ for (i = 1; i < (ARR_LEN (strct->attr.sa.members))-1; i++)
+ if (strct->attr.sa.members[i+1] == member) {
break;
}
+ for(i++; i < (ARR_LEN (strct->attr.sa.members))-1; i++)
+ strct->attr.sa.members[i] = strct->attr.sa.members[i+1];
+ --_ARR_DESCR((strct->attr.sa.members))->nelts;
}
/* typecheck */
bool is_struct_type(type *strct) {
void remove_union_member(type *uni, entity *member) {
int i;
assert(uni && (uni->type_op == type_union));
- for (i = 1; i < (ARR_LEN (uni->attr.ca.members))-1; i++)
- if (uni->attr.ca.members[i+1] == member) {
- uni->attr.ca.members[i+1] = NULL;
+ for (i = 1; i < (ARR_LEN (uni->attr.ua.members))-1; i++)
+ if (uni->attr.ua.members[i+1] == member) {
break;
}
+ for(i++; i < (ARR_LEN (uni->attr.ua.members))-1; i++)
+ uni->attr.ua.members[i] = uni->attr.ua.members[i+1];
+ --_ARR_DESCR((uni->attr.ua.members))->nelts;
}
/* typecheck */