/************************************************************************/
/* Copyright 1998 MBARI							*/
/************************************************************************/
#ifndef _SYSTEMALARMS_H
#define _SYSTEMALARMS_H
static char SystemAlarms_h_id[] = "$Header: /u/oreilly/rov/tmacs/RCS/SystemAlarms.h,v 1.6 1998/12/18 21:07:21 oreilly Exp $";

/*
$Log: SystemAlarms.h,v $
Revision 1.6  1998/12/18 21:07:21  oreilly
Added documentation

Revision 1.5  1997/10/03 09:33:19  oreilly
*** empty log message ***

 * Revision 1.4  97/06/16  16:01:02  16:01:02  oreilly (Thomas C. O'Reilly)
 * *** empty log message ***
 * 
 * Revision 1.3  97/03/20  12:37:10  12:37:10  oreilly (Thomas C. O'Reilly)
 * *** empty log message ***
 * 
 * Revision 1.2  96/10/28  09:14:06  09:14:06  oreilly (Thomas C. O'Reilly)
 * *** empty log message ***
 * 
*/

#include "ErrorHandler.h"
#include "SList.h"
#include "Alarm.h"
#include "array.h"

/*
CLASS 
SystemAlarms

DESCRIPTION
SystemAlarms loads and maintains list of all Alarm objects.

AUTHOR
Tom O'Reilly
*/
class SystemAlarms : public ErrorHandler
{
  public:
  
  SystemAlarms(const char *fileName);
  ~SystemAlarms();

  ///////////////////////////////////////////////////////////////////
  // Create Alarm object based on specification in file
  Alarm *parseAlarm(
		    FILE *fp,
		    MBool *error,
		    char *errorBuf
		    );

  int nAlarms() {
    return alarmList.length();
  }

  ///////////////////////////////////////////////////////////////////
  // Find alarm with specified name
  Alarm *find(const char *name);

  ///////////////////////////////////////////////////////////////////
  // Save alarm attributes to a file
  int save(const char *filename);

  ///////////////////////////////////////////////////////////////////
  // Load alarm attributes from a file
  int load(const char *filename);

  ///////////////////////////////////////////////////////////////////
  // Return name of alarm file
  const char *fileName()
  {
    return (const char *)_fileName;
  }
  
  SList<Alarm *>alarmList;
  
  protected:

  const char *includeDirective(char *directory, char *buf);
  char *_fileName;
};




#endif
