Use a shorter/simpler license convention, stops the header taking so much space. Follow the SPDX license specification: https://spdx.org/licenses - C/C++/objc/objc++ - Python - Shell Scripts - CMake, GNUmakefile While most of the source tree has been included - `./extern/` was left out. - `./intern/cycles` & `./intern/atomic` are also excluded because they use different header conventions. doc/license/SPDX-license-identifiers.txt has been added to list SPDX all used identifiers. See P2788 for the script that automated these edits. Reviewed By: brecht, mont29, sergey Ref D14069
50 lines
1.0 KiB
C++
50 lines
1.0 KiB
C++
/* SPDX-License-Identifier: GPL-2.0-or-later
|
|
* Copyright 2011 Blender Foundation. */
|
|
|
|
#pragma once
|
|
|
|
#ifdef WITH_CXX_GUARDEDALLOC
|
|
# include "MEM_guardedalloc.h"
|
|
#endif
|
|
|
|
namespace blender::compositor {
|
|
|
|
struct WorkPackage;
|
|
|
|
/**
|
|
* \brief Abstract class for device implementations to be used by the Compositor.
|
|
* devices are queried, initialized and used by the WorkScheduler.
|
|
* work are packaged as a WorkPackage instance.
|
|
*/
|
|
class Device {
|
|
|
|
public:
|
|
Device() = default;
|
|
|
|
Device(const Device &other) = delete;
|
|
Device(Device &&other) noexcept = default;
|
|
|
|
Device &operator=(const Device &other) = delete;
|
|
Device &operator=(Device &&other) = delete;
|
|
|
|
/**
|
|
* \brief Declaration of the virtual destructor
|
|
* \note resolve warning gcc 4.7
|
|
*/
|
|
virtual ~Device()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* \brief execute a WorkPackage
|
|
* \param work: the WorkPackage to execute
|
|
*/
|
|
virtual void execute(struct WorkPackage *work) = 0;
|
|
|
|
#ifdef WITH_CXX_GUARDEDALLOC
|
|
MEM_CXX_CLASS_ALLOC_FUNCS("COM:Device")
|
|
#endif
|
|
};
|
|
|
|
} // namespace blender::compositor
|