示例#1
0
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);
        }
    }
}
示例#2
0
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);
}
示例#3
0
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;
}
示例#4
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);
    }
}