[libcamera-devel] [PATCH 4/4] libcamera: Standardise on C compatibility headers

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Oct 23 16:24:33 CEST 2019


Hi Laurent,

On 23/10/2019 14:52, Laurent Pinchart wrote:
> Now that our usage of C compatibility header is documented, use them
> consistently through the source code. While at it, group the C and C++
> include statements, and fix a handful of #include ordering issues.

I think the 'handful' of include ordering issues is mostly where we
previously separated C and C++ header includes.

If we're removing this separation explicitly - I think stating that
clearly here would be good.

discussion comment down at the event_dispatcher_poll too...

> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

But otherwise, with those comments resolved in whichever way you deem best,

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>




> ---
>  include/libcamera/timer.h                     | 2 +-
>  src/cam/capture.cpp                           | 2 +-
>  src/cam/options.cpp                           | 2 +-
>  src/ipa/rkisp1/rkisp1.cpp                     | 2 +-
>  src/libcamera/device_enumerator_udev.cpp      | 5 ++---
>  src/libcamera/include/event_dispatcher_poll.h | 4 ++--
>  src/libcamera/include/ipc_unixsocket.h        | 2 +-
>  src/libcamera/log.cpp                         | 6 +++---
>  src/libcamera/media_device.cpp                | 3 +--
>  src/libcamera/media_object.cpp                | 3 +--
>  src/libcamera/stream.cpp                      | 2 +-
>  test/ipa/ipa_interface_test.cpp               | 3 +--
>  test/media_device/media_device_print_test.cpp | 2 +-
>  test/pipeline/ipu3/ipu3_pipeline_test.cpp     | 1 -
>  test/v4l2_subdevice/test_formats.cpp          | 2 +-
>  test/v4l2_videodevice/capture_async.cpp       | 4 ++--
>  test/v4l2_videodevice/controls.cpp            | 2 +-
>  test/v4l2_videodevice/formats.cpp             | 2 +-
>  18 files changed, 22 insertions(+), 27 deletions(-)
> 
> diff --git a/include/libcamera/timer.h b/include/libcamera/timer.h
> index 34e7b8ac8e87..f55fe3c09660 100644
> --- a/include/libcamera/timer.h
> +++ b/include/libcamera/timer.h
> @@ -8,7 +8,7 @@
>  #define __LIBCAMERA_TIMER_H__
>  
>  #include <chrono>
> -#include <cstdint>
> +#include <stdint.h>
>  
>  #include <libcamera/object.h>
>  #include <libcamera/signal.h>
> diff --git a/src/cam/capture.cpp b/src/cam/capture.cpp
> index 8a939c622703..d05c01f1b13e 100644
> --- a/src/cam/capture.cpp
> +++ b/src/cam/capture.cpp
> @@ -6,9 +6,9 @@
>   */
>  
>  #include <chrono>
> -#include <climits>
>  #include <iomanip>
>  #include <iostream>
> +#include <limits.h>
>  #include <sstream>
>  
>  #include "capture.h"
> diff --git a/src/cam/options.cpp b/src/cam/options.cpp
> index 7c3948df3b5c..1f0631eccfba 100644
> --- a/src/cam/options.cpp
> +++ b/src/cam/options.cpp
> @@ -5,7 +5,7 @@
>   * options.cpp - cam - Options parsing
>   */
>  
> -#include <cassert>
> +#include <assert.h>
>  #include <getopt.h>
>  #include <iomanip>
>  #include <iostream>
> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
> index 570145ce71b2..9a13f5c7df17 100644
> --- a/src/ipa/rkisp1/rkisp1.cpp
> +++ b/src/ipa/rkisp1/rkisp1.cpp
> @@ -6,9 +6,9 @@
>   */
>  
>  #include <algorithm>
> -#include <cstdint>
>  #include <math.h>
>  #include <queue>
> +#include <stdint.h>
>  #include <string.h>
>  
>  #include <linux/rkisp1-config.h>
> diff --git a/src/libcamera/device_enumerator_udev.cpp b/src/libcamera/device_enumerator_udev.cpp
> index ddcd59ea52c1..b2c5fd221dcd 100644
> --- a/src/libcamera/device_enumerator_udev.cpp
> +++ b/src/libcamera/device_enumerator_udev.cpp
> @@ -8,11 +8,10 @@
>  #include "device_enumerator_udev.h"
>  
>  #include <algorithm>
> -#include <list>
> -#include <map>
> -
>  #include <fcntl.h>
>  #include <libudev.h>
> +#include <list>
> +#include <map>
>  #include <string.h>
>  #include <sys/ioctl.h>
>  #include <sys/sysmacros.h>
> diff --git a/src/libcamera/include/event_dispatcher_poll.h b/src/libcamera/include/event_dispatcher_poll.h
> index d82b302c4aea..1f0738617425 100644
> --- a/src/libcamera/include/event_dispatcher_poll.h
> +++ b/src/libcamera/include/event_dispatcher_poll.h
> @@ -7,12 +7,12 @@
>  #ifndef __LIBCAMERA_EVENT_DISPATCHER_POLL_H__
>  #define __LIBCAMERA_EVENT_DISPATCHER_POLL_H__
>  
> -#include <libcamera/event_dispatcher.h>
> -
>  #include <list>
>  #include <map>
>  #include <vector>
>  
> +#include <libcamera/event_dispatcher.h>

