X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flibpspp%2Fmessage.h;h=d46ea97d60505a8bed5e73cc6887570ed8add29a;hb=945fd370f9fb880b310fb88f868ad47c2ae84533;hp=9dae1e40ac98396fcfa3d834a17c2346e21c68d0;hpb=1b47c4afe993f715c03e7392427b0b8919a26d4e;p=pspp-builds.git diff --git a/src/libpspp/message.h b/src/libpspp/message.h index 9dae1e40..d46ea97d 100644 --- a/src/libpspp/message.h +++ b/src/libpspp/message.h @@ -1,5 +1,5 @@ /* PSPP - computes sample statistics. - Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. Written by Ben Pfaff . This program is free software; you can redistribute it and/or @@ -17,21 +17,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#if !error_h -#define error_h 1 +#ifndef MESSAGE_H +#define MESSAGE_H 1 #include #include -#include "compiler.h" - -/* Message classes. */ -enum msg_class - { - ME, MW, MN, /* General error/warning/note. */ - SE, SW, SN, /* Script error/warning/note. */ - DE, DW, DN, /* Data-file error/note. */ - MSG_CLASS_CNT, - }; +#include /* What kind of message is this? */ enum msg_category @@ -49,6 +40,16 @@ enum msg_severity MSG_NOTE }; +/* Combination of a category and a severity for convenience. */ +enum msg_class + { + ME, MW, MN, /* General error/warning/note. */ + SE, SW, SN, /* Script error/warning/note. */ + DE, DW, DN, /* Data-file error/note. */ + MSG_CLASS_CNT, + }; + + static inline enum msg_category msg_class_to_category (enum msg_class class) { @@ -69,66 +70,50 @@ msg_class_from_category_and_severity (enum msg_category category, } /* A file location. */ -struct file_locator +struct msg_locator { const char *file_name; /* File name. */ int line_number; /* Line number. */ }; -/* An error message. */ -struct error +/* A message. */ +struct msg { enum msg_category category; /* Message category. */ enum msg_severity severity; /* Message severity. */ - struct file_locator where; /* File location, or (NULL, -1). */ - const char *title; /* Special text inserted if not null. */ + struct msg_locator where; /* File location, or (NULL, -1). */ + char *text; /* Error text. */ }; -/* Number of errors, warnings reported. */ -extern int err_error_count; -extern int err_warning_count; - -/* If number of allowable errors/warnings is exceeded, then a message - is displayed and this flag is set to suppress subsequent - messages. */ -extern int err_already_flagged; +/* Initialization. */ +void msg_init (void (*handler) (const struct msg *)); +void msg_done (void); -/* Nonnegative verbosity level. Higher value == more verbose. */ -extern int err_verbosity; +struct msg * msg_dup(const struct msg *m); +void msg_destroy(struct msg *m); -/* Functions. */ +/* Emitting messages. */ void msg (enum msg_class, const char *format, ...) PRINTF_FORMAT (2, 3); -void tmsg (enum msg_class, const char *title, const char *format, ...) - PRINTF_FORMAT (3, 4); +void msg_emit (struct msg *); -void verbose_msg (int level, const char *format, ...) - PRINTF_FORMAT (2, 3); - -/* File-locator stack. */ -void err_push_file_locator (const struct file_locator *); -void err_pop_file_locator (const struct file_locator *); -void err_location (struct file_locator *); - -/* Obscure functions. */ -void err_set_command_name (const char *); -void err_done (void); -void err_check_count (void); -void err_vmsg (const struct error *, const char *, va_list); +/* Error context. */ +void msg_set_command_name (const char *); +const char *msg_get_command_name (void); +void msg_push_msg_locator (const struct msg_locator *); +void msg_pop_msg_locator (const struct msg_locator *); +void msg_location (struct msg_locator *); -/* Used in panic situations only */ -void request_bug_report_and_abort(const char *msg ); +/* Used in panic situations only. */ +void request_bug_report_and_abort (const char *msg); -void err_assert_fail(const char *expr, const char *file, int line); +void msg_assert_fail (const char *expr, const char *file, int line); #undef __STRING #define __STRING(x) #x #undef assert - #define assert(expr) ( (void) ( expr ? (void) 0 : \ - err_assert_fail(__STRING(expr), __FILE__, __LINE__)) ) - - + msg_assert_fail(__STRING(expr), __FILE__, __LINE__)) ) -#endif /* error.h */ +#endif /* message.h */