From 60373e01fa9273751b037998329645072e21e837 Mon Sep 17 00:00:00 2001 From: Christophe Fergeau Date: Tue, 19 Apr 2011 22:58:36 +0200 Subject: common: add extern "C" guards to headers Since some spice C++ code is using code from common/, the C functions need to be marked as such for the C++ compiler, otherwise we'll get linkage issues. --- common/canvas_base.h | 8 ++++++++ common/canvas_utils.h | 8 ++++++++ common/draw.h | 8 ++++++++ common/gdi_canvas.h | 8 ++++++++ common/gl_canvas.h | 7 +++++++ common/gl_utils.h | 8 ++++++++ common/glc.h | 8 ++++++++ common/lines.h | 8 ++++++++ common/lz.h | 7 +++++++ common/lz_common.h | 7 +++++++ common/marshaller.h | 8 ++++++++ common/mem.h | 7 +++++++ common/messages.h | 10 ++++++++-- common/mutex.h | 9 +++++++++ common/ogl_ctx.h | 8 ++++++++ common/pixman_utils.h | 8 ++++++++ common/quic.h | 8 ++++++++ common/quic_config.h | 8 ++++++++ common/rect.h | 8 ++++++++ common/region.h | 8 ++++++++ common/ring.h | 8 ++++++++ common/rop3.h | 9 +++++++++ common/sw_canvas.h | 8 ++++++++ 23 files changed, 182 insertions(+), 2 deletions(-) (limited to 'common') diff --git a/common/canvas_base.h b/common/canvas_base.h index 2166dcf5..ff0f972e 100644 --- a/common/canvas_base.h +++ b/common/canvas_base.h @@ -25,6 +25,10 @@ #include "region.h" #include "draw.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef void (*spice_destroy_fn_t)(void *data); typedef struct _SpiceImageCache SpiceImageCache; @@ -310,4 +314,8 @@ struct _SpiceCanvas { SpiceCanvasOps *ops; }; +#ifdef __cplusplus +} +#endif + #endif diff --git a/common/canvas_utils.h b/common/canvas_utils.h index b87b8164..ffed927a 100644 --- a/common/canvas_utils.h +++ b/common/canvas_utils.h @@ -24,6 +24,10 @@ #include "pixman_utils.h" #include "lz.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef struct PixmanData { #ifdef WIN32 HBITMAP bitmap; @@ -65,4 +69,8 @@ typedef struct LzDecodeUsrData { pixman_image_t *alloc_lz_image_surface(LzDecodeUsrData *canvas_data, pixman_format_code_t pixman_format, int width, int height, int gross_pixels, int top_down); +#ifdef __cplusplus +} +#endif + #endif diff --git a/common/draw.h b/common/draw.h index cb15672f..793169ff 100644 --- a/common/draw.h +++ b/common/draw.h @@ -35,6 +35,10 @@ #include #include "mem.h" +#ifdef __cplusplus +extern "C" { +#endif + #define SPICE_GET_ADDRESS(addr) ((void *)(unsigned long)(addr)) #define SPICE_SET_ADDRESS(addr, val) ((addr) = (unsigned long)(val)) @@ -270,4 +274,8 @@ typedef struct SpiceCursorHeader { uint16_t hot_spot_y; } SpiceCursorHeader; +#ifdef __cplusplus +} +#endif + #endif /* _H_SPICE_DRAW */ diff --git a/common/gdi_canvas.h b/common/gdi_canvas.h index b3d4b15e..5cdffb3d 100644 --- a/common/gdi_canvas.h +++ b/common/gdi_canvas.h @@ -21,6 +21,10 @@ #include +#ifdef __cplusplus +extern "C" { +#endif + #include "pixman_utils.h" #include "canvas_base.h" #include "region.h" @@ -36,4 +40,8 @@ SpiceCanvas *gdi_canvas_create(int width, int height, void gdi_canvas_init(); +#ifdef __cplusplus +} +#endif + #endif diff --git a/common/gl_canvas.h b/common/gl_canvas.h index d7125e60..ff3fba06 100644 --- a/common/gl_canvas.h +++ b/common/gl_canvas.h @@ -20,6 +20,10 @@ #include "canvas_base.h" #include "region.h" +#ifdef __cplusplus +extern "C" { +#endif + SpiceCanvas *gl_canvas_create(int width, int height, uint32_t format #ifdef SW_CANVAS_CACHE , SpiceImageCache *bits_cache @@ -35,3 +39,6 @@ SpiceCanvas *gl_canvas_create(int width, int height, uint32_t format void gl_canvas_set_textures_lost(SpiceCanvas *canvas, int textures_lost); void gl_canvas_init(); +#ifdef __cplusplus +} +#endif diff --git a/common/gl_utils.h b/common/gl_utils.h index eecff269..175f1316 100644 --- a/common/gl_utils.h +++ b/common/gl_utils.h @@ -21,6 +21,10 @@ #ifndef GL_UTILS_H #define GL_UTILS_H +#ifdef __cplusplus +extern "C" { +#endif + #ifdef RED_DEBUG #define GLC_ERROR_TEST_FLUSH { \ GLenum gl_err; glFlush(); \ @@ -102,4 +106,8 @@ static inline int gl_get_to_power_two(unsigned int val) return 1 << find_msb(val); } +#ifdef __cplusplus +} +#endif + #endif diff --git a/common/glc.h b/common/glc.h index a6b8579a..d77f003f 100644 --- a/common/glc.h +++ b/common/glc.h @@ -23,6 +23,10 @@ #include +#ifdef __cplusplus +extern "C" { +#endif + typedef void * GLCCtx; typedef void * GLCPattern; typedef void * GLCPath; @@ -156,4 +160,8 @@ void glc_clear(GLCCtx glc); GLCCtx glc_create(int width, int height); void glc_destroy(GLCCtx glc, int textures_lost); +#ifdef __cplusplus +} +#endif + #endif diff --git a/common/lines.h b/common/lines.h index 1d092f05..73eef9bc 100644 --- a/common/lines.h +++ b/common/lines.h @@ -54,6 +54,10 @@ SOFTWARE. #include #include "draw.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef struct lineGC lineGC; typedef struct { @@ -127,4 +131,8 @@ extern int spice_canvas_clip_spans(pixman_region32_t *clip_region, int *new_widths, int sorted); +#ifdef __cplusplus +} +#endif + #endif /* LINES_H */ diff --git a/common/lz.h b/common/lz.h index 993609f2..472e34dd 100644 --- a/common/lz.h +++ b/common/lz.h @@ -10,6 +10,10 @@ #include "lz_config.h" #include "draw.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef void *LzContext; typedef struct LzUsrContext LzUsrContext; @@ -71,5 +75,8 @@ LzContext *lz_create(LzUsrContext *usr); void lz_destroy(LzContext *lz); +#ifdef __cplusplus +} +#endif #endif // __LZ_H diff --git a/common/lz_common.h b/common/lz_common.h index 34276afb..4156cffc 100644 --- a/common/lz_common.h +++ b/common/lz_common.h @@ -23,6 +23,10 @@ #ifndef _LZ_COMMON_H #define _LZ_COMMON_H +#ifdef __cplusplus +extern "C" { +#endif + //#define DEBUG /* change the max window size will require change in the encoding format*/ @@ -58,5 +62,8 @@ static const int RGB_BYTES_PER_PIXEL[] = {0, 1, 1, 1, 1, 1, 2, 3, 4, 4, 4}; #define LZ_VERSION_MINOR 1U #define LZ_VERSION ((LZ_VERSION_MAJOR << 16) | (LZ_VERSION_MINOR & 0xffff)) +#ifdef __cplusplus +} +#endif #endif // _LZ_COMMON_H diff --git a/common/marshaller.h b/common/marshaller.h index 4d771401..0a61fefd 100644 --- a/common/marshaller.h +++ b/common/marshaller.h @@ -25,6 +25,10 @@ #include #endif +#ifdef __cplusplus +extern "C" { +#endif + typedef struct SpiceMarshaller SpiceMarshaller; typedef void (*spice_marshaller_item_free_func)(uint8_t *data, void *opaque); @@ -63,4 +67,8 @@ void *spice_marshaller_add_int8(SpiceMarshaller *m, int8_t v); void spice_marshaller_set_uint32(SpiceMarshaller *m, void *ref, uint32_t v); +#ifdef __cplusplus +} +#endif + #endif diff --git a/common/mem.h b/common/mem.h index 797bba0a..8ba6586b 100644 --- a/common/mem.h +++ b/common/mem.h @@ -22,6 +22,10 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif + typedef struct SpiceChunk { uint8_t *data; uint32_t len; @@ -120,4 +124,7 @@ void spice_buffer_append(SpiceBuffer *buffer, const void *data, size_t len); size_t spice_buffer_copy(SpiceBuffer *buffer, void *dest, size_t len); size_t spice_buffer_remove(SpiceBuffer *buffer, size_t len); +#ifdef __cplusplus +} +#endif #endif diff --git a/common/messages.h b/common/messages.h index 1a60a9fa..6fcd8bea 100644 --- a/common/messages.h +++ b/common/messages.h @@ -34,6 +34,10 @@ #include #include "draw.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef struct SpiceMsgData { uint32_t data_size; uint8_t data[0]; @@ -494,6 +498,8 @@ typedef struct SpiceMsgcTunnelSocketTokens { uint32_t num_tokens; } SpiceMsgcTunnelSocketTokens; -#endif /* _H_SPICE_PROTOCOL */ - +#ifdef __cplusplus +} +#endif +#endif /* _H_SPICE_PROTOCOL */ diff --git a/common/mutex.h b/common/mutex.h index a2d35dec..6789b8f4 100644 --- a/common/mutex.h +++ b/common/mutex.h @@ -18,6 +18,11 @@ #ifndef _H_MUTEX #define _H_MUTEX + +#ifdef __cplusplus +extern "C" { +#endif + #ifdef _WIN32 #include typedef CRITICAL_SECTION mutex_t; @@ -32,4 +37,8 @@ typedef pthread_mutex_t mutex_t; #define MUTEX_UNLOCK(mutex) pthread_mutex_unlock(&mutex) #endif +#ifdef __cplusplus +} +#endif + #endif // _H_MUTEX diff --git a/common/ogl_ctx.h b/common/ogl_ctx.h index 3abe6d71..ae2ce7e1 100644 --- a/common/ogl_ctx.h +++ b/common/ogl_ctx.h @@ -19,6 +19,10 @@ #ifndef _H_GLCTX #define _H_GLCTX +#ifdef __cplusplus +extern "C" { +#endif + typedef struct OGLCtx OGLCtx; const char *oglctx_type_str(OGLCtx *ctx); @@ -27,5 +31,9 @@ OGLCtx *pbuf_create(int width, int heigth); OGLCtx *pixmap_create(int width, int heigth); void oglctx_destroy(OGLCtx *ctx); +#ifdef __cplusplus +} +#endif + #endif diff --git a/common/pixman_utils.h b/common/pixman_utils.h index e15b682f..61eaddd9 100644 --- a/common/pixman_utils.h +++ b/common/pixman_utils.h @@ -26,6 +26,10 @@ #include "draw.h" +#ifdef __cplusplus +extern "C" { +#endif + /* This lists all possible 2 argument binary raster ops. * This enum has the same values as the X11 GXcopy type * and same as the GL constants (GL_AND etc) if you @@ -125,4 +129,8 @@ void spice_pixman_copy_rect(pixman_image_t *image, int w, int h, int dest_x, int dest_y); +#ifdef __cplusplus +} +#endif + #endif /* _H__PIXMAN_UTILS */ diff --git a/common/quic.h b/common/quic.h index f4ef8543..d0317772 100644 --- a/common/quic.h +++ b/common/quic.h @@ -21,6 +21,10 @@ #include "quic_config.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef enum { QUIC_IMAGE_TYPE_INVALID, QUIC_IMAGE_TYPE_GRAY, @@ -61,5 +65,9 @@ void quic_destroy(QuicContext *quic); void quic_init(); +#ifdef __cplusplus +} +#endif + #endif diff --git a/common/quic_config.h b/common/quic_config.h index 1273dbc0..da5e51ca 100644 --- a/common/quic_config.h +++ b/common/quic_config.h @@ -21,6 +21,10 @@ #include +#ifdef __cplusplus +extern "C" { +#endif + #ifdef __GNUC__ #include @@ -47,5 +51,9 @@ #endif +#ifdef __cplusplus +} +#endif + #endif diff --git a/common/rect.h b/common/rect.h index cdd43350..6d7c4466 100644 --- a/common/rect.h +++ b/common/rect.h @@ -22,6 +22,10 @@ #include "draw.h" #include +#ifdef __cplusplus +extern "C" { +#endif + static inline void rect_sect(SpiceRect* r, const SpiceRect* bounds) { r->left = MAX(r->left, bounds->left); @@ -72,6 +76,10 @@ static inline int rect_is_same_size(const SpiceRect *r1, const SpiceRect *r2) r1->bottom - r1->top == r2->bottom - r2->top; } +#ifdef __cplusplus +} +#endif + #ifdef __cplusplus static inline void rect_sect(SpiceRect& r, const SpiceRect& bounds) diff --git a/common/region.h b/common/region.h index bad7494f..16ec6eb7 100644 --- a/common/region.h +++ b/common/region.h @@ -23,6 +23,10 @@ #include "draw.h" #include +#ifdef __cplusplus +extern "C" { +#endif + typedef pixman_region32_t QRegion; #define REGION_TEST_LEFT_EXCLUSIVE (1 << 0) @@ -59,5 +63,9 @@ void region_offset(QRegion *rgn, int32_t dx, int32_t dy); void region_dump(const QRegion *rgn, const char *prefix); +#ifdef __cplusplus +} +#endif + #endif diff --git a/common/ring.h b/common/ring.h index a013a2fa..ff4ef6dd 100644 --- a/common/ring.h +++ b/common/ring.h @@ -21,6 +21,10 @@ #include "spice_common.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef struct Ring RingItem; typedef struct Ring { RingItem *prev; @@ -150,5 +154,9 @@ static inline RingItem *ring_prev(Ring *ring, RingItem *pos) (var) = ring_prev(ring, var)) +#ifdef __cplusplus +} +#endif + #endif diff --git a/common/rop3.h b/common/rop3.h index 02111308..549b02cd 100644 --- a/common/rop3.h +++ b/common/rop3.h @@ -24,11 +24,20 @@ #include "draw.h" #include "pixman_utils.h" +#ifdef __cplusplus +extern "C" { +#endif + void do_rop3_with_pattern(uint8_t rop3, pixman_image_t *d, pixman_image_t *s, SpicePoint *src_pos, pixman_image_t *p, SpicePoint *pat_pos); void do_rop3_with_color(uint8_t rop3, pixman_image_t *d, pixman_image_t *s, SpicePoint *src_pos, uint32_t rgb); void rop3_init(); + +#ifdef __cplusplus +} +#endif + #endif diff --git a/common/sw_canvas.h b/common/sw_canvas.h index 99deac88..42f2573f 100644 --- a/common/sw_canvas.h +++ b/common/sw_canvas.h @@ -26,6 +26,10 @@ #include "canvas_base.h" #include "region.h" +#ifdef __cplusplus +extern "C" { +#endif + SpiceCanvas *canvas_create(int width, int height, uint32_t format #ifdef SW_CANVAS_CACHE , SpiceImageCache *bits_cache @@ -55,4 +59,8 @@ SpiceCanvas *canvas_create_for_data(int width, int height, uint32_t format, uint void sw_canvas_init(); +#ifdef __cplusplus +} +#endif + #endif -- cgit