diff options
Diffstat (limited to 'librabbitmq/codegen.py')
-rw-r--r-- | librabbitmq/codegen.py | 90 |
1 files changed, 55 insertions, 35 deletions
diff --git a/librabbitmq/codegen.py b/librabbitmq/codegen.py index 67255a6..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 @@ -366,15 +366,16 @@ def genErl(spec): * ***** END LICENSE BLOCK ***** */ -#include <stdlib.h> -#include <stdint.h> -#include <string.h> -#include <stdio.h> +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif -#include "amqp.h" -#include "amqp_framing.h" #include "amqp_private.h" #include "socket.h" +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> """ 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 <amqp.h> -#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_FUNCTION +char const * +AMQP_CALL amqp_constant_name(int constantNumber); + +AMQP_PUBLIC_FUNCTION +amqp_boolean_t +AMQP_CALL amqp_constant_is_hard_error(int constantNumber); + +AMQP_PUBLIC_FUNCTION +char const * +AMQP_CALL amqp_method_name(amqp_method_number_t methodNumber); + +AMQP_PUBLIC_FUNCTION +amqp_boolean_t +AMQP_CALL amqp_method_has_content(amqp_method_number_t methodNumber); + +AMQP_PUBLIC_FUNCTION +int +AMQP_CALL amqp_decode_method(amqp_method_number_t methodNumber, + amqp_pool_t *pool, + amqp_bytes_t encoded, + void **decoded); + +AMQP_PUBLIC_FUNCTION +int +AMQP_CALL amqp_decode_properties(uint16_t class_id, + amqp_pool_t *pool, + amqp_bytes_t encoded, + void **decoded); + +AMQP_PUBLIC_FUNCTION +int +AMQP_CALL amqp_encode_method(amqp_method_number_t methodNumber, + void *decoded, + amqp_bytes_t encoded); + +AMQP_PUBLIC_FUNCTION +int +AMQP_CALL 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 "%s;" % (m.apiPrototype(),) print """ -#ifdef __cplusplus -} -#endif +AMQP_END_DECLS -#endif""" +#endif /* AMQP_FRAMING_H */""" def generateErl(specPath): genErl(AmqpSpec(specPath)) |