summaryrefslogtreecommitdiffstats
path: root/ast/Ers.h
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2017-12-08 18:59:21 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2017-12-08 18:59:21 (GMT)
commit4432c8d7e1ccb371db03e13cdb5378fceaa5ad04 (patch)
tree52449d211eba99b24d2e4f6e66193f9511c60b59 /ast/Ers.h
parentd8a2dbd825159e4a57ec0c6f4465f62be9e05111 (diff)
downloadblt-4432c8d7e1ccb371db03e13cdb5378fceaa5ad04.zip
blt-4432c8d7e1ccb371db03e13cdb5378fceaa5ad04.tar.gz
blt-4432c8d7e1ccb371db03e13cdb5378fceaa5ad04.tar.bz2
upgrade AST
Diffstat (limited to 'ast/Ers.h')
-rw-r--r--ast/Ers.h245
1 files changed, 245 insertions, 0 deletions
diff --git a/ast/Ers.h b/ast/Ers.h
new file mode 100644
index 0000000..a66fa82
--- /dev/null
+++ b/ast/Ers.h
@@ -0,0 +1,245 @@
+#ifndef ERSINC
+#define ERSINC
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* E r s . h
+
+ * Module name:
+ Ers.h
+
+ * Function:
+ Function header for the Ers routines
+
+ * Description:
+ Should be included by all files using the Ers routines.
+
+ * Language:
+ C
+
+ * Support: Tony Farrell, AAO
+
+ * Copyright (c) Anglo-Australian Telescope Board, 1995.
+ Not to be used for commercial purposes without AATB permission.
+
+ * @(#) $Id: Ers.h,v 1.3 2005/05/17 22:21:19 rkackley Exp $
+
+
+ * History:
+ 04-Aug-1992 - TJF - Original version
+ 25-Sep-1992 - TJF - Update comments
+ 06-Oct-1992 - TJF - Rewrite for complete Ers package.
+ 04-Aug-1993 - TJF - maxsize argument to ErsSPrintf needs a type
+ 28-Sep-1993 - TJF - Use GNUC attribute to flag the ers calls
+ as printf style. Use drama.h for configuration
+ stuff.
+
+ 29-Sep-1993 - TJF - Add Sccs id
+ 06-Mar-1994 - TJF - Add Task Id stuff.
+ 05-Feb-1995 - TJF - Add BROADCAST flag
+ 06-Aug-1996 - TJF - Add const to strings arguments of ErsVSPrintf
+ 30-May-2001 - TJF - Add ErsSetLogRoutine.
+ 15-Jun-2001 - TJF - Add ErsGetTaskId.
+ {@change entry@}
+
+
+ */
+
+#ifdef ERS_STANDALONE
+/*
+ * DRAMA macros and types used by Ers. They are defined here when we
+ * are building ers standalone.
+ */
+#define DVOID void
+#define DVOIDP void *
+#define DPUBLIC extern
+#define DPRIVATE static
+#define DCONSTV const
+#define DCONSTR const
+#define STATUS__OK 0
+#define DPROTOTYPES_OK
+#define DFLOAT_OK
+#define DCONST_I
+typedef long int StatusType;
+#define StatusOkP(_value_) (*(_value_) == STATUS__OK)
+#else
+/*
+ * Include the drama.h file for configuration macros.
+ */
+
+#include "drama.h"
+
+#include "status.h" /* For StatusType etc */
+#endif
+
+/*
+ * Get around problems in Sparc include files, they are not ANSI compatible
+ */
+#if defined(__sparc__) && !defined(sparc)
+#define sparc 1
+#endif
+
+/*
+ * Floating point stuff. Only used in ErsVSPrintf.
+ */
+#ifdef DFLOAT_OK
+/*
+ * These values taken from bsd floatio.h
+ */
+# define ERS_MAXEXP 308
+# define ERS_MAXFRACT 39
+#endif
+
+/*
+ * Constants
+ */
+
+#define ERS_C_LEN 200 /* Maximum length of reported messages */
+#define ERS_C_MAXMSG 30 /* Maximum number of reported messages */
+
+#define ERS_M_NOFMT (1<<0) /* Message flag masks */
+#define ERS_M_HIGHLIGHT (1<<1)
+#define ERS_M_BELL (1<<2)
+#define ERS_M_ALARM (1<<3)
+#define ERS_M_BROADCAST (1<<4)
+
+
+/*
+ * This structure is used to store details of a message
+ */
+typedef struct {
+ StatusType mesStatus; /* Status of message */
+ unsigned int context; /* Context message was written at */
+ int flags; /* Message flags */
+ char message[ERS_C_LEN]; /* The formated message */
+ } ErsMessageType;
+
+typedef DVOIDP ErsTaskIdType;
+
+#ifdef DPROTOTYPES_OK
+/*
+ * This type is that required for log routines - called on each call to
+ * ErsRep with details of a single message.
+ *
+ * The argument "logArg" is a user value supplied when ErsStart is called.
+ * It enables the user to pass any appropriate value to the log routine.
+ */
+typedef DVOID (*ErsLogRoutineType)(
+ DVOIDP logArg, /* Supplied to ErsStart */
+ DCONSTV ErsMessageType * message,/* The message */
+ StatusType * status);
+/*
+ * The type is that requried for the output routine - called to output
+ * the messages to the user. An array of message may be output by one
+ * call, with count being the number of message to output.
+ *
+ * The argument "outArg" is a user value supplied when ErsStart is called.
+ * It enables the user to pass any appropriate value to the log routine.
+ */
+typedef DVOID (*ErsOutRoutineType)(
+ DVOIDP outArg, /* Supplied to ErsStart */
+ unsigned int count, /* Number of messages */
+ DCONSTV ErsMessageType messages[],/* Array of messages */
+ StatusType * status);
+
+
+/*
+ * Function prototypes.
+ *
+ *
+ * We can't define these prorotype in the Ers main module unless we have
+ * stdarg.h.
+ */
+#if !defined(ERS_MAIN) || defined(DSTDARG__OK)
+ DPUBLIC DVOID ErsRep(DCONSTV int flags, StatusType * status,
+ DCONSTV char * string , ...)
+#ifdef __GNUC__
+ __attribute__ ((format (printf, 3, 4)))
+#endif
+ ;
+ DPUBLIC DVOID ErsOut(DCONSTV int flags, StatusType * status,
+ DCONSTV char * string, ...)
+#ifdef __GNUC__
+ __attribute__ ((format (printf, 3, 4)))
+#endif
+ ;
+ DPUBLIC int ErsSPrintf(DCONSTV int maxLength,
+ char *string,
+ DCONSTV char * fmt,...)
+#ifdef __GNUC__
+ __attribute__ ((format (printf, 3, 4)))
+#endif
+ ;
+
+#endif /* DSTDARG_OK */
+
+DPUBLIC ErsTaskIdType ErsStart(
+ ErsOutRoutineType outRoutine,
+ DVOIDP outArg,
+ ErsLogRoutineType logRoutine,
+ DVOIDP logArg,
+ StatusType * status);
+DPUBLIC DVOID ErsStop(StatusType * status);
+DPUBLIC DVOID ErsPush(void);
+DPUBLIC DVOID ErsAnnul(StatusType * status);
+DPUBLIC DVOID ErsFlush(StatusType * status);
+DPUBLIC DVOID ErsClear(StatusType * status);
+DPUBLIC DVOID ErsPop(void);
+DPUBLIC DVOID ErsSetLogRoutine(
+ ErsLogRoutineType logRoutine,
+ DVOIDP logArg,
+ ErsLogRoutineType *oldLogRoutine,
+ DVOIDP *oldLogArg,
+ StatusType * status);
+
+DPUBLIC ErsTaskIdType ErsGetTaskId(StatusType *status);
+DPUBLIC DVOID ErsEnableTask(ErsTaskIdType TaskId,
+ ErsTaskIdType * SavedTaskId);
+DPUBLIC DVOID ErsRestoreTask(ErsTaskIdType TaskId);
+
+
+#ifdef DSTDARG_OK
+# include <stdarg.h>
+#else
+# include <varargs.h>
+#endif
+DPUBLIC int ErsVSPrintf(
+ int maxLength,
+ char *string ,
+ DCONSTV char * fmt0,
+ va_list ap);
+#else
+/* Don't use prorotypes */
+typedef DVOID (*ErsLogRoutineType)();
+typedef DVOID (*ErsOutRoutineType)();
+
+DPUBLIC DVOID ErsRep();
+DPUBLIC DVOID ErsOut();
+
+DPUBLIC DVOID ErsStart();
+DPUBLIC DVOID ErsStop();
+DPUBLIC DVOID ErsPush();
+DPUBLIC DVOID ErsPop();
+DPUBLIC DVOID ErsAnnul();
+DPUBLIC DVOID ErsFlush();
+DPUBLIC DVOID ErsClear();
+DPUBLIC DVOID ErsSetLogRoutine();
+DPUBLIC ErsTaskIdType ErsGetTaskId();
+
+DPUBLIC int ErsVSPrintf();
+DPUBLIC int ErsSPrintf();
+
+DPUBLIC DVOID ErsEnableTask();
+DPUBLIC DVOID ErsRestoreTask();
+
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif