#ifndef _DATA_H_
#define _DATA_H_
#include <sys/types.h>

#include "sysdep.h"
#include "bool.h"
#include "rule.h"
#include "ruleset.h"
#include "msg.h"

#define MT_INDICATOR_FIELD	"MSG-TYPE:"

#ifdef __STDC__
typedef enum EntCode_en {R_LIFE, R_ACT, MSG, PLUGS} EntCode;

extern Bool	AlData_init();
extern Bool	AlData_save_state();
extern Bool	AlData_rule_created(AlRule);
extern Bool	AlData_rule_changed(AlRule, time_t);
extern Bool	AlData_rule_deleted(AlRule);
extern Bool	AlData_ruleset_created(AlRuleSet);
extern Bool	AlData_ruleset_changed(AlRuleSet, int, AlRule, time_t);
extern Bool	AlData_ruleset_deleted(AlRuleSet);
extern NORET	AlData_general_enable(EntCode);
extern NORET	AlData_general_disable(EntCode);
extern Bool 	AlData_ruleset_snapshot();
extern Bool	AlData_rule_snapshot();
extern NORET	AlData_periodic_col_change(time_t, EntCode);
extern NORET	AlData_periodic_col_int(time_t, char *, EntCode);
extern Bool	AlData_set_option(char *);
extern NORET	AlData_rule_tested(AlRule, AlRuleSet, Msg);
extern NORET	AlData_rule_fired(AlRule, AlRuleSet, Msg);
extern NORET	AlData_ruleset_invoked(AlRuleSet, Msg);
extern Bool	AlData_msg_received(Msg);
#else
typedef int	EntCode;
#define R_LIFE	0
#define R_ACT	1
#define MSG	2
#define PLUGS	3

extern Bool	AlData_init();
extern Bool	AlData_save_state();
extern Bool	AlData_rule_created();
extern Bool	AlData_rule_changed();
extern Bool	AlData_rule_deleted();
extern Bool	AlData_ruleset_created();
extern Bool	AlData_ruleset_changed();
extern Bool	AlData_ruleset_deleted();
extern NORET	AlData_general_enable();
extern NORET	AlData_general_disable();
extern Bool 	AlData_ruleset_snapshot();
extern Bool	AlData_rule_snapshot();
extern NORET	AlData_periodic_col_change();
extern NORET	AlData_periodic_col_int();
extern Bool	AlData_set_option();
extern NORET	AlData_rule_tested();
extern NORET	AlData_rule_fired();
extern NORET	AlData_ruleset_invoked();
extern Bool	AlData_msg_received();
#endif

#endif
