/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2010, 2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <stdarg.h>
#include <stdbool.h>
-#include <libpspp/compiler.h>
+#include "libpspp/compiler.h"
/* What kind of message is this? */
enum msg_category
MSG_N_SEVERITIES
};
+const char *msg_severity_to_string (enum msg_severity);
+
/* Combination of a category and a severity for convenience. */
enum msg_class
{
return category * 3 + severity;
}
-/* A file location. */
-struct msg_locator
- {
- char *file_name; /* File name (NULL if none). */
- int line_number; /* Line number (0 if none). */
- };
-
/* A message. */
struct msg
{
enum msg_category category; /* Message category. */
enum msg_severity severity; /* Message severity. */
- struct msg_locator where; /* File location, or (NULL, -1). */
+ char *file_name; /* Name of file containing error, or NULL. */
+ int first_line; /* 1-based line number, or 0 if none. */
+ int last_line; /* 1-based exclusive last line (0=none). */
+ int first_column; /* 1-based first column, or 0 if none. */
+ int last_column; /* 1-based exclusive last column (0=none). */
char *text; /* Error text. */
+ bool shipped; /* True if this message has been emitted */
};
-struct source_stream ;
-
/* Initialization. */
-void msg_init (struct source_stream *, void (*handler) (const struct msg *) );
-
-void msg_done (void);
+void msg_set_handler (void (*handler) (const struct msg *, void *lexer),
+ void *aux);
/* Working with messages. */
struct msg *msg_dup (const struct msg *);
PRINTF_FORMAT (2, 3);
void msg_emit (struct msg *);
+void msg_error (int errnum, const char *format, ...);
+
+
/* Enable and disable messages. */
void msg_enable (void);
void msg_disable (void);
/* Error context. */
-void msg_push_msg_locator (const struct msg_locator *);
-void msg_pop_msg_locator (const struct msg_locator *);
-
bool msg_ui_too_many_errors (void);
void msg_ui_reset_counts (void);
bool msg_ui_any_errors (void);
/* Used in panic situations only. */
-void request_bug_report_and_abort (const char *msg) NO_RETURN;
+void request_bug_report (const char *msg);
#endif /* message.h */