[{"id":21169,"web_url":"https://patchwork.libcamera.org/comment/21169/","msgid":"<YZ2q1eIPkssYEBql@pendragon.ideasonboard.com>","date":"2021-11-24T03:00:37","subject":"Re: [libcamera-devel] [PATCH 00/15] Use pragma once","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nThank you for the patch series.\n\nOn Tue, Nov 23, 2021 at 10:40:00PM +0000, Kieran Bingham wrote:\n> We've always used the following pattern to maintain idempotency with\n> headers:\n> \n>  #ifndef __PATH_TO_FILE_H__\n>  #define __PATH_TO_FILE_H__\n>  ..\n>  #endif // __PATH_TO_FILE_H__\n\nTurns out we had only two mismatches in header guards where the comment\nafter the #endif didn't match the macro name, not too bad :-)\n\n> This is fine, and long established, but makes for awkward names in cases\n> such as:\n>   src/ipa/ipu3/algorithm/algorithm.h\n> \n> requiring duplication, and constant concern over updating these names\n> when files are moved or renamed.\n> \n> Remove all ifndef usages and ensure consistency across the project using\n> \n>  #pragma once\n> \n> The changes are broken down into grouped components to ease review.\n\nThanks, that makes it easier to review the series.\n\nI have one comment for patch 03/15. For the rest of the series,\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> Kieran Bingham (15):\n>   libcamera: Convert to pragma once\n>   libcamera: base: Convert to pragma once\n>   libcamera: internal: Convert to pragma once\n>   libcamera: ipa: Convert to pragma once\n>   libcamera: pipeline: Convert to pragma once\n>   android: Convert to pragma once\n>   cam: Convert to pragma once\n>   gstreamer: Convert to pragma once\n>   ipa: ipu3: Convert to pragma once\n>   ipa: libipa: Convert to pragma once\n>   lc-compliance: Convert to pragma once\n>   qcam: Convert to pragma once\n>   test: Convert to pragma once\n>   utils: Convert to pragma once\n>   v4l2: Convert to pragma once\n> \n>  include/libcamera/base/backtrace.h                       | 6 ++----\n>  include/libcamera/base/bound_method.h                    | 6 ++----\n>  include/libcamera/base/class.h                           | 6 ++----\n>  include/libcamera/base/event_dispatcher.h                | 6 ++----\n>  include/libcamera/base/event_dispatcher_poll.h           | 6 ++----\n>  include/libcamera/base/event_notifier.h                  | 6 ++----\n>  include/libcamera/base/file.h                            | 6 ++----\n>  include/libcamera/base/flags.h                           | 6 ++----\n>  include/libcamera/base/log.h                             | 6 ++----\n>  include/libcamera/base/message.h                         | 6 ++----\n>  include/libcamera/base/object.h                          | 6 ++----\n>  include/libcamera/base/semaphore.h                       | 6 ++----\n>  include/libcamera/base/signal.h                          | 6 ++----\n>  include/libcamera/base/span.h                            | 5 +----\n>  include/libcamera/base/thread.h                          | 6 ++----\n>  include/libcamera/base/timer.h                           | 6 ++----\n>  include/libcamera/base/utils.h                           | 6 ++----\n>  include/libcamera/camera.h                               | 6 ++----\n>  include/libcamera/camera_manager.h                       | 6 ++----\n>  include/libcamera/compiler.h                             | 6 ++----\n>  include/libcamera/control_ids.h.in                       | 5 +----\n>  include/libcamera/controls.h                             | 5 +----\n>  include/libcamera/file_descriptor.h                      | 6 ++----\n>  include/libcamera/formats.h.in                           | 6 ++----\n>  include/libcamera/framebuffer.h                          | 6 ++----\n>  include/libcamera/framebuffer_allocator.h                | 6 ++----\n>  include/libcamera/geometry.h                             | 5 +----\n>  include/libcamera/internal/bayer_format.h                | 6 ++----\n>  include/libcamera/internal/byte_stream_buffer.h          | 6 ++----\n>  include/libcamera/internal/camera.h                      | 6 ++----\n>  include/libcamera/internal/camera_controls.h             | 6 ++----\n>  include/libcamera/internal/camera_sensor.h               | 6 ++----\n>  include/libcamera/internal/camera_sensor_properties.h    | 6 ++----\n>  include/libcamera/internal/control_serializer.h          | 6 ++----\n>  include/libcamera/internal/control_validator.h           | 6 ++----\n>  include/libcamera/internal/delayed_controls.h            | 6 ++----\n>  include/libcamera/internal/device_enumerator.h           | 6 ++----\n>  include/libcamera/internal/device_enumerator_sysfs.h     | 6 ++----\n>  include/libcamera/internal/device_enumerator_udev.h      | 6 ++----\n>  include/libcamera/internal/formats.h                     | 5 +----\n>  include/libcamera/internal/framebuffer.h                 | 6 ++----\n>  include/libcamera/internal/ipa_data_serializer.h         | 6 ++----\n>  include/libcamera/internal/ipa_manager.h                 | 6 ++----\n>  include/libcamera/internal/ipa_module.h                  | 6 ++----\n>  include/libcamera/internal/ipa_proxy.h                   | 6 ++----\n>  include/libcamera/internal/ipc_pipe.h                    | 6 ++----\n>  include/libcamera/internal/ipc_pipe_unixsocket.h         | 6 ++----\n>  include/libcamera/internal/ipc_unixsocket.h              | 5 +----\n>  include/libcamera/internal/mapped_framebuffer.h          | 6 ++----\n>  include/libcamera/internal/media_device.h                | 6 ++----\n>  include/libcamera/internal/media_object.h                | 6 ++----\n>  include/libcamera/internal/pipeline_handler.h            | 6 ++----\n>  include/libcamera/internal/process.h                     | 6 ++----\n>  include/libcamera/internal/pub_key.h                     | 6 ++----\n>  include/libcamera/internal/source_paths.h                | 6 ++----\n>  include/libcamera/internal/sysfs.h                       | 6 ++----\n>  include/libcamera/internal/tracepoints.h.in              | 6 ++----\n>  include/libcamera/internal/v4l2_device.h                 | 6 ++----\n>  include/libcamera/internal/v4l2_pixelformat.h            | 6 ++----\n>  include/libcamera/internal/v4l2_subdevice.h              | 6 ++----\n>  include/libcamera/internal/v4l2_videodevice.h            | 6 ++----\n>  include/libcamera/ipa/ipa_controls.h                     | 6 ++----\n>  include/libcamera/ipa/ipa_interface.h                    | 6 ++----\n>  include/libcamera/ipa/ipa_module_info.h                  | 6 ++----\n>  include/libcamera/ipa/raspberrypi.h                      | 6 ++----\n>  include/libcamera/logging.h                              | 6 ++----\n>  include/libcamera/pixel_format.h                         | 6 ++----\n>  include/libcamera/property_ids.h.in                      | 5 +----\n>  include/libcamera/request.h                              | 6 ++----\n>  include/libcamera/stream.h                               | 6 ++----\n>  include/libcamera/transform.h                            | 5 +----\n>  include/libcamera/version.h.in                           | 6 ++----\n>  src/android/camera_buffer.h                              | 5 ++---\n>  src/android/camera_capabilities.h                        | 6 ++----\n>  src/android/camera_device.h                              | 6 ++----\n>  src/android/camera_hal_config.h                          | 5 ++---\n>  src/android/camera_hal_manager.h                         | 6 ++----\n>  src/android/camera_metadata.h                            | 6 ++----\n>  src/android/camera_ops.h                                 | 6 ++----\n>  src/android/camera_request.h                             | 6 ++----\n>  src/android/camera_stream.h                              | 6 ++----\n>  src/android/camera_worker.h                              | 6 ++----\n>  src/android/jpeg/encoder.h                               | 6 ++----\n>  src/android/jpeg/encoder_libjpeg.h                       | 6 ++----\n>  src/android/jpeg/exif.h                                  | 6 ++----\n>  src/android/jpeg/post_processor_jpeg.h                   | 6 ++----\n>  src/android/jpeg/thumbnailer.h                           | 6 ++----\n>  src/android/post_processor.h                             | 6 ++----\n>  src/android/yuv/post_processor_yuv.h                     | 6 ++----\n>  src/cam/camera_session.h                                 | 6 ++----\n>  src/cam/drm.h                                            | 6 ++----\n>  src/cam/event_loop.h                                     | 6 ++----\n>  src/cam/file_sink.h                                      | 6 ++----\n>  src/cam/frame_sink.h                                     | 6 ++----\n>  src/cam/image.h                                          | 6 ++----\n>  src/cam/kms_sink.h                                       | 6 ++----\n>  src/cam/main.h                                           | 6 ++----\n>  src/cam/options.h                                        | 6 ++----\n>  src/cam/stream_options.h                                 | 6 ++----\n>  src/gstreamer/gstlibcamera-utils.h                       | 5 +----\n>  src/gstreamer/gstlibcameraallocator.h                    | 5 +----\n>  src/gstreamer/gstlibcamerapad.h                          | 5 +----\n>  src/gstreamer/gstlibcamerapool.h                         | 6 +-----\n>  src/gstreamer/gstlibcameraprovider.h                     | 6 +-----\n>  src/gstreamer/gstlibcamerasrc.h                          | 5 +----\n>  src/ipa/ipu3/algorithms/agc.h                            | 6 ++----\n>  src/ipa/ipu3/algorithms/algorithm.h                      | 6 ++----\n>  src/ipa/ipu3/algorithms/awb.h                            | 5 ++---\n>  src/ipa/ipu3/algorithms/blc.h                            | 6 ++----\n>  src/ipa/ipu3/algorithms/tone_mapping.h                   | 6 ++----\n>  src/ipa/ipu3/ipa_context.h                               | 6 ++----\n>  src/ipa/libipa/camera_sensor_helper.h                    | 6 ++----\n>  src/ipa/libipa/histogram.h                               | 6 ++----\n>  src/lc-compliance/environment.h                          | 6 ++----\n>  src/lc-compliance/simple_capture.h                       | 6 ++----\n>  src/libcamera/pipeline/ipu3/cio2.h                       | 6 ++----\n>  src/libcamera/pipeline/ipu3/frames.h                     | 6 ++----\n>  src/libcamera/pipeline/ipu3/imgu.h                       | 6 ++----\n>  src/libcamera/pipeline/raspberrypi/dma_heaps.h           | 6 ++----\n>  src/libcamera/pipeline/raspberrypi/rpi_stream.h          | 6 ++----\n>  src/libcamera/pipeline/rkisp1/rkisp1_path.h              | 6 ++----\n>  src/libcamera/pipeline/simple/converter.h                | 5 +----\n>  src/qcam/dng_writer.h                                    | 6 ++----\n>  src/qcam/format_converter.h                              | 6 ++----\n>  src/qcam/main_window.h                                   | 6 ++----\n>  src/qcam/message_handler.h                               | 6 ++----\n>  src/qcam/viewfinder.h                                    | 6 ++----\n>  src/qcam/viewfinder_gl.h                                 | 6 ++----\n>  src/qcam/viewfinder_qt.h                                 | 6 ++----\n>  src/v4l2/v4l2_camera.h                                   | 5 +----\n>  src/v4l2/v4l2_camera_file.h                              | 5 +----\n>  src/v4l2/v4l2_camera_proxy.h                             | 5 +----\n>  src/v4l2/v4l2_compat_manager.h                           | 5 +----\n>  test/gstreamer/gstreamer_test.h                          | 5 +----\n>  test/libtest/buffer_source.h                             | 6 ++----\n>  test/libtest/camera_test.h                               | 6 ++----\n>  test/libtest/test.h                                      | 6 ++----\n>  test/media_device/media_device_test.h                    | 6 ++----\n>  test/serialization/serialization_test.h                  | 6 ++----\n>  test/v4l2_subdevice/v4l2_subdevice_test.h                | 5 +----\n>  test/v4l2_videodevice/v4l2_videodevice_test.h            | 6 ++----\n>  utils/gen-header.sh                                      | 9 ++-------\n>  .../libcamera_templates/core_ipa_interface.h.tmpl        | 5 +----\n>  .../libcamera_templates/core_ipa_serializer.h.tmpl       | 5 +----\n>  .../libcamera_templates/module_ipa_interface.h.tmpl      | 5 +----\n>  .../libcamera_templates/module_ipa_proxy.h.tmpl          | 5 +----\n>  .../libcamera_templates/module_ipa_serializer.h.tmpl     | 5 +----\n>  147 files changed, 268 insertions(+), 590 deletions(-)","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id C15F8BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 24 Nov 2021 03:01:04 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 08FCB6033C;\n\tWed, 24 Nov 2021 04:01:04 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D524360121\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 24 Nov 2021 04:01:00 +0100 (CET)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 3EC99D78;\n\tWed, 24 Nov 2021 04:01:00 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"jeKKrpme\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1637722860;\n\tbh=gPh9UaH+eWXeEVOVtA1vVQsZlG1PKULFZIjdj48Bwfc=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=jeKKrpmeSc5I4JYtV/dHZGd7CPuzAXMpKF32qcgYUpM2A+qez+ZQmgzYQL67CYTfr\n\t9lD4mookCH5zscyH2EBpZdXc7QHfAhSgQxWT7f1QKG4fCQ4GkFAZNyFhle/ON9Wczj\n\tDxrOgwVlHkuJt9+fs6EQN6W07jnoEnyixRDjRPfQ=","Date":"Wed, 24 Nov 2021 05:00:37 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<YZ2q1eIPkssYEBql@pendragon.ideasonboard.com>","References":"<20211123224015.3619282-1-kieran.bingham@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20211123224015.3619282-1-kieran.bingham@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 00/15] Use pragma once","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":21180,"web_url":"https://patchwork.libcamera.org/comment/21180/","msgid":"<4eccf17b-01c3-1c30-048d-ab45f33f5965@ideasonboard.com>","date":"2021-11-24T06:36:38","subject":"Re: [libcamera-devel] [PATCH 00/15] Use pragma once","submitter":{"id":75,"url":"https://patchwork.libcamera.org/api/people/75/","name":"Jean-Michel Hautbois","email":"jeanmichel.hautbois@ideasonboard.com"},"content":"Hi Kieran,\n\nThanks for the (very quickly posted) series !\n\nOn 24/11/2021 04:00, Laurent Pinchart wrote:\n> Hi Kieran,\n> \n> Thank you for the patch series.\n> \n> On Tue, Nov 23, 2021 at 10:40:00PM +0000, Kieran Bingham wrote:\n>> We've always used the following pattern to maintain idempotency with\n>> headers:\n>>\n>>   #ifndef __PATH_TO_FILE_H__\n>>   #define __PATH_TO_FILE_H__\n>>   ..\n>>   #endif // __PATH_TO_FILE_H__\n> \n> Turns out we had only two mismatches in header guards where the comment\n> after the #endif didn't match the macro name, not too bad :-)\n> \n>> This is fine, and long established, but makes for awkward names in cases\n>> such as:\n>>    src/ipa/ipu3/algorithm/algorithm.h\n>>\n>> requiring duplication, and constant concern over updating these names\n>> when files are moved or renamed.\n>>\n>> Remove all ifndef usages and ensure consistency across the project using\n>>\n>>   #pragma once\n>>\n>> The changes are broken down into grouped components to ease review.\n> \n> Thanks, that makes it easier to review the series.\n> \n> I have one comment for patch 03/15. For the rest of the series,\n> \n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n>> Kieran Bingham (15):\n>>    libcamera: Convert to pragma once\n>>    libcamera: base: Convert to pragma once\n>>    libcamera: internal: Convert to pragma once\n>>    libcamera: ipa: Convert to pragma once\n>>    libcamera: pipeline: Convert to pragma once\n>>    android: Convert to pragma once\n>>    cam: Convert to pragma once\n>>    gstreamer: Convert to pragma once\n>>    ipa: ipu3: Convert to pragma once\n>>    ipa: libipa: Convert to pragma once\n>>    lc-compliance: Convert to pragma once\n>>    qcam: Convert to pragma once\n>>    test: Convert to pragma once\n>>    utils: Convert to pragma once\n>>    v4l2: Convert to pragma once\n>>\n>>   include/libcamera/base/backtrace.h                       | 6 ++----\n>>   include/libcamera/base/bound_method.h                    | 6 ++----\n>>   include/libcamera/base/class.h                           | 6 ++----\n>>   include/libcamera/base/event_dispatcher.h                | 6 ++----\n>>   include/libcamera/base/event_dispatcher_poll.h           | 6 ++----\n>>   include/libcamera/base/event_notifier.h                  | 6 ++----\n>>   include/libcamera/base/file.h                            | 6 ++----\n>>   include/libcamera/base/flags.h                           | 6 ++----\n>>   include/libcamera/base/log.h                             | 6 ++----\n>>   include/libcamera/base/message.h                         | 6 ++----\n>>   include/libcamera/base/object.h                          | 6 ++----\n>>   include/libcamera/base/semaphore.h                       | 6 ++----\n>>   include/libcamera/base/signal.h                          | 6 ++----\n>>   include/libcamera/base/span.h                            | 5 +----\n>>   include/libcamera/base/thread.h                          | 6 ++----\n>>   include/libcamera/base/timer.h                           | 6 ++----\n>>   include/libcamera/base/utils.h                           | 6 ++----\n>>   include/libcamera/camera.h                               | 6 ++----\n>>   include/libcamera/camera_manager.h                       | 6 ++----\n>>   include/libcamera/compiler.h                             | 6 ++----\n>>   include/libcamera/control_ids.h.in                       | 5 +----\n>>   include/libcamera/controls.h                             | 5 +----\n>>   include/libcamera/file_descriptor.h                      | 6 ++----\n>>   include/libcamera/formats.h.in                           | 6 ++----\n>>   include/libcamera/framebuffer.h                          | 6 ++----\n>>   include/libcamera/framebuffer_allocator.h                | 6 ++----\n>>   include/libcamera/geometry.h                             | 5 +----\n>>   include/libcamera/internal/bayer_format.h                | 6 ++----\n>>   include/libcamera/internal/byte_stream_buffer.h          | 6 ++----\n>>   include/libcamera/internal/camera.h                      | 6 ++----\n>>   include/libcamera/internal/camera_controls.h             | 6 ++----\n>>   include/libcamera/internal/camera_sensor.h               | 6 ++----\n>>   include/libcamera/internal/camera_sensor_properties.h    | 6 ++----\n>>   include/libcamera/internal/control_serializer.h          | 6 ++----\n>>   include/libcamera/internal/control_validator.h           | 6 ++----\n>>   include/libcamera/internal/delayed_controls.h            | 6 ++----\n>>   include/libcamera/internal/device_enumerator.h           | 6 ++----\n>>   include/libcamera/internal/device_enumerator_sysfs.h     | 6 ++----\n>>   include/libcamera/internal/device_enumerator_udev.h      | 6 ++----\n>>   include/libcamera/internal/formats.h                     | 5 +----\n>>   include/libcamera/internal/framebuffer.h                 | 6 ++----\n>>   include/libcamera/internal/ipa_data_serializer.h         | 6 ++----\n>>   include/libcamera/internal/ipa_manager.h                 | 6 ++----\n>>   include/libcamera/internal/ipa_module.h                  | 6 ++----\n>>   include/libcamera/internal/ipa_proxy.h                   | 6 ++----\n>>   include/libcamera/internal/ipc_pipe.h                    | 6 ++----\n>>   include/libcamera/internal/ipc_pipe_unixsocket.h         | 6 ++----\n>>   include/libcamera/internal/ipc_unixsocket.h              | 5 +----\n>>   include/libcamera/internal/mapped_framebuffer.h          | 6 ++----\n>>   include/libcamera/internal/media_device.h                | 6 ++----\n>>   include/libcamera/internal/media_object.h                | 6 ++----\n>>   include/libcamera/internal/pipeline_handler.h            | 6 ++----\n>>   include/libcamera/internal/process.h                     | 6 ++----\n>>   include/libcamera/internal/pub_key.h                     | 6 ++----\n>>   include/libcamera/internal/source_paths.h                | 6 ++----\n>>   include/libcamera/internal/sysfs.h                       | 6 ++----\n>>   include/libcamera/internal/tracepoints.h.in              | 6 ++----\n>>   include/libcamera/internal/v4l2_device.h                 | 6 ++----\n>>   include/libcamera/internal/v4l2_pixelformat.h            | 6 ++----\n>>   include/libcamera/internal/v4l2_subdevice.h              | 6 ++----\n>>   include/libcamera/internal/v4l2_videodevice.h            | 6 ++----\n>>   include/libcamera/ipa/ipa_controls.h                     | 6 ++----\n>>   include/libcamera/ipa/ipa_interface.h                    | 6 ++----\n>>   include/libcamera/ipa/ipa_module_info.h                  | 6 ++----\n>>   include/libcamera/ipa/raspberrypi.h                      | 6 ++----\n>>   include/libcamera/logging.h                              | 6 ++----\n>>   include/libcamera/pixel_format.h                         | 6 ++----\n>>   include/libcamera/property_ids.h.in                      | 5 +----\n>>   include/libcamera/request.h                              | 6 ++----\n>>   include/libcamera/stream.h                               | 6 ++----\n>>   include/libcamera/transform.h                            | 5 +----\n>>   include/libcamera/version.h.in                           | 6 ++----\n>>   src/android/camera_buffer.h                              | 5 ++---\n>>   src/android/camera_capabilities.h                        | 6 ++----\n>>   src/android/camera_device.h                              | 6 ++----\n>>   src/android/camera_hal_config.h                          | 5 ++---\n>>   src/android/camera_hal_manager.h                         | 6 ++----\n>>   src/android/camera_metadata.h                            | 6 ++----\n>>   src/android/camera_ops.h                                 | 6 ++----\n>>   src/android/camera_request.h                             | 6 ++----\n>>   src/android/camera_stream.h                              | 6 ++----\n>>   src/android/camera_worker.h                              | 6 ++----\n>>   src/android/jpeg/encoder.h                               | 6 ++----\n>>   src/android/jpeg/encoder_libjpeg.h                       | 6 ++----\n>>   src/android/jpeg/exif.h                                  | 6 ++----\n>>   src/android/jpeg/post_processor_jpeg.h                   | 6 ++----\n>>   src/android/jpeg/thumbnailer.h                           | 6 ++----\n>>   src/android/post_processor.h                             | 6 ++----\n>>   src/android/yuv/post_processor_yuv.h                     | 6 ++----\n>>   src/cam/camera_session.h                                 | 6 ++----\n>>   src/cam/drm.h                                            | 6 ++----\n>>   src/cam/event_loop.h                                     | 6 ++----\n>>   src/cam/file_sink.h                                      | 6 ++----\n>>   src/cam/frame_sink.h                                     | 6 ++----\n>>   src/cam/image.h                                          | 6 ++----\n>>   src/cam/kms_sink.h                                       | 6 ++----\n>>   src/cam/main.h                                           | 6 ++----\n>>   src/cam/options.h                                        | 6 ++----\n>>   src/cam/stream_options.h                                 | 6 ++----\n>>   src/gstreamer/gstlibcamera-utils.h                       | 5 +----\n>>   src/gstreamer/gstlibcameraallocator.h                    | 5 +----\n>>   src/gstreamer/gstlibcamerapad.h                          | 5 +----\n>>   src/gstreamer/gstlibcamerapool.h                         | 6 +-----\n>>   src/gstreamer/gstlibcameraprovider.h                     | 6 +-----\n>>   src/gstreamer/gstlibcamerasrc.h                          | 5 +----\n>>   src/ipa/ipu3/algorithms/agc.h                            | 6 ++----\n>>   src/ipa/ipu3/algorithms/algorithm.h                      | 6 ++----\n>>   src/ipa/ipu3/algorithms/awb.h                            | 5 ++---\n>>   src/ipa/ipu3/algorithms/blc.h                            | 6 ++----\n>>   src/ipa/ipu3/algorithms/tone_mapping.h                   | 6 ++----\n>>   src/ipa/ipu3/ipa_context.h                               | 6 ++----\n>>   src/ipa/libipa/camera_sensor_helper.h                    | 6 ++----\n>>   src/ipa/libipa/histogram.h                               | 6 ++----\n\nI need to use this #pragma once in v4 for the RkISP1 then :-). For the \nseries:\nReviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\n\n>>   src/lc-compliance/environment.h                          | 6 ++----\n>>   src/lc-compliance/simple_capture.h                       | 6 ++----\n>>   src/libcamera/pipeline/ipu3/cio2.h                       | 6 ++----\n>>   src/libcamera/pipeline/ipu3/frames.h                     | 6 ++----\n>>   src/libcamera/pipeline/ipu3/imgu.h                       | 6 ++----\n>>   src/libcamera/pipeline/raspberrypi/dma_heaps.h           | 6 ++----\n>>   src/libcamera/pipeline/raspberrypi/rpi_stream.h          | 6 ++----\n>>   src/libcamera/pipeline/rkisp1/rkisp1_path.h              | 6 ++----\n>>   src/libcamera/pipeline/simple/converter.h                | 5 +----\n>>   src/qcam/dng_writer.h                                    | 6 ++----\n>>   src/qcam/format_converter.h                              | 6 ++----\n>>   src/qcam/main_window.h                                   | 6 ++----\n>>   src/qcam/message_handler.h                               | 6 ++----\n>>   src/qcam/viewfinder.h                                    | 6 ++----\n>>   src/qcam/viewfinder_gl.h                                 | 6 ++----\n>>   src/qcam/viewfinder_qt.h                                 | 6 ++----\n>>   src/v4l2/v4l2_camera.h                                   | 5 +----\n>>   src/v4l2/v4l2_camera_file.h                              | 5 +----\n>>   src/v4l2/v4l2_camera_proxy.h                             | 5 +----\n>>   src/v4l2/v4l2_compat_manager.h                           | 5 +----\n>>   test/gstreamer/gstreamer_test.h                          | 5 +----\n>>   test/libtest/buffer_source.h                             | 6 ++----\n>>   test/libtest/camera_test.h                               | 6 ++----\n>>   test/libtest/test.h                                      | 6 ++----\n>>   test/media_device/media_device_test.h                    | 6 ++----\n>>   test/serialization/serialization_test.h                  | 6 ++----\n>>   test/v4l2_subdevice/v4l2_subdevice_test.h                | 5 +----\n>>   test/v4l2_videodevice/v4l2_videodevice_test.h            | 6 ++----\n>>   utils/gen-header.sh                                      | 9 ++-------\n>>   .../libcamera_templates/core_ipa_interface.h.tmpl        | 5 +----\n>>   .../libcamera_templates/core_ipa_serializer.h.tmpl       | 5 +----\n>>   .../libcamera_templates/module_ipa_interface.h.tmpl      | 5 +----\n>>   .../libcamera_templates/module_ipa_proxy.h.tmpl          | 5 +----\n>>   .../libcamera_templates/module_ipa_serializer.h.tmpl     | 5 +----\n>>   147 files changed, 268 insertions(+), 590 deletions(-)\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 29367BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 24 Nov 2021 06:36:43 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5CDA06022D;\n\tWed, 24 Nov 2021 07:36:42 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C4C4060121\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 24 Nov 2021 07:36:40 +0100 (CET)","from [IPV6:2a01:e0a:169:7140:968b:bd0c:97fc:7c17] (unknown\n\t[IPv6:2a01:e0a:169:7140:968b:bd0c:97fc:7c17])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 680091909;\n\tWed, 24 Nov 2021 07:36:40 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"a5Ao8Qer\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1637735800;\n\tbh=5aTmSVPcoMaoE0Vmm1dBZpcgakvEh4YxmK6rdJ6HG2s=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=a5Ao8Qerq52Dg1ShgX592y1BLAdEOXXwehR3T15kv6Y3LD/FHw5UIMrykFT4l5nBr\n\tMmxbzN2pJDLHsoG4hVFoBk0U8V3f4XOd8tRlebFDWDt20dgAWlxkP2V69vj6NXYHtt\n\tBhfxzB190MKygXtexyHqp6yTlqT18GtQ1oqKlzMs=","Message-ID":"<4eccf17b-01c3-1c30-048d-ab45f33f5965@ideasonboard.com>","Date":"Wed, 24 Nov 2021 07:36:38 +0100","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101\n\tThunderbird/91.3.1","Content-Language":"en-US","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>","References":"<20211123224015.3619282-1-kieran.bingham@ideasonboard.com>\n\t<YZ2q1eIPkssYEBql@pendragon.ideasonboard.com>","From":"Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>","In-Reply-To":"<YZ2q1eIPkssYEBql@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH 00/15] Use pragma once","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]