#ifndef _RULEP_H_
#define _RULEP_H_

#include <sys/types.h>

#include "rule.h"

typedef struct st_AlRuleMember {
	AlRMType	m_kind;
	union {
		AlRuleAssoc	assoc;
		AlRuleField	field;
	} type;
	AlRuleAssoc		container;
	AlRuleMember            previous;
	AlRuleMember		sibling;
	/* Might want to add something in reverse */
} AlRuleMemberSt;

typedef struct st_AlRuleAssoc {
	AlRAType	a_type;
	AlRuleMember	contents;
	AlRuleMember	as_member;
} AlRuleAssocSt;

typedef struct st_AlRuleField {
	AlRFType	f_type;
	char		*value;
	AlFieldCore	fc;
	char		*op_name;
	FieldOperatorProc	*op_func;
	AlRuleMember	as_member;
} AlRuleFieldSt;

typedef struct	st_AlRule {
	AlRuleMember	predicate;
	Darray		actions;
	time_t		creation,
			update;
	r_state		state;
	char		*name;
} AlRuleSt;

#endif /* _RULEP_H_ */
