Browse Source

ENH: Moved kwsys_ns and kwsysEXPORT macros to Configure.h in the case of building a kwsys source file. This allows more than one header to be included in a kwsys source file without redefining the macros.

Brad King 20 years ago
parent
commit
b9d472d81d
4 changed files with 19 additions and 8 deletions
  1. 0 1
      Source/kwsys/Base64.c
  2. 7 5
      Source/kwsys/Base64.h.in
  3. 8 0
      Source/kwsys/Configure.h.in
  4. 4 2
      Source/kwsys/Process.h.in

+ 0 - 1
Source/kwsys/Base64.c

@@ -11,7 +11,6 @@
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
-#define KWSYS_IN_BASE64_C
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(Base64.h)
 

+ 7 - 5
Source/kwsys/Base64.h.in

@@ -20,8 +20,10 @@
    namespace.  These macros are used internally to kwsys only, and are
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    these macros after making changes to the interface.  */
-#define kwsys_ns(x) @KWSYS_NAMESPACE@##x
-#define kwsysEXPORT          @KWSYS_NAMESPACE@_EXPORT
+#if !defined(KWSYS_NAMESPACE)
+# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
+# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
+#endif
 #define kwsysBase64          kwsys_ns(Base64)
 #define kwsysBase64_Decode   kwsys_ns(Base64_Decode)
 #define kwsysBase64_Decode3  kwsys_ns(Base64_Decode3)
@@ -99,9 +101,9 @@ kwsysEXPORT unsigned long kwsysBase64_Decode(const unsigned char *input,
 } /* extern "C" */
 #endif
 
-/* If we are building Base64.c, let it use these macros.  Otherwise,
-   undefine them to keep the namespace clean.  */
-#if !defined(KWSYS_IN_BASE64_C)
+/* If we are building a kwsys .c or .cxx file, let it use these macros.
+   Otherwise, undefine them to keep the namespace clean.  */
+#if !defined(KWSYS_NAMESPACE)
 # undef kwsys_ns
 # undef kwsysEXPORT
 # undef kwsysBase64

+ 8 - 0
Source/kwsys/Configure.h.in

@@ -14,6 +14,14 @@
 #ifndef @KWSYS_NAMESPACE@_Configure_h
 #define @KWSYS_NAMESPACE@_Configure_h
 
+/* If we are building a kwsys .c or .cxx file, let it use the kwsys
+   namespace.  When not building a kwsys source file these macros are
+   temporarily defined inside the headers that use them.  */
+#if defined(KWSYS_NAMESPACE)
+# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
+# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
+#endif
+
 /* Setup the export macro.  */
 #if defined(_WIN32) && @KWSYS_BUILD_SHARED@
 # if defined(@KWSYS_NAMESPACE@_EXPORTS)

+ 4 - 2
Source/kwsys/Process.h.in

@@ -20,8 +20,10 @@
    namespace.  These macros are used internally to kwsys only, and are
    not visible to user code.  Use kwsysHeaderDump.pl to reproduce
    these macros after making changes to the interface.  */
-#define kwsys_ns(x) @KWSYS_NAMESPACE@##x
-#define kwsysEXPORT                      @KWSYS_NAMESPACE@_EXPORT
+#if !defined(KWSYS_NAMESPACE)
+# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
+# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
+#endif
 #define kwsysProcess                     kwsys_ns(Process)
 #define kwsysProcess_s                   kwsys_ns(Process_s)
 #define kwsysProcess_New                 kwsys_ns(Process_New)