summaryrefslogtreecommitdiff
path: root/src/qcam/assets/feathericons/message-circle.svg
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ideasonboard.com>2022-05-27 17:44:22 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-05-27 22:02:29 +0300
commitccfcf5f2356fc3bd1dfb825652b2f05738651b46 (patch)
tree18578b1eb7007972c2227f2e8a303936387602c6 /src/qcam/assets/feathericons/message-circle.svg
parent0381b09f89000713edc2a34a565657bfa548ab0c (diff)
py: Fix None value in ControlType enum
"None" is not a valid name for an enum value, so change it to "Null". Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/qcam/assets/feathericons/message-circle.svg')
0 files changed, 0 insertions, 0 deletions
ef='#n132'>132 133 134
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
 * Copyright (C) 2020, Google Inc.
 *
 * extensible.cpp - Utilities to create extensible public classes with stable ABIs
 */

#include <libcamera/extensible.h>

/**
 * \file extensible.h
 * \brief Utilities to create extensible public classes with stable ABIs
 */

namespace libcamera {

/**
 * \def LIBCAMERA_DECLARE_PRIVATE
 * \brief Declare private data for a public class
 * \param klass The public class name
 *
 * The LIBCAMERA_DECLARE_PRIVATE() macro plumbs the infrastructure necessary to
 * make a class manage its private data through a d-pointer. It shall be used at
 * the very top of the class definition, with the public class name passed as
 * the \a klass parameter.
 */

/**
 * \def LIBCAMERA_DECLARE_PUBLIC
 * \brief Declare public data for a private class
 * \param klass The public class name
 *
 * The LIBCAMERA_DECLARE_PUBLIC() macro is the counterpart of
 * LIBCAMERA_DECLARE_PRIVATE() to be used in the private data class. It shall be
 * used at the very top of the private class definition, with the public class
 * name passed as the \a klass parameter.
 */

/**
 * \def LIBCAMERA_D_PTR(klass)
 * \brief Retrieve the private data pointer
 * \param[in] klass The public class name
 *
 * This macro can be used in any member function of a class that inherits,
 * directly or indirectly, from the Extensible class, to create a local
 * variable named 'd' that points to the class' private data instance.
 */

/**
 * \def LIBCAMERA_O_PTR(klass)
 * \brief Retrieve the public instance corresponding to the private data
 * \param[in] klass The public class name
 *
 * This macro is the counterpart of LIBCAMERA_D_PTR() for private data classes.
 * It can be used in any member function of the private data class to create a
 * local variable named 'o' that points to the public class instance
 * corresponding to the private data.
 */

/**
 * \class Extensible
 * \brief Base class to manage private data through a d-pointer
 *
 * The Extensible class provides a base class to implement the
 * <a href="https://wiki.qt.io/D-Pointer">d-pointer</a> design pattern (also
 * known as <a href="https://en.wikipedia.org/wiki/Opaque_pointer">opaque pointer</a>
 * or <a href="https://en.cppreference.com/w/cpp/language/pimpl">pImpl idiom</a>).
 * It helps creating public classes that can be extended without breaking their
 * ABI. Such classes store their private data in a separate private data object,
 * referenced by a pointer in the public class (hence the name d-pointer).
 *
 * Classes that follow this design pattern are referred herein as extensible
 * classes. To be extensible, a class PublicClass shall:
 *
 * - inherit from the Extensible class or from another extensible class
 * - invoke the LIBCAMERA_DECLARE_PRIVATE() macro at the very top of the class
 *   definition
 * - define a private data class named PublicClass::Private that inherits from
 *   the Private data class of the base class
 * - invoke the LIBCAMERA_DECLARE_PUBLIC() macro at the very top of the Private
 *   data class definition
 * - pass a pointer to a newly allocated Private data object to the constructor
 *   of the base class
 *
 * Additionally, if the PublicClass is not final, it shall expose one or more
 * constructors that takes a pointer to a Private data instance, to be used by
 * derived classes.
 *
 * The Private class is fully opaque to users of the libcamera public API.
 * Internally, it can be kept private to the implementation of PublicClass, or
 * be exposed to other classes. In the latter case, the members of the Private
 * class need to be qualified with appropriate access specifiers. The
 * PublicClass and Private classes always have full access to each other's
 * protected and private members.
 */

/**
 * \brief Construct an instance of an Extensible class
 * \param[in] d Pointer to the private data instance
 */
Extensible::Extensible(Extensible::Private *d)
	: d_(d)
{
}

/**
 * \var Extensible::d_
 * \brief Pointer to the private data instance
 */

/**
 * \class Extensible::Private
 * \brief Base class for private data managed through a d-pointer
 */

/**
 * \brief Construct an instance of an Extensible class private data
 * \param[in] o Pointer to the public class object
 */
Extensible::Private::Private(Extensible *o)
	: o_(o)
{
}

Extensible::Private::~Private()
{
}

/**
 * \var Extensible::Private::o_
 * \brief Pointer to the public class object
 */

} /* namespace libcamera */