Nim namespace for cpp (#7453)

- new option --usenamespace to generate nim cpp code in its own namespace Nim
- minor changes for compatibility with the new Embarcadero = Borland C++-Builder (bcc)
This commit is contained in:
AdrianV 2018-04-15 13:43:01 +02:00 • committed by Andreas Rumpf
commit 0ce28d15cc
8 changed files with 44 additions and 7 deletions

View file

@ -264,6 +264,11 @@ __clang__
# define HAVE_STDINT_H
#endif
/* wrap all Nim typedefs into namespace Nim */
#ifdef USE_NIM_NAMESPACE
namespace Nim {
#endif
/* bool types (C++ has it): */
#ifdef __cplusplus
# ifndef NIM_TRUE
@ -413,8 +418,8 @@ typedef struct TStringDesc* string;
# endif
#endif
typedef struct TFrame TFrame;
struct TFrame {
typedef struct TFrame_ TFrame;
struct TFrame_ {
TFrame* prev;
NCSTRING procname;
NI line;
@ -476,6 +481,10 @@ static inline void GCGuard (void *ptr) { asm volatile ("" :: "X" (ptr)); }
"error: 'Nim_and_C_compiler_disagree_on_target_architecture' declared as an array with a negative size" */
typedef int Nim_and_C_compiler_disagree_on_target_architecture[sizeof(NI) == sizeof(void*) && NIM_INTBITS == sizeof(NI)*8 ? 1 : -1];
#ifdef USE_NIM_NAMESPACE
}
#endif
#ifdef __cplusplus
# define NIM_EXTERNC extern "C"
#else