/* error.h:
*
****************************************************************
* Copyright (C) 2003 Tom Lord
*
* See the file "COPYING" for further information about
* the copyright and warranty status of this work.
*/
#ifndef INCLUDE__BUGS__ERROR_H
#define INCLUDE__BUGS__ERROR_H
#include "hackerlab/machine/types.h"
struct err_type_vtable;
struct err_type_description
{
/* Applications should not access these fields
* directly.
*/
char * name;
char * msg;
struct err_type_vtable * vtable;
char * domain;
t_uint32 code;
int is_proxy;
struct err_type_description * proxy_for;
#if 0
t_uint64 domhash_hi;
t_uint64 domhash_lo;
#endif
t_uint domseq;
t_uint typeseq;
};
typedef struct err_type_description err_type_t;
struct err_value
{
/* Applications should not access these fields
* directly.
*/
err_type_t * type;
t_uint event_n;
t_uint32 logging_done;
union
{
struct err_value * e;
t_uchar * s;
t_uchar ** sa;
int i;
t_uint u;
t_int32 i32;
t_uint32 u32;
float f;
double d;
void * v;
} params;
};
typedef struct err_value err_t;
#define ERR_TYPE_DECL(NAME,MSG,VTBL) \
struct err_type_description NAME = { #NAME, MSG, VTBL, 0, }
#define ERR_STDTYPE_DECL(NAME,MSG,VTBL,DOM,CODE) \
struct err_type_description NAME = { #NAME, MSG, VTBL, DOM, CODE, 0, }
#define ERR_INIT() { 0, }
/* automatically generated __STDC__ prototypes */
extern int err_types_equal (err_type_t * a, err_type_t * b);
extern int err_is_type (err_type_t * type, err_t * err);
extern void err_set_type (err_t * dest, err_type_t * type);
extern err_type_t err_type (err_t * err);
extern t_uchar * err_name (err_t * err);
extern t_uchar * err_msg (err_t * err);
extern void err_type_coordinates (err_type_t * type);
extern void err_clean (err_t * err);
extern void err_propogate (err_t * to, err_t * from);
#endif /* INCLUDE__BUGS__ERROR_H */
/* tag: Tom Lord Thu Oct 23 15:10:31 2003 (error.h)
*/
syntax highlighted by Code2HTML, v. 0.9.1