Nilorea Library
C utilities for networking, threading, graphics
EXCEPTIONS: C++ style try,catch,endtry,throw

Data Structures

struct  ExceptionContextList
 Exception stack structure. More...
 

Macros

#define ARRAY_EXCEPTION   2
 Possibly Throwed value, we checked an out of bound operation. More...
 
#define Catch(X)
 Macro for replacing catch. More...
 
#define CatchAll()
 Macro for replacing catch. More...
 
#define DIVZERO_EXCEPTION   4
 Possibly Throwed value, we check a divide by zero operation. More...
 
#define EndTry
 Macro helper for closing the try-catch block. More...
 
#define GENERAL_EXCEPTION   ARRAY_EXCEPTION|DIVZERO_EXCEPTION|OVERFLOW_EXCEPTION|PARSING_EXCEPTION
 General exception, we just detected an error an decided to go back where we're safe. More...
 
#define NO_EXCEPTION   0
 Possibly Throwed value, everything is fine. More...
 
#define OVERFLOW_EXCEPTION   8
 Possibly Throwed value, we checked an overflow in our arrays. More...
 
#define PARSING_EXCEPTION   16
 Possibly Throwed value, we checked an error during a char * parsing. More...
 
#define Throw(X)
 Macro helper for adding exception throwing in custom functions. More...
 
#define Try
 Macro for replacing try. More...
 

Functions

void pop_exception (int)
 Function to pop an exception in the list. More...
 
void push_exception (void)
 Function to push an exception in the list. More...
 

Variables

ExceptionContextList__Exceptions
 Globale variable for exception stack management. More...
 

Detailed Description


Data Structure Documentation

◆ ExceptionContextList

struct ExceptionContextList

Exception stack structure.

Definition at line 40 of file n_exceptions.h.

+ Collaboration diagram for ExceptionContextList:
Data Fields
jmp_buf context saving the current context
struct ExceptionContextList * head pointer to the next stacked exception

Macro Definition Documentation

◆ ARRAY_EXCEPTION

#define ARRAY_EXCEPTION   2

Possibly Throwed value, we checked an out of bound operation.

Examples
ex_exceptions.c.

Definition at line 28 of file n_exceptions.h.

◆ Catch

#define Catch (   X)
Value:
} \
if( __exc_ & (X) ) \
{ \
__exc_ = 0 ;

Macro for replacing catch.

Examples
ex_exceptions.c.

Definition at line 67 of file n_exceptions.h.

◆ CatchAll

#define CatchAll ( )
Value:
} \
if( __exc_ !=0 ) \
{ \
__exc_ = 0 ;

Macro for replacing catch.

Definition at line 74 of file n_exceptions.h.

◆ DIVZERO_EXCEPTION

#define DIVZERO_EXCEPTION   4

Possibly Throwed value, we check a divide by zero operation.

Examples
ex_exceptions.c.

Definition at line 30 of file n_exceptions.h.

◆ EndTry

#define EndTry
Value:
} \
pop_exception( __exc_ ); \
}

Macro helper for closing the try-catch block.

Examples
ex_exceptions.c.

Definition at line 83 of file n_exceptions.h.

◆ GENERAL_EXCEPTION

General exception, we just detected an error an decided to go back where we're safe.

Examples
ex_exceptions.c.

Definition at line 37 of file n_exceptions.h.

◆ NO_EXCEPTION

#define NO_EXCEPTION   0

Possibly Throwed value, everything is fine.

Definition at line 26 of file n_exceptions.h.

◆ OVERFLOW_EXCEPTION

#define OVERFLOW_EXCEPTION   8

Possibly Throwed value, we checked an overflow in our arrays.

Examples
ex_exceptions.c.

Definition at line 32 of file n_exceptions.h.

◆ PARSING_EXCEPTION

#define PARSING_EXCEPTION   16

Possibly Throwed value, we checked an error during a char * parsing.

Examples
ex_exceptions.c.

Definition at line 34 of file n_exceptions.h.

◆ Throw

#define Throw (   X)
Value:
n_log( LOG_ERR , "Exception thrown type:%d" , X ); \
longjmp( __Exceptions -> context , (X) )
ExceptionContextList * __Exceptions
Globale variable for exception stack management.
Definition: n_exceptions.c:14
#define n_log(__LEVEL__,...)
Logging function wrapper to get line and func.
Definition: n_log.h:74
#define LOG_ERR
error conditions
Definition: n_log.h:58

Macro helper for adding exception throwing in custom functions.

Examples
ex_exceptions.c.

Definition at line 89 of file n_exceptions.h.

◆ Try

#define Try
Value:
{ \
int __exc_ ; \
push_exception(); \
__exc_ = setjmp( __Exceptions -> context ); \
if( __exc_ == NO_EXCEPTION ) \
{
#define NO_EXCEPTION
Possibly Throwed value, everything is fine.
Definition: n_exceptions.h:26

Macro for replacing try.

Examples
ex_exceptions.c.

Definition at line 57 of file n_exceptions.h.

Function Documentation

◆ pop_exception()

void pop_exception ( int  ex)

Function to pop an exception in the list.

Parameters
exType of exception to pop

Definition at line 42 of file n_exceptions.c.

References __Exceptions, Free, and NO_EXCEPTION.

◆ push_exception()

void push_exception ( void  )

Function to push an exception in the list.

Definition at line 21 of file n_exceptions.c.

References __Exceptions, ExceptionContextList::head, LOG_ERR, and n_log.

Variable Documentation

◆ __Exceptions

ExceptionContextList* __Exceptions
extern

Globale variable for exception stack management.

Definition at line 14 of file n_exceptions.c.

Referenced by pop_exception(), and push_exception().