Files
corelang/generated.c
Krzosa Karol 042127239e AST idea
2022-05-07 15:48:53 +02:00

50 lines
1.0 KiB
C

function void decl_dll_list_push(Decl*l,Decl*node){
if (l->list_decl.first==0){
l->list_decl.first=l->list_decl.last=node;
node->prev=0;
node->next=0;
}
else {
l->list_decl.last->next=node;
node->prev=l->list_decl.last;
node->next=0;
l->list_decl.last=node;
}
node->parent=l;
}
function void decl_dll_list_push_front(Decl*l,Decl*node){
if (l->list_decl.first==0){
l->list_decl.first=l->list_decl.last=node;
node->prev=0;
node->next=0;
}
else {
node->next=l->list_decl.first;
l->list_decl.first->prev=node;
node->prev=0;
l->list_decl.first=node;
}
node->parent=l;
}
function void decl_list_remove(Decl*l,Decl*node){
if (l->list_decl.first==l->list_decl.last){
assert(node==l->list_decl.last);
l->list_decl.first=l->list_decl.last=0;
}
else if (l->list_decl.last==node){
l->list_decl.last=l->list_decl.last->prev;
l->list_decl.last->next=0;
}
else if (l->list_decl.first==node){
l->list_decl.first=l->list_decl.first->next;
l->list_decl.first->prev=0;
}
else {
node->prev->next=node->next;
node->next->prev=node->prev;
}
node->parent=0;
node->prev=0;
node->next=0;
}