Files
blender/source/blender/blenlib/BLI_utility_mixins.hh
Jacques Lucke d8678e02ec BLI: generally improve C++ data structures
The main focus here was to improve the docs significantly. Furthermore,
I reimplemented `Set`, `Map` and `VectorSet`. They are now (usually)
faster, simpler and more customizable. I also rewrote `Stack` to make
it more efficient by avoiding unnecessary copies.

Thanks to everyone who helped with constructive feedback.

Approved by brecht and sybren.

Differential Revision: https://developer.blender.org/D7931
2020-06-09 10:15:43 +02:00

59 lines
1.8 KiB
C++

/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/** \file
* \ingroup bli
*/
#ifndef __BLI_UTILITY_MIXINS_HH__
#define __BLI_UTILITY_MIXINS_HH__
namespace BLI {
/**
* A type that inherits from NonCopyable cannot be copied anymore.
*/
class NonCopyable {
public:
/* Disable copy construction and assignment. */
NonCopyable(const NonCopyable &other) = delete;
NonCopyable &operator=(const NonCopyable &other) = delete;
/* Explicitly enable default construction, move construction and move assignment. */
NonCopyable() = default;
NonCopyable(NonCopyable &&other) = default;
NonCopyable &operator=(NonCopyable &&other) = default;
};
/**
* A type that inherits from NonMovable cannot be moved anymore.
*/
class NonMovable {
public:
/* Disable move construction and assignment. */
NonMovable(NonMovable &&other) = delete;
NonMovable &operator=(NonMovable &&other) = delete;
/* Explicitly enable default construction, copy construction and copy assignment. */
NonMovable() = default;
NonMovable(const NonMovable &other) = default;
NonMovable &operator=(const NonMovable &other) = default;
};
} // namespace BLI
#endif /* __BLI_UTILITY_MIXINS_HH__ */