/*
Adriane Boyd

Definitions and declarations for TList class.

*/


#ifndef _TLIST
#define _TLIST

#include <fstream.h>

#define MAX_NAME_LEN 10
#define MAX_LINE_LEN 100

// Linked list element for sentence tokens
struct token
{
	char name[MAX_NAME_LEN];
	char type[MAX_NAME_LEN];
	int term;
	token *next;
};


class TList
{
	public:
		TList();
		~TList();
		void makeEmpty();

		void insertFirst(char [], int);
		void insertFirst(char [], char []);
		void insertLast(char [], int);
		void insertLast(token *);
		void append(TList *);
		void deleteFirst();

		char *getName(int pos);
		char *getType(int pos);
		TList *getRemainder();
		token *getHead();

		int count();
		int termStart();

		void print();
		void printTerms();

		TList *duplicate();
	private:
		token *head;

};

#endif
