#include "lockstack.h" #include "lib/printf.h" jove_owned_obj_t* lockstack_push(lockstack_t *stack, jove_owned_obj_t *obj) { if(stack->depth == LOCKSTACK_MAX) { klogf("lock stack exceeds %i entries\n", LOCKSTACK_MAX); return NULL; } if(obj == NULL) return obj; stack->stack[stack->depth++] = obj; return obj; } jove_obj_t* lockstack_pop(lockstack_t *stack) { return obj_release(stack->stack[--stack->depth]); } void lockstack_popall(lockstack_t *stack) { for(size_t i = 0; i < stack->depth; i++) obj_release(stack->stack[i]); stack->depth = 0; }