From c921feb829e79a33938300350e61e3c3fb217968 Mon Sep 17 00:00:00 2001 From: Michael Steinert Date: Wed, 16 May 2012 12:13:31 -0600 Subject: Set default visibility to hidden & enable a couple more warnings Enable the following GCC options: 1. -Wstrict-prototypes 2. -Wcast-align 3. -fno-common 4. -fvisibility=hidden This commit also includes some general cleanup of header files (mostly for readability). Signed-off-by: Michael Steinert --- librabbitmq/codegen.py | 88 +++++++++++++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 34 deletions(-) (limited to 'librabbitmq/codegen.py') diff --git a/librabbitmq/codegen.py b/librabbitmq/codegen.py index 67255a6..f805751 100644 --- a/librabbitmq/codegen.py +++ b/librabbitmq/codegen.py @@ -366,15 +366,16 @@ def genErl(spec): * ***** END LICENSE BLOCK ***** */ -#include -#include -#include -#include +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif -#include "amqp.h" -#include "amqp_framing.h" #include "amqp_private.h" #include "socket.h" +#include +#include +#include +#include """ print """ @@ -551,14 +552,12 @@ def genHrl(spec): methods = spec.allMethods() print """/* Autogenerated code. Do not edit. */ -#ifndef librabbitmq_amqp_framing_h -#define librabbitmq_amqp_framing_h +#ifndef AMQP_FRAMING_H +#define AMQP_FRAMING_H #include -#ifdef __cplusplus -extern "C" { -#endif +AMQP_BEGIN_DECLS """ print "#define AMQP_PROTOCOL_VERSION_MAJOR %d" % (spec.major) print "#define AMQP_PROTOCOL_VERSION_MINOR %d" % (spec.minor) @@ -571,24 +570,47 @@ extern "C" { print """/* Function prototypes. */ -extern char const *amqp_constant_name(int constantNumber); -extern amqp_boolean_t amqp_constant_is_hard_error(int constantNumber); -RABBITMQ_EXPORT char const *amqp_method_name(amqp_method_number_t methodNumber); -extern amqp_boolean_t amqp_method_has_content(amqp_method_number_t methodNumber); -extern int amqp_decode_method(amqp_method_number_t methodNumber, - amqp_pool_t *pool, - amqp_bytes_t encoded, - void **decoded); -extern int amqp_decode_properties(uint16_t class_id, - amqp_pool_t *pool, - amqp_bytes_t encoded, - void **decoded); -extern int amqp_encode_method(amqp_method_number_t methodNumber, - void *decoded, - amqp_bytes_t encoded); -extern int amqp_encode_properties(uint16_t class_id, - void *decoded, - amqp_bytes_t encoded); +AMQP_PUBLIC +char const * +amqp_constant_name(int constantNumber); + +AMQP_PUBLIC +amqp_boolean_t +amqp_constant_is_hard_error(int constantNumber); + +AMQP_PUBLIC +char const * +amqp_method_name(amqp_method_number_t methodNumber); + +AMQP_PUBLIC +amqp_boolean_t +amqp_method_has_content(amqp_method_number_t methodNumber); + +AMQP_PUBLIC +int +amqp_decode_method(amqp_method_number_t methodNumber, + amqp_pool_t *pool, + amqp_bytes_t encoded, + void **decoded); + +AMQP_PUBLIC +int +amqp_decode_properties(uint16_t class_id, + amqp_pool_t *pool, + amqp_bytes_t encoded, + void **decoded); + +AMQP_PUBLIC +int +amqp_encode_method(amqp_method_number_t methodNumber, + void *decoded, + amqp_bytes_t encoded); + +AMQP_PUBLIC +int +amqp_encode_properties(uint16_t class_id, + void *decoded, + amqp_bytes_t encoded); """ print "/* Method field records. */\n" @@ -625,14 +647,12 @@ extern int amqp_encode_properties(uint16_t class_id, for m in methods: if m.isSynchronous and apiMethodInfo.get(m.fullName()) is not False: - print "RABBITMQ_EXPORT %s;" % (m.apiPrototype(),) + print "AMQP_PUBLIC\n%s;" % (m.apiPrototype(),) print """ -#ifdef __cplusplus -} -#endif +AMQP_END_DECLS -#endif""" +#endif /* AMQP_FRAMING_H */""" def generateErl(specPath): genErl(AmqpSpec(specPath)) -- cgit v1.2.1 From a1de9945125b9c06cdeb11e713258717b3179234 Mon Sep 17 00:00:00 2001 From: Alan Antonuk Date: Mon, 21 May 2012 14:31:58 -0400 Subject: Cleaning up Public API decorators on Win32 Removed duplicate #defines of AMQP_PUBLIC/AMQP_PRIVATE in amqp.h & amqp_private.h Split AMQP_PUBLIC into AMQP_PUBLIC_FUNCTION and AMQP_PUBLIC_VARIABLE Added AMQP_CALL to specify calling convention (__cdecl by default) Added -DAMQP_BUILD when building the library Added -DAMQP_STATIC when building the library statically (this is still incomplete on Win32, a installable amqp_config.h is required) --- librabbitmq/codegen.py | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) (limited to 'librabbitmq/codegen.py') diff --git a/librabbitmq/codegen.py b/librabbitmq/codegen.py index f805751..42d039d 100644 --- a/librabbitmq/codegen.py +++ b/librabbitmq/codegen.py @@ -250,7 +250,7 @@ def methodApiPrototype(m): args.append(" ") args.append(n) - return "%s_ok_t *%s(amqp_connection_state_t state, amqp_channel_t channel%s)" % (fn, fn, ''.join(args)) + return "AMQP_PUBLIC_FUNCTION %s_ok_t * AMQP_CALL %s(amqp_connection_state_t state, amqp_channel_t channel%s)" % (fn, fn, ''.join(args)) AmqpMethod.apiPrototype = methodApiPrototype @@ -570,45 +570,45 @@ AMQP_BEGIN_DECLS print """/* Function prototypes. */ -AMQP_PUBLIC +AMQP_PUBLIC_FUNCTION char const * -amqp_constant_name(int constantNumber); +AMQP_CALL amqp_constant_name(int constantNumber); -AMQP_PUBLIC +AMQP_PUBLIC_FUNCTION amqp_boolean_t -amqp_constant_is_hard_error(int constantNumber); +AMQP_CALL amqp_constant_is_hard_error(int constantNumber); -AMQP_PUBLIC +AMQP_PUBLIC_FUNCTION char const * -amqp_method_name(amqp_method_number_t methodNumber); +AMQP_CALL amqp_method_name(amqp_method_number_t methodNumber); -AMQP_PUBLIC +AMQP_PUBLIC_FUNCTION amqp_boolean_t -amqp_method_has_content(amqp_method_number_t methodNumber); +AMQP_CALL amqp_method_has_content(amqp_method_number_t methodNumber); -AMQP_PUBLIC +AMQP_PUBLIC_FUNCTION int -amqp_decode_method(amqp_method_number_t methodNumber, +AMQP_CALL amqp_decode_method(amqp_method_number_t methodNumber, amqp_pool_t *pool, amqp_bytes_t encoded, void **decoded); -AMQP_PUBLIC +AMQP_PUBLIC_FUNCTION int -amqp_decode_properties(uint16_t class_id, - amqp_pool_t *pool, - amqp_bytes_t encoded, - void **decoded); +AMQP_CALL amqp_decode_properties(uint16_t class_id, + amqp_pool_t *pool, + amqp_bytes_t encoded, + void **decoded); -AMQP_PUBLIC +AMQP_PUBLIC_FUNCTION int -amqp_encode_method(amqp_method_number_t methodNumber, +AMQP_CALL amqp_encode_method(amqp_method_number_t methodNumber, void *decoded, amqp_bytes_t encoded); -AMQP_PUBLIC +AMQP_PUBLIC_FUNCTION int -amqp_encode_properties(uint16_t class_id, +AMQP_CALL amqp_encode_properties(uint16_t class_id, void *decoded, amqp_bytes_t encoded); """ @@ -647,7 +647,7 @@ amqp_encode_properties(uint16_t class_id, for m in methods: if m.isSynchronous and apiMethodInfo.get(m.fullName()) is not False: - print "AMQP_PUBLIC\n%s;" % (m.apiPrototype(),) + print "%s;" % (m.apiPrototype(),) print """ AMQP_END_DECLS -- cgit v1.2.1