Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
bitmap: Allow bitmap type to be forward declared
Currently bitmap type is defined via untagged struct which makes it impossible to forward declare it. Forward-declaring is useful since all bitmap functions only use bitmap* and in public user-visible headers/datastructures it is enough to indicate that a data field with bitmap pointer is there, whereas bitmap.h can be included only in implementation. Beside that some headers are included by both C and C++ parts of a project, and when ccan/bitmap.h is processed by C++ compiler it gives: ./3rdparty/ccan/ccan/bitmap/bitmap.h: In function ‘bitmap* bitmap_alloc(long unsigned int)’: ./3rdparty/ccan/ccan/bitmap/bitmap.h:201:15: error: invalid conversion from ‘void*’ to ‘bitmap*’ [-fpermissive] return malloc(bitmap_sizeof(nbits)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~ ./3rdparty/ccan/ccan/bitmap/bitmap.h: In function ‘bitmap* bitmap_realloc0(bitmap*, long unsigned int, long unsigned int)’: ./3rdparty/ccan/ccan/bitmap/bitmap.h:227:18: error: invalid conversion from ‘void*’ to ‘bitmap*’ [-fpermissive] bitmap = realloc(bitmap, bitmap_sizeof(nbits)); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./3rdparty/ccan/ccan/bitmap/bitmap.h: In function ‘bitmap* bitmap_realloc1(bitmap*, long unsigned int, long unsigned int)’: ./3rdparty/ccan/ccan/bitmap/bitmap.h:238:18: error: invalid conversion from ‘void*’ to ‘bitmap*’ [-fpermissive] bitmap = realloc(bitmap, bitmap_sizeof(nbits)); -> Give to users ability not to force-include ccan/bitmap.h by forward-declaring bitmaps like this: typedef struct bitmap bitmap; ... struct MyStruct { bitmap *my_bitmap; }; Cc: David Gibson <[email protected]> Signed-off-by: Kirill Smelkov <[email protected]> Message-Id: <[email protected]> Signed-off-by: David Gibson <[email protected]>
- Loading branch information