Put variable/function declarations into extern 'C' in cord headers
authorIvan Maidanski <ivmai@mail.ru>
Wed, 7 Feb 2018 22:53:46 +0000 (01:53 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Wed, 7 Feb 2018 22:53:46 +0000 (01:53 +0300)
Issue #201 (bdwgc).

* include/cord.h: Wrap variable and function declarations (but not
included headers).
* include/cord_pos.h: Likewise.
* include/ec.h: Likewise.

include/cord.h
include/cord_pos.h
include/ec.h

index adac772..4ce89ff 100644 (file)
 #include <stddef.h>
 #include <stdio.h>
 
+#ifdef __cplusplus
+  extern "C" {
+#endif
+
 #if defined(GC_DLL) && !defined(CORD_NOT_DLL)
   /* Same as for GC_API in gc_config_macros.h.  */
 # ifdef CORD_BUILD
@@ -169,6 +173,10 @@ CORD_API int CORD_riter4(CORD x, size_t i, CORD_iter_fn f1, void * client_data);
 /* A simpler version that starts at the end:    */
 CORD_API int CORD_riter(CORD x, CORD_iter_fn f1, void * client_data);
 
+#ifdef __cplusplus
+  } /* extern "C" */
+#endif
+
 /* Functions that operate on cord positions.  The easy way to traverse  */
 /* cords.  A cord position is logically a pair consisting of a cord     */
 /* and an index into that cord.  But it is much faster to retrieve a    */
@@ -181,6 +189,10 @@ CORD_API int CORD_riter(CORD x, CORD_iter_fn f1, void * client_data);
 /* definitions.  The former may evaluate their argument more than once. */
 #include "cord_pos.h"
 
+#ifdef __cplusplus
+  extern "C" {
+#endif
+
 /*
         Visible definitions from above:
 
@@ -312,6 +324,9 @@ CORD_API size_t CORD_chr(CORD x, size_t i, int c);
 /* must be < CORD_len(x).                                               */
 CORD_API size_t CORD_rchr(CORD x, size_t i, int c);
 
+#ifdef __cplusplus
+  } /* extern "C" */
+#endif
 
 /* The following are also not primitive, but are implemented in         */
 /* cordprnt.c.  They provide functionality similar to the ANSI C        */
@@ -342,6 +357,10 @@ CORD_API size_t CORD_rchr(CORD x, size_t i, int c);
 
 #include <stdarg.h>
 
+# ifdef __cplusplus
+    extern "C" {
+# endif
+
 CORD_API int CORD_sprintf(CORD * out, CORD format, ...);
 CORD_API int CORD_vsprintf(CORD * out, CORD format, va_list args);
 CORD_API int CORD_fprintf(FILE * f, CORD format, ...);
@@ -349,6 +368,10 @@ CORD_API int CORD_vfprintf(FILE * f, CORD format, va_list args);
 CORD_API int CORD_printf(CORD format, ...);
 CORD_API int CORD_vprintf(CORD format, va_list args);
 
+# ifdef __cplusplus
+    } /* extern "C" */
+# endif
+
 #endif /* CORD_NO_IO */
 
 #endif /* CORD_H */
index beaa236..29d5df9 100644 (file)
 #if !defined(CORD_POSITION_H) && defined(CORD_H)
 #define CORD_POSITION_H
 
+#ifdef __cplusplus
+  extern "C" {
+#endif
+
 /* The representation of CORD_position.  This is private to the */
 /* implementation, but the size is known to clients.  Also      */
 /* the implementation of some exported macros relies on it.     */
@@ -117,4 +121,8 @@ CORD_API void CORD__prev(CORD_pos);
         (p)[0].cur_leaf + ((p)[0].cur_pos - (p)[0].cur_start)
         /* address of current character in cache.       */
 
+#ifdef __cplusplus
+  } /* extern "C" */
+#endif
+
 #endif
index 30806ed..904a05a 100644 (file)
@@ -5,6 +5,10 @@
 #  include "cord.h"
 # endif
 
+#ifdef __cplusplus
+  extern "C" {
+#endif
+
 /* Extensible cords are strings that may be destructively appended to.  */
 /* They allow fast construction of cords from characters that are       */
 /* being read from a stream.                                            */
@@ -65,4 +69,8 @@ void CORD_ec_flush_buf(CORD_ec x);
 /* original.                                                            */
 void CORD_ec_append_cord(CORD_ec x, CORD s);
 
+#ifdef __cplusplus
+  } /* extern "C" */
+#endif
+
 # endif /* EC_H */