+#endif
+int get_union_n_members (type *uni) {
+ assert(uni && (uni->type_op == type_union));
+ return (ARR_LEN (uni->attr.ua.members))-1;
+}
+void add_union_member (type *uni, entity *member) {
+ assert(uni && (uni->type_op == type_union));
+ ARR_APP1 (entity *, uni->attr.ua.members, member);
+}
+entity *get_union_member (type *uni, int pos) {
+ assert(uni && (uni->type_op == type_union));
+ return uni->attr.ua.members[pos+1];
+}
+void set_union_member (type *uni, int pos, entity *member) {
+ assert(uni && (uni->type_op == type_union));
+ uni->attr.ua.members[pos+1] = member;
+}
+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.ua.members))-1; i++)
+ if (uni->attr.ua.members[i+1] == member) {
+ for(i++; i < (ARR_LEN (uni->attr.ua.members))-1; i++)
+ uni->attr.ua.members[i] = uni->attr.ua.members[i+1];
+ ARR_SETLEN(entity*, uni->attr.ua.members, ARR_LEN(uni->attr.ua.members) - 1);
+ break;
+ }
+}