diff --git a/base/include/util/noncopyable.h b/base/include/util/noncopyable.h new file mode 100644 index 0000000000..be0dee3cf9 --- /dev/null +++ b/base/include/util/noncopyable.h @@ -0,0 +1,40 @@ +/* + * \brief Non-copyable objects design pattern. + * \author Stefan Kalkowski + * \date 2012-02-16 + */ + +/* + * Copyright (C) 2012 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef _INCLUDE__UTIL__NONCOPYABLE_H_ +#define _INCLUDE__UTIL__NONCOPYABLE_H_ + +namespace Genode { + + /** + * Classes of objects not allowed to be copied, should inherit from this one. + * + * This class declares a private copy-constructor and assignment-operator. + * It's sufficient to inherit private from this class, and let the compiler + * detect any copy violations. + */ + class Noncopyable + { + private: + + Noncopyable(const Noncopyable&); + const Noncopyable& operator=(const Noncopyable&); + + protected: + + Noncopyable() {} + ~Noncopyable() {} + }; +} + +#endif /* _INCLUDE__UTIL__NONCOPYABLE_H_ */