summary refs log tree commit diff stats
path: root/lib/nimbase.h
diff options
context:
space:
mode:
authorAdrianV <adrian@veith-system.de>2018-04-15 13:43:01 +0200
committerAndreas Rumpf <rumpf_a@web.de>2018-04-15 13:43:01 +0200
commit0ce28d15cc9aff526a7733e40ae1ae495d4e8e55 (patch)
tree5194210604627fc7117acae8165ca65360638dad /lib/nimbase.h
parent70c0ff1be21d2a1fda6432fe2e5b7ae0953840ff (diff)
downloadNim-0ce28d15cc9aff526a7733e40ae1ae495d4e8e55.tar.gz
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)
Diffstat (limited to 'lib/nimbase.h')
-rw-r--r--lib/nimbase.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/nimbase.h b/lib/nimbase.h
index a03407c4f..20ac9979b 100644
--- a/lib/nimbase.h
+++ b/lib/nimbase.h
@@ -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