struct union_exp {
ptroff sel;
void *data;
};
Values of sel are assigned sequentially from 0 [[maybe 1 would be better, use 0 for error marks of some kind, but I don't know what they could be needed for...]], in order they are given in union definition. Union values are passed between functions are struct union_exp*