#ifndef GROUP_H
#define GROUP_H

typedef struct stim_elt
{
	char *s;
	struct stim_elt *left, *right;
} stim_elt;

typedef struct stim
{
	stim_elt *tree;
	struct stim *next;
} stim;

typedef struct stim_list
{
	stim *head, *tail;
	int size;
} stim_list;

typedef struct resp
{
	int lowerflag, upperflag, lower, upper, status_change, priority;
	char *response;
	struct resp *next;
} resp;

typedef struct resp_list
{
	resp *head, *tail;
	int size, priority_total;
} resp_list;

typedef struct group
{
	char *name;

	stim_list *s;
	resp_list *r;
	struct group *next;
} group;

typedef struct group_list
{
	group *head, *tail;
	int size;
} group_list;

group_list *group_load (char *);
void group_save (group_list *, char *);
void group_burn (group_list *);
void group_add (group_list *, char *);
void group_delete (group_list *, group *);
group *group_find (group_list *, char *);

#endif