diff options
author | Michael Zucci <zucchi@src.gnome.org> | 2003-08-02 05:07:43 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2003-08-02 05:07:43 +0800 |
commit | e2cd78ca9b706f30f51a648db9da220e9b5a68a2 (patch) | |
tree | a1a211c5f2e2447b22eb2d610c25f58173961c6f /camel/providers/imapp/camel-imapp-exception.h | |
parent | 330ecafed407197d31c30170e1c76674d3ed91e8 (diff) | |
download | gsoc2013-evolution-e2cd78ca9b706f30f51a648db9da220e9b5a68a2.tar gsoc2013-evolution-e2cd78ca9b706f30f51a648db9da220e9b5a68a2.tar.gz gsoc2013-evolution-e2cd78ca9b706f30f51a648db9da220e9b5a68a2.tar.bz2 gsoc2013-evolution-e2cd78ca9b706f30f51a648db9da220e9b5a68a2.tar.lz gsoc2013-evolution-e2cd78ca9b706f30f51a648db9da220e9b5a68a2.tar.xz gsoc2013-evolution-e2cd78ca9b706f30f51a648db9da220e9b5a68a2.tar.zst gsoc2013-evolution-e2cd78ca9b706f30f51a648db9da220e9b5a68a2.zip |
experimental, non-working imap implementation
svn path=/trunk/; revision=22061
Diffstat (limited to 'camel/providers/imapp/camel-imapp-exception.h')
-rw-r--r-- | camel/providers/imapp/camel-imapp-exception.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/camel/providers/imapp/camel-imapp-exception.h b/camel/providers/imapp/camel-imapp-exception.h new file mode 100644 index 0000000000..5e18b6c815 --- /dev/null +++ b/camel/providers/imapp/camel-imapp-exception.h @@ -0,0 +1,35 @@ + +/* This implements 'real' exceptions that work a bit like c++/java exceptions */ + +/* Still experimental code */ + +#ifndef __CAMEL_IMAPP_EXCEPTION_H +#define __CAMEL_IMAPP_EXCEPTION_H + +#include <setjmp.h> +#include "camel/camel-exception.h" + +struct _CamelExceptionEnv { + struct _CamelExceptionEnv *parent; + CamelException *ex; + jmp_buf env; +}; + +#define CAMEL_TRY { struct _CamelExceptionEnv __env; camel_exception_try(&__env); if (setjmp(__env.env) == 0) +#define CAMEL_IGNORE camel_exception_done(&__env); } +#define CAMEL_CATCH(x) { CamelException *x; x=__env.ex; if (x != NULL) +#define CAMEL_DONE } camel_exception_done(&__env); } +#define CAMEL_DROP() camel_exception_drop(&__env) + +void camel_exception_setup(void); + +/* internal functions, use macro's above */ +void camel_exception_try(struct _CamelExceptionEnv *env); +void camel_exception_done(struct _CamelExceptionEnv *env); +void camel_exception_drop(struct _CamelExceptionEnv *env); + +/* user functions */ +void camel_exception_throw_ex(CamelException *ex) __attribute__ ((noreturn)); +void camel_exception_throw(int id, char *fmt, ...) __attribute__ ((noreturn)); + +#endif |