On 23 March 2015 at 11:42, Maxim Uvarov <[email protected]> wrote:
> On 03/23/15 13:25, Ola Liljedahl wrote: > >> On 21 March 2015 at 00:18, Bill Fischofer <[email protected] >> <mailto:[email protected]>> wrote: >> >> This patch seems to generate a raft of doxygen warnings: >> >> I didn't test that... >> Doxygen doesn't use the preprocessor? And my patch requires the >> preprocessor for generating the typedefs. I did not want to have to use >> #ifdef __cplusplus in every header file, thus the macro. >> Could have done it like this, for every type... >> #ifdef __cplusplus >> typedef struct _odp_packet_t { uint8_t unused_dummy_var; } *odp_packet_t; >> //Or perhaps use the new macro here? Which #if path is used by doxygen? >> Should we swap the C and C++ cases? >> #else >> typedef odp_handle_t odp_packet_t; >> #endif >> >> What's the minimal changes we need to keep doxygen happy? >> >> >> > I think you patch is correct but you need add define to PREDEFINED in > doxygen config: > http://www.stack.nl/~dimitri/doxygen/manual/preprocessing.html > > Great there is a solution for this. I will try it out. Thanks Maxim. > Maxim. > > >> rm -rf doc/output >> SRCDIR='.' PROJECT='OpenDataPlane' DOCDIR='doc/output' >> VERSION='1.0.1' WITH_PLATFORM='linux-generic' >> PERL_PATH='/usr/bin/perl' HAVE_DOT='NO' GENERATE_MAN='NO' >> GENERATE_RTF='NO' GENERATE_XML='NO' GENERATE_HTMLHELP='NO' >> GENERATE_CHI='NO' GENERATE_HTML='YES' GENERATE_LATEX='YES' >> /usr/bin/doxygen ./doc/doxygen.cfg >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/buffer.h:29: >> warning: documented symbol `odp_buffer_t' was not declared or defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/buffer.h:39: >> warning: documented symbol `odp_buffer_seg_t' was not declared or >> defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/classification.h:29: >> warning: documented symbol `odp_cos_t' was not declared or defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/classification.h:34: >> warning: documented symbol `odp_flowsig_t' was not declared or >> defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/classification.h:186: >> warning: documented symbol `odp_pmr_t' was not declared or defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/classification.h:349: >> warning: documented symbol `odp_pmr_set_t' was not declared or >> defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/crypto.h:37: >> warning: documented symbol `odp_crypto_compl_t' was not declared >> or defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/event.h:29: >> warning: documented symbol `odp_event_t' was not declared or defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/packet.h:27: >> warning: documented symbol `odp_packet_t' was not declared or defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/packet.h:42: >> warning: documented symbol `odp_packet_seg_t' was not declared or >> defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/packet_io.h:27: >> warning: documented symbol `odp_pktio_t' was not declared or defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/pool.h:31: >> warning: documented symbol `odp_pool_t' was not declared or defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/queue.h:28: >> warning: documented symbol `odp_queue_t' was not declared or defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/queue.h:33: >> warning: documented symbol `odp_queue_group_t' was not declared or >> defined. >> /home/bill/linaro/check-odp/build/odp-apply/include/odp/ >> api/shared_memory.h:28: >> warning: documented symbol `odp_shm_t' was not declared or defined. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/classification_types.h:26: >> warning: Member ODP_HANDLE_T(odp_cos_t) (function) of group >> odp_classification is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/classification_types.h:27: >> warning: Member ODP_HANDLE_T(odp_flowsig_t) (function) of group >> odp_classification is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/classification_types.h:34: >> warning: Member ODP_HANDLE_T(odp_pmr_t) (function) of group >> odp_classification is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/classification_types.h:37: >> warning: Member ODP_HANDLE_T(odp_pmr_set_t) (function) of group >> odp_classification is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/crypto_types.h:28: >> warning: Member ODP_HANDLE_T(odp_crypto_compl_t) (function) of >> group odp_crypto is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/event_types.h:29: >> warning: Member ODP_HANDLE_T(odp_event_t) (function) of group >> odp_event is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/packet_io_types.h:29: >> warning: Member ODP_HANDLE_T(odp_pktio_t) (function) of group >> odp_packet_io is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/packet_types.h:29: >> warning: Member ODP_HANDLE_T(odp_packet_t) (function) of group >> odp_packet is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/packet_types.h:35: >> warning: Member ODP_HANDLE_T(odp_packet_seg_t) (function) of group >> odp_packet is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/pool_types.h:28: >> warning: Member ODP_HANDLE_T(odp_pool_t) (function) of group >> odp_buffer is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/queue_types.h:28: >> warning: Member ODP_HANDLE_T(odp_queue_t) (function) of group >> odp_queue is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/queue_types.h:30: >> warning: Member ODP_HANDLE_T(odp_queue_group_t) (function) of >> group odp_queue is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/shared_memory_types.h:29: >> warning: Member ODP_HANDLE_T(odp_shm_t) (function) of group >> odp_shared_memory is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/pool_types.h:28: >> warning: Member ODP_HANDLE_T(odp_pool_t) (function) of group >> odp_buffer is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/classification_types.h:26: >> warning: Member ODP_HANDLE_T(odp_cos_t) (function) of group >> odp_classification is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/classification_types.h:27: >> warning: Member ODP_HANDLE_T(odp_flowsig_t) (function) of group >> odp_classification is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/classification_types.h:34: >> warning: Member ODP_HANDLE_T(odp_pmr_t) (function) of group >> odp_classification is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/classification_types.h:37: >> warning: Member ODP_HANDLE_T(odp_pmr_set_t) (function) of group >> odp_classification is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/crypto_types.h:28: >> warning: Member ODP_HANDLE_T(odp_crypto_compl_t) (function) of >> group odp_crypto is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/event_types.h:29: >> warning: Member ODP_HANDLE_T(odp_event_t) (function) of group >> odp_event is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/packet_types.h:29: >> warning: Member ODP_HANDLE_T(odp_packet_t) (function) of group >> odp_packet is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/packet_types.h:35: >> warning: Member ODP_HANDLE_T(odp_packet_seg_t) (function) of group >> odp_packet is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/packet_io_types.h:29: >> warning: Member ODP_HANDLE_T(odp_pktio_t) (function) of group >> odp_packet_io is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/queue_types.h:28: >> warning: Member ODP_HANDLE_T(odp_queue_t) (function) of group >> odp_queue is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/queue_types.h:30: >> warning: Member ODP_HANDLE_T(odp_queue_group_t) (function) of >> group odp_queue is not documented. >> /home/bill/linaro/check-odp/build/odp-apply/platform/ >> linux-generic/include/odp/plat/shared_memory_types.h:29: >> warning: Member ODP_HANDLE_T(odp_shm_t) (function) of group >> odp_shared_memory is not documented. >> >> >> >> On Fri, Mar 20, 2015 at 5:16 PM, Ola Liljedahl >> <[email protected] <mailto:[email protected]>> wrote: >> >> Typedefs to anonymous structs creates problems for C++ programs: >> GCC: >> warning: ‘odp_crypto_op_params’ has a field >> ‘odp_crypto_op_params::pkt’ >> whose type uses the anonymous namespace >> error: anonymous type with no linkage used to declare function >> ‘<anonymous struct>* ppp_packet::get_queue() const’ with linkage >> CLANG: >> extern odp_pool_t tmo_pool; >> warning: variable 'tmo_pool' has internal linkage but is not >> defined >> When linking: >> undefined reference to `tmo_pool' >> >> The solution is to add a (unique) name to all structs used by >> the strong >> typing typedefs. >> >> Signed-off-by: Ola Liljedahl <[email protected] >> <mailto:[email protected]>> >> >> --- >> (This document/code contribution attached is provided under >> the terms of >> agreement LES-LTM-21309) >> >> platform/linux-generic/include/odp/plat/buffer_types.h >> | 4 ++-- >> platform/linux-generic/include/odp/plat/classification_types.h | >> 8 ++++---- >> platform/linux-generic/include/odp/plat/crypto_types.h >> | 2 +- >> platform/linux-generic/include/odp/plat/event_types.h >> | 2 +- >> platform/linux-generic/include/odp/plat/packet_io_types.h >> | 2 +- >> platform/linux-generic/include/odp/plat/packet_types.h >> | 4 ++-- >> platform/linux-generic/include/odp/plat/pool_types.h >> | 2 +- >> platform/linux-generic/include/odp/plat/queue_types.h >> | 4 ++-- >> platform/linux-generic/include/odp/plat/shared_memory_types.h >> | 2 +- >> platform/linux-generic/include/odp/plat/strong_types.h >> | 6 +++++- >> 10 files changed, 20 insertions(+), 16 deletions(-) >> >> diff --git >> a/platform/linux-generic/include/odp/plat/buffer_types.h >> b/platform/linux-generic/include/odp/plat/buffer_types.h >> index 3e7070e..0c017ae 100644 >> --- a/platform/linux-generic/include/odp/plat/buffer_types.h >> +++ b/platform/linux-generic/include/odp/plat/buffer_types.h >> @@ -26,13 +26,13 @@ extern "C" { >> */ >> >> /** ODP buffer */ >> -typedef odp_handle_t odp_buffer_t; >> +typedef ODP_HANDLE_T(odp_buffer_t); >> >> /** Invalid buffer */ >> #define ODP_BUFFER_INVALID _odp_cast_scalar(odp_buffer_t, >> 0xffffffff) >> >> /** ODP buffer segment */ >> -typedef odp_handle_t odp_buffer_seg_t; >> +typedef ODP_HANDLE_T(odp_buffer_seg_t); >> >> /** Invalid segment */ >> #define ODP_SEGMENT_INVALID >> ((odp_buffer_seg_t)ODP_BUFFER_INVALID) >> diff --git >> a/platform/linux-generic/include/odp/plat/classification_types.h >> b/platform/linux-generic/include/odp/plat/classification_types.h >> index 042d8c8..767da7d 100644 >> --- >> a/platform/linux-generic/include/odp/plat/classification_types.h >> +++ >> b/platform/linux-generic/include/odp/plat/classification_types.h >> @@ -23,18 +23,18 @@ extern "C" { >> * @{ >> */ >> >> -typedef odp_handle_t odp_cos_t; >> -typedef odp_handle_t odp_flowsig_t; >> +typedef ODP_HANDLE_T(odp_cos_t); >> +typedef ODP_HANDLE_T(odp_flowsig_t); >> >> #define ODP_COS_INVALID _odp_cast_scalar(odp_cos_t, ~0) >> #define ODP_COS_NAME_LEN 32 >> >> typedef uint16_t odp_cos_flow_set_t; >> >> -typedef odp_handle_t odp_pmr_t; >> +typedef ODP_HANDLE_T(odp_pmr_t); >> #define ODP_PMR_INVAL _odp_cast_scalar(odp_pmr_t, ~0) >> >> -typedef odp_handle_t odp_pmr_set_t; >> +typedef ODP_HANDLE_T(odp_pmr_set_t); >> #define ODP_PMR_SET_INVAL _odp_cast_scalar(odp_pmr_set_t, ~0) >> >> /** Get printable format of odp_cos_t */ >> diff --git >> a/platform/linux-generic/include/odp/plat/crypto_types.h >> b/platform/linux-generic/include/odp/plat/crypto_types.h >> index 1b10a5d..a91d88e 100644 >> --- a/platform/linux-generic/include/odp/plat/crypto_types.h >> +++ b/platform/linux-generic/include/odp/plat/crypto_types.h >> @@ -25,7 +25,7 @@ extern "C" { >> #define ODP_CRYPTO_SESSION_INVALID (0xffffffffffffffffULL) >> >> typedef uint64_t odp_crypto_session_t; >> -typedef odp_handle_t odp_crypto_compl_t; >> +typedef ODP_HANDLE_T(odp_crypto_compl_t); >> >> enum odp_crypto_op_mode { >> ODP_CRYPTO_SYNC, >> diff --git >> a/platform/linux-generic/include/odp/plat/event_types.h >> b/platform/linux-generic/include/odp/plat/event_types.h >> index 24be22f..d91937d 100644 >> --- a/platform/linux-generic/include/odp/plat/event_types.h >> +++ b/platform/linux-generic/include/odp/plat/event_types.h >> @@ -26,7 +26,7 @@ extern "C" { >> * @{ >> */ >> >> -typedef odp_handle_t odp_event_t; >> +typedef ODP_HANDLE_T(odp_event_t); >> >> #define ODP_EVENT_INVALID _odp_cast_scalar(odp_event_t, >> 0xffffffff) >> >> diff --git >> a/platform/linux-generic/include/odp/plat/packet_io_types.h >> b/platform/linux-generic/include/odp/plat/packet_io_types.h >> index 60592e3..3cc64c6 100644 >> --- a/platform/linux-generic/include/odp/plat/packet_io_types.h >> +++ b/platform/linux-generic/include/odp/plat/packet_io_types.h >> @@ -26,7 +26,7 @@ extern "C" { >> * @{ >> */ >> >> -typedef odp_handle_t odp_pktio_t; >> +typedef ODP_HANDLE_T(odp_pktio_t); >> >> #define ODP_PKTIO_INVALID _odp_cast_scalar(odp_pktio_t, 0) >> >> diff --git >> a/platform/linux-generic/include/odp/plat/packet_types.h >> b/platform/linux-generic/include/odp/plat/packet_types.h >> index 57e9662..45cb801 100644 >> --- a/platform/linux-generic/include/odp/plat/packet_types.h >> +++ b/platform/linux-generic/include/odp/plat/packet_types.h >> @@ -26,13 +26,13 @@ extern "C" { >> * @{ >> */ >> >> -typedef odp_handle_t odp_packet_t; >> +typedef ODP_HANDLE_T(odp_packet_t); >> >> #define ODP_PACKET_INVALID _odp_cast_scalar(odp_packet_t, >> 0xffffffff) >> >> #define ODP_PACKET_OFFSET_INVALID (0x0fffffff) >> >> -typedef odp_handle_t odp_packet_seg_t; >> +typedef ODP_HANDLE_T(odp_packet_seg_t); >> >> #define ODP_PACKET_SEG_INVALID >> _odp_cast_scalar(odp_packet_seg_t, 0xffffffff) >> >> diff --git >> a/platform/linux-generic/include/odp/plat/pool_types.h >> b/platform/linux-generic/include/odp/plat/pool_types.h >> index 71c7783..568556f 100644 >> --- a/platform/linux-generic/include/odp/plat/pool_types.h >> +++ b/platform/linux-generic/include/odp/plat/pool_types.h >> @@ -25,7 +25,7 @@ extern "C" { >> * @{ >> */ >> >> -typedef odp_handle_t odp_pool_t; >> +typedef ODP_HANDLE_T(odp_pool_t); >> >> #define ODP_POOL_INVALID _odp_cast_scalar(odp_pool_t, 0xffffffff) >> >> diff --git >> a/platform/linux-generic/include/odp/plat/queue_types.h >> b/platform/linux-generic/include/odp/plat/queue_types.h >> index 04a0be9..1cecc90 100644 >> --- a/platform/linux-generic/include/odp/plat/queue_types.h >> +++ b/platform/linux-generic/include/odp/plat/queue_types.h >> @@ -25,9 +25,9 @@ extern "C" { >> * @{ >> */ >> >> -typedef odp_handle_t odp_queue_t; >> +typedef ODP_HANDLE_T(odp_queue_t); >> >> -typedef odp_handle_t odp_queue_group_t; >> +typedef ODP_HANDLE_T(odp_queue_group_t); >> >> #define ODP_QUEUE_INVALID _odp_cast_scalar(odp_queue_t, 0) >> >> diff --git >> a/platform/linux-generic/include/odp/plat/shared_memory_types.h >> b/platform/linux-generic/include/odp/plat/shared_memory_types.h >> index d2e92cf..4be7356 100644 >> --- >> a/platform/linux-generic/include/odp/plat/shared_memory_types.h >> +++ >> b/platform/linux-generic/include/odp/plat/shared_memory_types.h >> @@ -26,7 +26,7 @@ extern "C" { >> * @{ >> */ >> >> -typedef odp_handle_t odp_shm_t; >> +typedef ODP_HANDLE_T(odp_shm_t); >> >> #define ODP_SHM_INVALID _odp_cast_scalar(odp_shm_t, 0) >> #define ODP_SHM_NULL ODP_SHM_INVALID >> diff --git >> a/platform/linux-generic/include/odp/plat/strong_types.h >> b/platform/linux-generic/include/odp/plat/strong_types.h >> index cd15853..39bdea3 100644 >> --- a/platform/linux-generic/include/odp/plat/strong_types.h >> +++ b/platform/linux-generic/include/odp/plat/strong_types.h >> @@ -16,7 +16,11 @@ >> #define STRONG_TYPES_H_ >> >> /** Use strong typing for ODP types */ >> -#define odp_handle_t struct { uint8_t unused_dummy_var; } * >> +#ifdef __cplusplus >> +#define ODP_HANDLE_T(type) struct _##type { uint8_t >> unused_dummy_var; } *type >> +#else >> +#define ODP_HANDLE_T(type) struct { } *type >> +#endif >> >> /** Internal macro to get value of an ODP handle */ >> #define _odp_typeval(handle) ((uint32_t)(uintptr_t)(handle)) >> -- >> 1.9.1 >> >> >> _______________________________________________ >> lng-odp mailing list >> [email protected] <mailto:[email protected]> >> http://lists.linaro.org/mailman/listinfo/lng-odp >> >> >> >> >> >> _______________________________________________ >> lng-odp mailing list >> [email protected] >> http://lists.linaro.org/mailman/listinfo/lng-odp >> > > > _______________________________________________ > lng-odp mailing list > [email protected] > http://lists.linaro.org/mailman/listinfo/lng-odp >
_______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