>From 2/4

+The headers shall be grouped and ordered as follows.
+
+ # The header declaring the API being implemented (if any)
+ # The C and C++ system and standard library headers
+ # Other libraries' headers, with one group per library
+ # Other project's headers

Now that's a possible confusion point, /this/ EVENT_DISPATCHER_POLL
header /is/ implementing the API for an event dispatcher - so therefore
point one above could be seen to be declaring it should be first.

However, I suspect the intent of the ordering might be that it should
only be first if this is the header for this exact implementation, not
any virtual interface. But I don't know how to word that to remove
ambiguity :D

Or maybe this one should be first ... I'll leave it to you ...

> +
>  struct pollfd;
>  
>  namespace libcamera {
> diff --git a/src/libcamera/include/ipc_unixsocket.h b/src/libcamera/include/ipc_unixsocket.h
> index 03e9fe492bde..820d05611049 100644
> --- a/src/libcamera/include/ipc_unixsocket.h
> +++ b/src/libcamera/include/ipc_unixsocket.h
> @@ -8,7 +8,7 @@
>  #ifndef __LIBCAMERA_IPC_UNIXSOCKET_H__
>  #define __LIBCAMERA_IPC_UNIXSOCKET_H__
>  
> -#include <cstdint>
> +#include <stdint.h>
>  #include <sys/types.h>
>  #include <vector>
>  
> diff --git a/src/libcamera/log.cpp b/src/libcamera/log.cpp
> index 51f9f86b4c44..50f345b98c74 100644
> --- a/src/libcamera/log.cpp
> +++ b/src/libcamera/log.cpp
> @@ -7,14 +7,14 @@
>  
>  #include "log.h"
>  
> -#include <cstdio>
> -#include <cstdlib>
> -#include <ctime>
>  #include <fstream>
>  #include <iostream>
>  #include <list>
> +#include <stdio.h>
> +#include <stdlib.h>
>  #include <string.h>
>  #include <syslog.h>
> +#include <time.h>
>  #include <unordered_set>
>  
>  #include <libcamera/logging.h>
> diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp
> index bd99deba098d..0d6630fbd1f4 100644
> --- a/src/libcamera/media_device.cpp
> +++ b/src/libcamera/media_device.cpp
> @@ -9,11 +9,10 @@
>  
>  #include <errno.h>
>  #include <fcntl.h>
> +#include <string>
>  #include <string.h>
>  #include <sys/ioctl.h>
>  #include <unistd.h>
> -
> -#include <string>
>  #include <vector>

I kind of really like the separation between C headers and C++
headers... but ho hum. It's arbitrary.


>  #include <linux/media.h>
> diff --git a/src/libcamera/media_object.cpp b/src/libcamera/media_object.cpp
> index 8794ff4578c9..ef32065c161d 100644
> --- a/src/libcamera/media_object.cpp
> +++ b/src/libcamera/media_object.cpp
> @@ -8,10 +8,9 @@
>  #include "media_object.h"
>  
>  #include <errno.h>
> +#include <string>
>  #include <string.h>
>  #include <unistd.h>
> -
> -#include <string>
>  #include <vector>
>  
>  #include <linux/media.h>
> diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp
> index 610920d1e5b3..b8e7209c1047 100644
> --- a/src/libcamera/stream.cpp
> +++ b/src/libcamera/stream.cpp
> @@ -9,8 +9,8 @@
>  
>  #include <algorithm>
>  #include <array>
> -#include <climits>
>  #include <iomanip>
> +#include <limits.h>
>  #include <sstream>
>  
>  #include <libcamera/request.h>
> diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp
> index 0bdeb167a675..cafc249bbbc9 100644
> --- a/test/ipa/ipa_interface_test.cpp
> +++ b/test/ipa/ipa_interface_test.cpp
> @@ -6,13 +6,12 @@
>   */
>  
>  #include <fcntl.h>
> +#include <iostream>
>  #include <string.h>
>  #include <sys/stat.h>
>  #include <sys/types.h>
>  #include <unistd.h>
>  
> -#include <iostream>
> -

Hrm ... this does show that we have considered C and C++ headers as
separate groups previously - so this is definitely a change ... Worth
checking specifically with the others.

Either way, consistency is good.


>  #include <libcamera/event_dispatcher.h>
>  #include <libcamera/event_notifier.h>
>  #include <libcamera/timer.h>
> diff --git a/test/media_device/media_device_print_test.cpp b/test/media_device/media_device_print_test.cpp
> index 30d929b8c763..8dd8a151266d 100644
> --- a/test/media_device/media_device_print_test.cpp
> +++ b/test/media_device/media_device_print_test.cpp
> @@ -4,8 +4,8 @@
>   *
>   * media_device_print_test.cpp - Print out media devices
>   */
> -#include <iostream>
>  
> +#include <iostream>
>  #include <sys/types.h>
>  #include <sys/stat.h>
>  #include <unistd.h>
> diff --git a/test/pipeline/ipu3/ipu3_pipeline_test.cpp b/test/pipeline/ipu3/ipu3_pipeline_test.cpp
> index 8bfcd609a071..a5c6be0955df 100644
> --- a/test/pipeline/ipu3/ipu3_pipeline_test.cpp
> +++ b/test/pipeline/ipu3/ipu3_pipeline_test.cpp
> @@ -6,7 +6,6 @@
>   */
>  
>  #include <iostream>
> -
>  #include <sys/stat.h>
>  #include <sys/types.h>
>  #include <unistd.h>
> diff --git a/test/v4l2_subdevice/test_formats.cpp b/test/v4l2_subdevice/test_formats.cpp
> index e90c2c2426da..5cf5d5664b04 100644
> --- a/test/v4l2_subdevice/test_formats.cpp
> +++ b/test/v4l2_subdevice/test_formats.cpp
> @@ -5,8 +5,8 @@
>   * libcamera V4L2 Subdevice format handling test
>   */
>  
> -#include <climits>
>  #include <iostream>
> +#include <limits.h>
>  
>  #include "v4l2_subdevice.h"
>  #include "v4l2_subdevice_test.h"
> diff --git a/test/v4l2_videodevice/capture_async.cpp b/test/v4l2_videodevice/capture_async.cpp
> index 17eb528b12fd..442a4fe56eac 100644
> --- a/test/v4l2_videodevice/capture_async.cpp
> +++ b/test/v4l2_videodevice/capture_async.cpp
> @@ -5,12 +5,12 @@
>   * libcamera V4L2 API tests
>   */
>  
> +#include <iostream>
> +
>  #include <libcamera/buffer.h>
>  #include <libcamera/event_dispatcher.h>
>  #include <libcamera/timer.h>
>  
> -#include <iostream>
> -
>  #include "thread.h"
>  #include "v4l2_videodevice_test.h"
>  
> diff --git a/test/v4l2_videodevice/controls.cpp b/test/v4l2_videodevice/controls.cpp
> index 975c852b8cbf..42c653d4435a 100644
> --- a/test/v4l2_videodevice/controls.cpp
> +++ b/test/v4l2_videodevice/controls.cpp
> @@ -5,8 +5,8 @@
>   * controls.cpp - V4L2 device controls handling test
>   */
>  
> -#include <climits>
>  #include <iostream>
> +#include <limits.h>
>  
>  #include "v4l2_videodevice.h"
>  
> diff --git a/test/v4l2_videodevice/formats.cpp b/test/v4l2_videodevice/formats.cpp
> index ee7d357de075..d504d1788d02 100644
> --- a/test/v4l2_videodevice/formats.cpp
> +++ b/test/v4l2_videodevice/formats.cpp
> @@ -5,8 +5,8 @@
>   * libcamera V4L2 device format handling test
>   */
>  
> -#include <climits>
>  #include <iostream>
> +#include <limits.h>
>  
>  #include "v4l2_videodevice.h"
>  
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list