Fix multiple definition and cast
authorLoïc Collignon <loic.collignon@iot.bzh>
Fri, 4 Jan 2019 14:49:18 +0000 (15:49 +0100)
committerLoïc Collignon <loic.collignon@iot.bzh>
Fri, 4 Jan 2019 15:54:53 +0000 (16:54 +0100)
The function was defined as many time as the header was included.
Making it a weak function fix the issue.
Also, a plain old C cast is required to make this constexpr valid.

Change-Id: Iee5677873180accfddcad0b3a58f3776f9fd8c5e
Signed-off-by: Loïc Collignon <loic.collignon@iot.bzh>
include/afb/c++/binding-wrap.hpp

index edca070..c65c4c7 100644 (file)
@@ -571,8 +571,7 @@ constexpr afb_verb_t verb(
        return r;
 }
 
-#if AFB_BINDING_VERSION >= 3
-void __afb__verb__cb__for__global__(afb_req_t r)
+void __attribute__((weak)) __afb__verb__cb__for__global__(afb_req_t r)
 {
        void *vcbdata;
        void (*callback)(req);
@@ -587,8 +586,7 @@ constexpr afb_verb_t verb(
        void (&callback)(req),
        const char *info = nullptr,
        uint16_t session = 0,
-       const afb_auth *auth = nullptr
-       ,
+       const afb_auth *auth = nullptr,
        bool glob = false,
        void *vcbdata = nullptr
 )
@@ -600,10 +598,9 @@ constexpr afb_verb_t verb(
                session,
                auth,
                glob,
-               reinterpret_cast<void*>(&callback)
+               (void*)(&callback)
        );
 }
-#endif
 
 constexpr afb_verb_t verbend()
 {