view src/parallel_execution/DebugWorker/TaskIterator.c @ 1015:e6778c866876

add DebugWorker and DebugTaskManager
author Takato Matsuoka <t.matsuoka@cr.ie.u-ryukyu.ac.jp>
date Tue, 18 Jan 2022 19:54:28 +0900
parents
children 793b21a8ea12
line wrap: on
line source

#include <stdio.h>
#include "../context.h"
#include "TaskIterator.h"
#include "state_db.h"

TaskIterator* createQueueIterator(Element* elements, StateDB s, TaskIterator* prev) {
    TaskIterator* new = (TaskIterator*)calloc(1, sizeof(TaskIterator));
    if (!new) exit(1);
    new->prev  = prev;
    new->state = s; //
    new->list  = elements;
    return new;
}

Element* takeNextIterator(TaskIterator* iterator) {
  struct Element* elem = iterator->list;
  if (!elem) {
    return NULL;
  }
  struct Element* next = elem->next;
  if (next == NULL) {
    return NULL;
  }
  iterator->list = next;
  return next;
}

int iteratorLength(TaskIterator* iterator) {
  int i = 0;
  struct Element* elem = iterator->list;
  for(; elem; elem = elem->next) i++;
  return i;
}

void freeIterator(TaskIterator* iterator) {
  free(iterator);
}