#include "rs.h"
#include "ru.h"
#include "ruleeditor.h"
#include "global.h"
#include "callback.h"
#include "al.h"
#include "rule.h"
#include "assert.h"
#include "rem.h"

  AlRule        Rule_GR;
  unsigned  	RuleNumber_GR;
  unsigned  	EditOrCreate_GR;

  char *       	RuleSetName_GR;
  AlRuleSet 	RuleSet_GR;
  Darray       	Rules_GR;


main(argc,argv)
int argc;
char** argv; 
{
  AlRule RetRule;
  reid GR;
  if (argc==1) {
    re_Usage();
    exit(0);
  }
  Al_init();
  rs_Init(&argc,argv);
  ru_Init(&argc,argv);
  GR=re_ID_create(ORIG_COMMAND_LINE,
		  Rule_GR,
		  RuleSetName_GR,
		  ruleeditor_Save,
		  ruleeditor_Exit,
		  NULL,
		  &argc,
		  argv,
		  NULL);
  re_Editor_create(GR);
}

/*----------------------------------------*/
void ruleeditor_Save(GR,cd)
reid GR;
VOIDP cd;
{
  AlRule RetRule;
  assert(GR);
  RetRule=re_ID_get_rule(GR);
  if (EditOrCreate_GR==RU_EDIT) {
    AlRuleSet_put_rule_at_index(RuleSet_GR,
				RetRule,
				RuleNumber_GR-1);
    AlRuleSet_remove_rule(RuleSet_GR,RuleNumber_GR);
    printf("Rule Editor:replacing modified rule\n");
  }
  else {
    AlRuleSet_add_rule_to_end(RuleSet_GR,RetRule);
    printf("Rule Editor:adding new rule\n");
  }
  AlRSreg_save(RuleSetName_GR);
}


/*----------------------------------------*/
void ruleeditor_Exit(GR,cd)
reid GR;
VOIDP cd;
{
  Al_cleanup();
  exit(0);
}
