Skip to content
Snippets Groups Projects
Select Git revision
  • ad7d35e75b4240f64ef8f8686df280eedb23df6d
  • master default protected
  • 9.0
  • marcus/wix3
  • 8.0
  • nt-tools
  • 7.8
  • 7.6
  • 7.4
  • 7.2
  • 7.0
  • 0.6
  • rosuav/latex-markdown-renderer
  • rxnpatch/rxnpatch
  • marcus/gobject-introspection
  • rxnpatch/8.0
  • rosuav/pre-listening-ports
  • rosuav/async-annotations
  • rosuav/pgsql-ssl
  • rxnpatch/rxnpatch-broken/2023-10-06T094250
  • grubba/fdlib
  • v8.0.2020
  • v8.0.2018
  • v8.0.2016
  • v8.0.2014
  • v8.0.2012
  • v8.0.2008
  • v8.0.2006
  • v8.0.2004
  • v8.0.2002
  • v8.0.2000
  • v8.0.1998
  • v8.0.1996
  • v8.0.1994
  • v8.0.1992
  • v8.0.1990
  • v8.0.1988
  • v8.0.1986
  • rxnpatch/clusters/8.0/2025-04-29T124414
  • rxnpatch/2025-04-29T124414
  • v8.0.1984
41 results

errors.h

