void queue_iterator(Queue *queue, iter_action action) { if (queue != 0 && action != 0) { const Node *ptr = queue->top; while (ptr != 0) { action(node_get_ptr(ptr)); ptr = node_get_next(ptr); } } }
uint8_t check_time_args(node_ref args) { // the arguments are first PERIOD then TRIGGER_TIME if(!args) return FAILURE; //there are no thresholds, so it didn't trigger time_ref period = (time_ref)node_get_val(args); args = node_get_next(args); if(!args) return FAILURE; time_ref trigger = (time_ref)node_get_val(args); return check_time(period, trigger); }
Article* queue_pop(Queue *queue) { if (!queue_isempty(queue)) { Article *ptr = node_get_ptr(queue->top); Node *old_top = queue->top; queue->top = node_get_next(queue->top); node_remove(old_top); // Don't delete article in the node queue->size--; return ptr; } return 0; }
void queue_delete(Queue *queue) { if (queue != 0) { Node *ptr = queue->top; Node *last; while (ptr != 0) { last = ptr; ptr = node_get_next(ptr); node_delete(last); } free(queue); } }