#include "ace/config-all.h"
#include "ace/Exception_Macros.h"
#include "ace/Exception_Macros.h"
Go to the source code of this file.
Defines | |
#define | ACE_del_bad_alloc |
#define | ACEXML_ENV_TYPE ACEXML_Env |
#define | ACEXML_TRY_ENV _ACEXML_Env_variable |
#define | ACEXML_EXCEPTION_TYPE ACEXML_Exception |
#define | ACEXML_ANY_EXCEPTION ex |
#define | ACEXML_DECLARE_NEW_ENV ACEXML_ENV_TYPE ACEXML_TRY_ENV |
#define | ACEXML_ADOPT_ENV(ENV) ACEXML_ENV_TYPE &ACEXML_TRY_ENV = ENV |
#define | ACEXML_CHECK |
#define | ACEXML_CHECK_RETURN(RETV) |
#define | ACEXML_THROW_R_INT(EXCEPTION) ACEXML_TRY_ENV.exception (new EXCEPTION) |
#define | ACEXML_THROW(EXCEPTION) |
#define | ACEXML_THROW_RETURN(EXCEPTION, RETV) |
#define | ACEXML_TRY |
#define | ACEXML_TRY_NEW_ENV |
#define | ACEXML_TRY_EX(LABEL) |
#define | ACEXML_TRY_CHECK |
#define | ACEXML_TRY_CHECK_EX(LABEL) |
#define | ACEXML_TRY_THROW(EXCEPTION) |
#define | ACEXML_TRY_THROW_EX(EXCEPTION, LABEL) |
#define | ACEXML_CATCH(TYPE, VAR) |
#define | ACEXML_CATCHANY ACEXML_CATCH (ACEXML_EXCEPTION_TYPE, ACEXML_ANY_EXCEPTION) |
#define | ACEXML_CATCHALL ACEXML_CATCHANY |
#define | ACEXML_RE_THROW |
#define | ACEXML_RE_THROW_EX(LABEL) |
#define | ACEXML_ENDTRY |
#define | ACEXML_NEW_THROW_EX(POINTER, CONSTRUCTOR, EXCEPTION) |
#define | ACEXML_GUARD_THROW_EX(MUTEX, OBJ, LOCK, EXCEPTION) |
#define | ACEXML_READ_GUARD_THROW_EX(MUTEX, OBJ, LOCK, EXCEPTION) |
#define | ACEXML_WRITE_GUARD_THROW_EX(MUTEX, OBJ, LOCK, EXCEPTION) |
#define | ACEXML_ENV_RAISE(ex) ACEXML_TRY_ENV.exception (ex) |
Native C++ exceptions portability macros. | |
#define | ACEXML_ENV_EMIT_CODE(X) X |
Define a macro to emit code only when ACEXML_ENV_TYPE is used. | |
#define | ACEXML_ENV_EMIT_CODE2(X, Y) X,Y |
Another macro to emit code only when ACEXML_ENV_TYPE is used. | |
#define | ACEXML_ENV_EMIT_DUMMY |
Helper macro. | |
#define | ACEXML_ENV_ARG_DECL |
#define | ACEXML_ENV_ARG_DECL_NOT_USED |
#define | ACEXML_ENV_SINGLE_ARG_DECL ACEXML_ENV_EMIT_CODE(ACEXML_ENV_TYPE &ACEXML_TRY_ENV) |
#define | ACEXML_ENV_SINGLE_ARG_DECL_NOT_USED ACEXML_ENV_EMIT_CODE(ACEXML_ENV_TYPE &) |
Declare a ACEXML_ENV_TYPE argument for methods which don't use it. | |
#define | ACEXML_ENV_ARG_PARAMETER |
Use the ACEXML_ENV_TYPE argument in a nested call. | |
#define | ACEXML_ENV_SINGLE_ARG_PARAMETER ACEXML_ENV_EMIT_CODE(ACEXML_TRY_ENV) |
#define | ACEXML_ENV_ARG_NOT_USED ACEXML_ENV_EMIT_CODE(ACE_UNUSED_ARG(ACEXML_TRY_ENV)) |
Eliminate unused argument warnings about ACEXML_TRY_ENV. |
Writing code that is portable between platforms with or without native C++ exceptions is hard. The following macros offer some help on this task.
Definition in file XML_Macros.h.
#define ACE_del_bad_alloc |
Definition at line 45 of file XML_Macros.h.
#define ACEXML_ADOPT_ENV | ( | ENV | ) | ACEXML_ENV_TYPE &ACEXML_TRY_ENV = ENV |
Definition at line 176 of file XML_Macros.h.
#define ACEXML_ANY_EXCEPTION ex |
Definition at line 74 of file XML_Macros.h.
#define ACEXML_CATCH | ( | TYPE, | ||
VAR | ||||
) |
} while (0); \ do \ if (ACEXML_TRY_ENV.exception () != 0 && ACEXML_EXCEPTION_NOT_CAUGHT && \ TYPE::_downcast(ACEXML_TRY_ENV.exception ()) != 0) \ { \ ACEXML_ENV_TYPE ACEXML_CAUGHT_ENV = ACEXML_TRY_ENV;\ ACEXML_EXCEPTION_NOT_CAUGHT = 0; \ TYPE &VAR = *TYPE::_downcast (ACEXML_CAUGHT_ENV.exception ()); \ ACE_UNUSED_ARG (VAR); \ ACEXML_TRY_ENV.clear ();
Definition at line 295 of file XML_Macros.h.
#define ACEXML_CATCHALL ACEXML_CATCHANY |
Definition at line 314 of file XML_Macros.h.
#define ACEXML_CATCHANY ACEXML_CATCH (ACEXML_EXCEPTION_TYPE, ACEXML_ANY_EXCEPTION) |
Definition at line 309 of file XML_Macros.h.
#define ACEXML_CHECK |
if (ACEXML_TRY_ENV . exception () != 0) \ return
Definition at line 181 of file XML_Macros.h.
#define ACEXML_CHECK_RETURN | ( | RETV | ) |
if (ACEXML_TRY_ENV . exception () != 0) \ return RETV
Definition at line 185 of file XML_Macros.h.
#define ACEXML_DECLARE_NEW_ENV ACEXML_ENV_TYPE ACEXML_TRY_ENV |
Definition at line 79 of file XML_Macros.h.
#define ACEXML_ENDTRY |
} while (0); \ } while (0)
Definition at line 336 of file XML_Macros.h.
#define ACEXML_ENV_ARG_DECL |
Declare a ACEXML_ENV_TYPE argument as the last argument of a function Normally this macro is used as follows:
void my_funct (int x, int y ACEXML_ENV_ARG_DECL);
Its purpose is to provide developers (and users) with a mechanism to write code that is portable to platforms with and without native C++ exceptions.
Definition at line 409 of file XML_Macros.h.
#define ACEXML_ENV_ARG_DECL_NOT_USED |
Declare a ACEXML_ENV_TYPE argument that is not used by the function definition. Similar to ACEXML_ENV_ARG_DECL, but the formal parameter name is dropped to avoid warnings about unused parameters
Definition at line 419 of file XML_Macros.h.
#define ACEXML_ENV_ARG_NOT_USED ACEXML_ENV_EMIT_CODE(ACE_UNUSED_ARG(ACEXML_TRY_ENV)) |
Eliminate unused argument warnings about ACEXML_TRY_ENV.
Definition at line 443 of file XML_Macros.h.
#define ACEXML_ENV_ARG_PARAMETER |
Use the ACEXML_ENV_TYPE argument in a nested call.
Definition at line 433 of file XML_Macros.h.
#define ACEXML_ENV_EMIT_CODE | ( | X | ) | X |
Define a macro to emit code only when ACEXML_ENV_TYPE is used.
Definition at line 383 of file XML_Macros.h.
#define ACEXML_ENV_EMIT_CODE2 | ( | X, | ||
Y | ||||
) | X,Y |
Another macro to emit code only when ACEXML_ENV_TYPE is used.
Definition at line 390 of file XML_Macros.h.
#define ACEXML_ENV_EMIT_DUMMY |
Helper macro.
Definition at line 396 of file XML_Macros.h.
#define ACEXML_ENV_RAISE | ( | ex | ) | ACEXML_TRY_ENV.exception (ex) |
Definition at line 449 of file XML_Macros.h.
#define ACEXML_ENV_SINGLE_ARG_DECL ACEXML_ENV_EMIT_CODE(ACEXML_ENV_TYPE &ACEXML_TRY_ENV) |
Declare a ACEXML_ENV_TYPE argument for methods that do not take any other parameters
Definition at line 425 of file XML_Macros.h.
#define ACEXML_ENV_SINGLE_ARG_DECL_NOT_USED ACEXML_ENV_EMIT_CODE(ACEXML_ENV_TYPE &) |
Declare a ACEXML_ENV_TYPE argument for methods which don't use it.
Definition at line 429 of file XML_Macros.h.
#define ACEXML_ENV_SINGLE_ARG_PARAMETER ACEXML_ENV_EMIT_CODE(ACEXML_TRY_ENV) |
Use the ACEXML_ENV_TYPE argument in a nested call, assuming that the called function takes only the ACEXML_TRY_ENV argument.
Definition at line 439 of file XML_Macros.h.
#define ACEXML_ENV_TYPE ACEXML_Env |
Definition at line 53 of file XML_Macros.h.
#define ACEXML_EXCEPTION_TYPE ACEXML_Exception |
Definition at line 69 of file XML_Macros.h.
#define ACEXML_GUARD_THROW_EX | ( | MUTEX, | ||
OBJ, | ||||
LOCK, | ||||
EXCEPTION | ||||
) |
ACE_Guard< MUTEX > OBJ (LOCK); \ if (OBJ.locked () == 0) ACEXML_THROW_R_INT (EXCEPTION);
Definition at line 359 of file XML_Macros.h.
#define ACEXML_NEW_THROW_EX | ( | POINTER, | ||
CONSTRUCTOR, | ||||
EXCEPTION | ||||
) |
do { POINTER = new CONSTRUCTOR; \ if (POINTER == 0) { errno = ENOMEM; ACEXML_THROW_R_INT (EXCEPTION); } \ } while (0)
Definition at line 352 of file XML_Macros.h.
#define ACEXML_RE_THROW |
do {\ ACEXML_TRY_ENV = ACEXML_CAUGHT_ENV; \ goto ACEXML_TRY_LABEL; \ } while (0)
Definition at line 321 of file XML_Macros.h.
#define ACEXML_RE_THROW_EX | ( | LABEL | ) |
do {\ ACEXML_TRY_ENV = ACEXML_CAUGHT_ENV; \ goto ACEXML_TRY_LABEL ## LABEL; \ } while (0)
Definition at line 326 of file XML_Macros.h.
#define ACEXML_READ_GUARD_THROW_EX | ( | MUTEX, | ||
OBJ, | ||||
LOCK, | ||||
EXCEPTION | ||||
) |
ACE_Read_Guard< MUTEX > OBJ (LOCK); \ if (OBJ.locked () == 0) ACEXML_THROW_R_INT (EXCEPTION);
Definition at line 363 of file XML_Macros.h.
#define ACEXML_THROW | ( | EXCEPTION | ) |
do \ { \ ACEXML_TRY_ENV.exception (new EXCEPTION); \ return; \ } while (0)
Definition at line 195 of file XML_Macros.h.
#define ACEXML_THROW_R_INT | ( | EXCEPTION | ) | ACEXML_TRY_ENV.exception (new EXCEPTION) |
Definition at line 190 of file XML_Macros.h.
#define ACEXML_THROW_RETURN | ( | EXCEPTION, | ||
RETV | ||||
) |
do \ { \ ACEXML_TRY_ENV.exception (new EXCEPTION); \ return RETV; \ } while (0)
Definition at line 202 of file XML_Macros.h.
#define ACEXML_TRY |
do { \ int ACEXML_TRY_FLAG = 1; \ int ACEXML_EXCEPTION_NOT_CAUGHT = 1; \ ACEXML_TRY_LABEL: \ if (ACEXML_TRY_FLAG) \ do {
Definition at line 218 of file XML_Macros.h.
#define ACEXML_TRY_CHECK |
{ \ if (ACEXML_TRY_ENV.exception () != 0) \ { \ ACEXML_TRY_FLAG = 0; \ goto ACEXML_TRY_LABEL; \ } \ }
Definition at line 251 of file XML_Macros.h.
#define ACEXML_TRY_CHECK_EX | ( | LABEL | ) |
{ \ if (ACEXML_TRY_ENV.exception () != 0) \ { \ ACEXML_TRY_FLAG = 0; \ goto ACEXML_TRY_LABEL ## LABEL; \ } \ }
Definition at line 261 of file XML_Macros.h.
#define ACEXML_TRY_ENV _ACEXML_Env_variable |
Definition at line 62 of file XML_Macros.h.
#define ACEXML_TRY_EX | ( | LABEL | ) |
do { \ int ACEXML_TRY_FLAG = 1; \ int ACEXML_EXCEPTION_NOT_CAUGHT = 1; \ ACEXML_TRY_LABEL ## LABEL: \ if (ACEXML_TRY_FLAG) \ do {
Definition at line 242 of file XML_Macros.h.
#define ACEXML_TRY_NEW_ENV |
do { \ ACEXML_ENV_TYPE ACEXML_TRY_ENV;\ int ACEXML_TRY_FLAG = 1; \ int ACEXML_EXCEPTION_NOT_CAUGHT = 1; \ ACEXML_TRY_LABEL: \ if (ACEXML_TRY_FLAG) \ do {
Definition at line 229 of file XML_Macros.h.
#define ACEXML_TRY_THROW | ( | EXCEPTION | ) |
{ \ ACEXML_TRY_ENV.exception (new EXCEPTION); \ ACEXML_TRY_FLAG = 0; \ goto ACEXML_TRY_LABEL; \ }
Definition at line 271 of file XML_Macros.h.
#define ACEXML_TRY_THROW_EX | ( | EXCEPTION, | ||
LABEL | ||||
) |
{ \ ACEXML_TRY_ENV.exception (new EXCEPTION); \ ACEXML_TRY_FLAG = 0; \ goto ACEXML_TRY_LABEL ## LABEL; \ }
Definition at line 278 of file XML_Macros.h.
#define ACEXML_WRITE_GUARD_THROW_EX | ( | MUTEX, | ||
OBJ, | ||||
LOCK, | ||||
EXCEPTION | ||||
) |
ACE_Write_Guard< MUTEX > OBJ (LOCK); \ if (OBJ.locked () == 0) ACEXML_THROW_R_INT (EXCEPTION);
Definition at line 367 of file XML_Macros.h.