Blame
  • user avatar
    Martin Nilsson authored
    Rev: src/backend.cmod:1.229
    Rev: src/builtin.cmod:1.217
    Rev: src/errors.h:1.40
    Rev: src/interpret_functions.h:1.208
    Rev: src/iterators.cmod:1.70
    Rev: src/language.yacc:1.440
    Rev: src/object.c:1.299
    Rev: src/pike_search.c:1.31
    Rev: src/program.c:1.728
    Rev: src/signal_handler.c:1.333
    Rev: src/threads.c:1.259
    95489a21
    History
    errors.h 5.68 KiB
    /*
    || This file is part of Pike. For copyright information see COPYRIGHT.
    || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
    || for more information.
    || $Id: errors.h,v 1.40 2008/06/29 12:37:10 nilsson Exp $
    */
    
    #ifdef ERR_DECLARE
    #define DECLARE_PURE_ERROR(NAME, SCNAME, INHERIT) \
      PMOD_EXPORT struct program *PIKE_CONCAT(NAME,_error_program);
    #define DECLARE_ERROR(NAME, SCNAME, INHERIT, DECL) \
      DECLARE_PURE_ERROR(NAME, SCNAME, INHERIT)	   \
      ptrdiff_t PIKE_CONCAT(NAME,_error_offset);	   \
      DECL
    
    #define ERR_FUNC_SAVE_ID(VAR, NAME, FUNC, TYPE, FLAGS) static int VAR;
    
    #endif
    
    #ifdef ERR_EXT_DECLARE
    #define DECLARE_PURE_ERROR(NAME, SCNAME, INHERIT) \
      PMOD_EXPORT extern struct program *PIKE_CONCAT(NAME,_error_program);
    #define DECLARE_ERROR(NAME, SCNAME, INHERIT, DECL)	\
      DECLARE_PURE_ERROR(NAME, SCNAME, INHERIT)		\
      extern ptrdiff_t PIKE_CONCAT(NAME,_error_offset);	\
      struct PIKE_CONCAT(NAME,_error_struct) {		\
        DECL						\
      };
    
    #define ERR_VAR(TYPE,CTYPE,RUNTYPE,NAME) TYPE NAME ;
    #define ERR_CONST(TYPE, NAME, VALUE)
    
    /* Some compilers (eg cl) don't like empty structs... */
    /* #define EMPTY ERR_VAR(INT_TYPE, int, PIKE_T_INT, ignored__) */
    
    #endif /* ERR_EXT_DECLARE */
    
    #ifdef ERR_SETUP
    #define DECLARE_PURE_ERROR(NAME, SCNAME, INHERIT) do {	\
        start_new_program();				\
        INHERIT						\
        add_string_constant("error_type", #SCNAME, 0);	\
        add_string_constant ("error_name", "Error." #SCNAME, ID_PRIVATE|ID_USED); \
        add_integer_constant("is_" #NAME "_error",1,0);	\
        PIKE_CONCAT(NAME,_error_program)=end_program();	\
        add_program_constant( #SCNAME "Error",PIKE_CONCAT(NAME,_error_program),0); \
      } while(0);
    #define DECLARE_ERROR(NAME, SCNAME, INHERIT, DECL) do {			\
        ptrdiff_t current_offset=0;						\
        struct PIKE_CONCAT(NAME,_error_struct) foo;				\
        DECLARE_PURE_ERROR(NAME, SCNAME,					\
    		       INHERIT						\
    		       current_offset =					\
    		       PIKE_CONCAT(NAME,_error_offset) =		\
    		       ADD_STORAGE(struct PIKE_CONCAT(NAME,_error_struct)); \
    		       DECL)						\
      } while(0);
    
    #define ERR_VAR(TYPE,CTYPE,RUNTYPE,NAME2) \
      MAP_VARIABLE(#NAME2, CTYPE, 0, \
    	       current_offset + (((char *)&(foo.NAME2))-((char *)&foo)), RUNTYPE);
    #define ERR_CONST(TYPE, NAME, VALUE) \
      PIKE_CONCAT3 (add_, TYPE, _constant) (NAME, VALUE, 0);
    
    /* Reference foo just to avoid warning. */
    /* #define EMPTY (void) &foo; */
    
    #define ERR_INHERIT(NAME) \
      low_inherit(PIKE_CONCAT(NAME,_error_program),0,0,0,0,0);
    
    #define ERR_FUNC(NAME,FUNC,TYPE,FLAGS) \
      ADD_FUNCTION(NAME,FUNC,TYPE,FLAGS);
    
    #define ERR_FUNC_SAVE_ID(VAR, NAME, FUNC, TYPE, FLAGS) \
      VAR = ADD_FUNCTION(NAME,FUNC,TYPE,FLAGS);
    
    #endif
    
    #ifdef ERR_CLEANUP
    #define DECLARE_PURE_ERROR(NAME, SCNAME, INHERIT)	\
      if(PIKE_CONCAT(NAME,_error_program)) {		\
        free_program(PIKE_CONCAT(NAME,_error_program));	\
        PIKE_CONCAT(NAME,_error_program)=0;			\
      }
    #define DECLARE_ERROR(NAME, SCNAME, INHERIT, DECL)	\
      DECLARE_PURE_ERROR(NAME, SCNAME, INHERIT)
    #endif
    
    #ifndef EMPTY
    #define EMPTY
    #endif
    
    #ifndef ERR_INHERIT
    #define ERR_INHERIT(NAME)
    #endif
    
    #ifndef ERR_VAR
    #define ERR_VAR(TYPE,CTYPE,RUNTYPE,NAME)
    #endif
    
    #ifndef ERR_CONST
    #define ERR_CONST(TYPE, NAME, VALUE)
    #endif
    
    #ifndef ERR_FUNC
    #define ERR_FUNC(NAME,FUNC,TYPE,FLAGS)
    #endif
    
    #ifndef ERR_FUNC_SAVE_ID
    #define ERR_FUNC_SAVE_ID(VAR, NAME, FUNC, TYPE, FLAGS)
    #endif
    
    DECLARE_ERROR(generic, Generic, EMPTY ,
      ERR_VAR(struct pike_string *,tStr,PIKE_T_STRING,error_message)
      ERR_VAR(struct array *,tArray,PIKE_T_ARRAY,error_backtrace)
      ERR_FUNC("cast",f_error_cast,tFunc(tString,tArray),ID_PROTECTED)
      ERR_FUNC("`[]",f_error_index,tFunc(tInt01,tMixed),ID_PROTECTED)
      ERR_FUNC("describe",f_error_describe,tFunc(tVoid,tString),0)
      ERR_FUNC_SAVE_ID (generic_err_message_fun, "message", f_error_message,
    		    tFunc(tVoid,tString), 0)
      ERR_FUNC_SAVE_ID (generic_err_backtrace_fun, "backtrace", f_error_backtrace,
    		    tFunc(tVoid,tArr(tMixed)),0)
      ERR_FUNC("_sprintf", f_error__sprintf,
    	   tFunc(tOr(tInt,tVoid) tOr(tMapping,tVoid),tString), ID_PROTECTED)
      ERR_FUNC("_is_type", f_error__is_type, tFunc(tString, tInt01), ID_PROTECTED)
      ERR_FUNC("create",f_error_create,tFunc(tStr tOr(tVoid,tArr(tMixed)),tVoid),ID_PROTECTED)
    )
    
    DECLARE_ERROR(index, Index,
    	      ERR_INHERIT(generic),
      ERR_VAR(struct svalue, tMix, PIKE_T_MIXED, value)
      ERR_VAR(struct svalue, tMix, PIKE_T_MIXED, index)
    )
    
    DECLARE_ERROR(bad_argument, BadArgument,
    	      ERR_INHERIT(generic),
      ERR_VAR(INT_TYPE, tInt, PIKE_T_INT, which_argument)
      ERR_VAR(struct pike_string *, tStr,PIKE_T_STRING,expected_type)
      ERR_VAR(struct svalue, tMix, PIKE_T_MIXED, got_value)
    )
    
    DECLARE_ERROR(math, Math,
    	      ERR_INHERIT(generic),
      ERR_VAR(struct svalue, tMix, PIKE_T_MIXED, number)
    )
    
    DECLARE_ERROR(resource, Resource,
    	      ERR_INHERIT(generic),
      ERR_VAR(struct pike_string *, tStr, PIKE_T_STRING,resource_type)
      ERR_VAR(INT_TYPE, tInt, PIKE_T_INT, howmuch)
    )
    
    DECLARE_ERROR(permission, Permission,
    	      ERR_INHERIT(generic),
      ERR_VAR(struct pike_string *, tStr, PIKE_T_STRING,permission_type)
    )
    
    DECLARE_PURE_ERROR(
      cpp, Cpp,
      ERR_INHERIT(generic)
      ERR_CONST (integer, "is_cpp_or_compilation_error", 1)
    )
    
    DECLARE_PURE_ERROR(
      compilation, Compilation,
      ERR_INHERIT(generic)
      ERR_CONST (integer, "is_cpp_or_compilation_error", 1)
    )
    
    DECLARE_PURE_ERROR(master_load, MasterLoad, ERR_INHERIT (generic))
    
    DECLARE_ERROR (module_load, ModuleLoad,
    	       ERR_INHERIT (generic),
      ERR_VAR (struct pike_string *, tStr, PIKE_T_STRING, path)
      ERR_VAR (struct pike_string *, tStr, PIKE_T_STRING, reason)
    )
    
    #undef DECLARE_PURE_ERROR
    #undef DECLARE_ERROR
    #undef ERR_INHERIT
    #undef ERR_VAR
    #undef ERR_CONST
    #undef EMPTY
    #undef ERR_FUNC
    #undef ERR_FUNC_SAVE_ID
    
    #undef ERR_DECLARE
    #undef ERR_EXT_DECLARE
    #undef ERR_SETUP
    #undef ERR_CLEANUP