summaryrefslogtreecommitdiff
path: root/src/ipa/rkisp1/algorithms/blc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipa/rkisp1/algorithms/blc.cpp')
0 files changed, 0 insertions, 0 deletions
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
 * Copyright (C) 2020, Google Inc.
 *
 * extensible.h - Utilities to create extensible public classes with stable ABIs
 */
#ifndef __LIBCAMERA_EXTENSIBLE_H__
#define __LIBCAMERA_EXTENSIBLE_H__

#include <memory>

namespace libcamera {

#ifndef __DOXYGEN__
#define LIBCAMERA_DECLARE_PRIVATE(klass)				\
public:									\
	class Private;							\
	friend class Private;

#define LIBCAMERA_DECLARE_PUBLIC(klass)					\
	friend class klass;						\
	using Public = klass;

#define LIBCAMERA_D_PTR()						\
	_d<Private>();

#define LIBCAMERA_O_PTR()						\
	_o<Public>();

#else
#define LIBCAMERA_DECLARE_PRIVATE(klass)
#define LIBCAMERA_DECLARE_PUBLIC(klass)
#define LIBCAMERA_D_PTR(klass)
#define LIBCAMERA_O_PTR(klass)
#endif

class Extensible
{
public:
	class Private
	{
	public:
		Private(Extensible *o);
		virtual ~Private();

#ifndef __DOXYGEN__
		template<typename T>
		const T *_o() const
		{
			return static_cast<const T *>(o_);
		}

		template<typename T>
		T *_o()
		{
			return static_cast<T *>(o_);
		}
#endif

	private: