#ifndef UCTTUPLEMGMT_H
#define UCTTUPLEMGMT_H

#define MAX_TUPLE_LENGTH	30

enum {INT, INTA, FLOAT, FLOATA, STRING, PTR};
enum {OUT, IN, RD, EXEC};

class Tuple {
public:
  Tuple();
  ~Tuple();
  int op;
  int datasize;
  char * key;
  int keysize;
  char * data;
  int (*info)[3];
};

class List {
public:
  void Insert (Tuple * t);
  void Remove ();
  Tuple * Iterate();
  void Reset();
  Tuple * FindTuple(Tuple * tester, int op);
  List();
  ~List();

  struct node {
    Tuple * tuple;
    node * next;
    node * prev;
  };

  node * head;
  node * index;
};

extern List library[];

Tuple* BuildTuple(char*, int, int);
void UpdatePendingList(Tuple**, int*);
int TestForEndMsg(Tuple *);
Tuple* ProcessMsg(Tuple*, int, int, int*, int*);

#endif
