[libcamera-devel] [PATCH v2 3/5] libcamera: file: Use Flags<> class for map flags

Jacopo Mondi jacopo at jmondi.org
Mon Jul 26 11:52:24 CEST 2021


Hi Laurent,

On Sun, Jul 25, 2021 at 08:18:25PM +0300, Laurent Pinchart wrote:
> Use the newly introduced Flags<> class to store a bitfield of
> File::MapFlag in a type-safe way.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> ---
> Changes since v1:
>
> - Use an unscoped enum
> ---
>  include/libcamera/base/file.h | 5 ++++-
>  src/libcamera/base/file.cpp   | 7 ++++++-
>  2 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/include/libcamera/base/file.h b/include/libcamera/base/file.h
> index 7dd1559d2285..452a658b409f 100644
> --- a/include/libcamera/base/file.h
> +++ b/include/libcamera/base/file.h
> @@ -15,6 +15,7 @@
>  #include <libcamera/base/private.h>
>
>  #include <libcamera/base/class.h>
> +#include <libcamera/base/flags.h>
>  #include <libcamera/base/span.h>
>
>  namespace libcamera {
> @@ -27,6 +28,8 @@ public:
>  		MapPrivate = (1 << 0),
>  	};
>
> +	using MapFlags = Flags<MapFlag>;
> +

Shouldn't you enable bitwise operations for this type ?

>  	enum OpenMode {
>  		NotOpen = 0,
>  		ReadOnly = (1 << 0),
> @@ -57,7 +60,7 @@ public:
>  	ssize_t write(const Span<const uint8_t> &data);
>
>  	Span<uint8_t> map(off_t offset = 0, ssize_t size = -1,
> -			  MapFlag flags = MapNoOption);
> +			  MapFlags flags = MapNoOption);
>  	bool unmap(uint8_t *addr);
>
>  	static bool exists(const std::string &name);
> diff --git a/src/libcamera/base/file.cpp b/src/libcamera/base/file.cpp
> index 073666fa6f66..e180c5479098 100644
> --- a/src/libcamera/base/file.cpp
> +++ b/src/libcamera/base/file.cpp
> @@ -52,6 +52,11 @@ LOG_DEFINE_CATEGORY(File)
>   * the file constents
>   */
>
> +/**
> + * \typedef File::MapFlags
> + * \brief An OR combination of File::MapFlag values

Why a type is an OR combination ?

> + */
> +
>  /**
>   * \enum File::OpenMode
>   * \brief Mode in which a file is opened
> @@ -371,7 +376,7 @@ ssize_t File::write(const Span<const uint8_t> &data)
>   *
>   * \return The mapped memory on success, or an empty span otherwise
>   */
> -Span<uint8_t> File::map(off_t offset, ssize_t size, enum File::MapFlag flags)
> +Span<uint8_t> File::map(off_t offset, ssize_t size, File::MapFlags flags)
>  {
>  	if (!isOpen()) {
>  		error_ = -EBADF;
> --
> Regards,
>
> Laurent Pinchart
>


More information about the libcamera-devel mailing list