1  /*
   2   * \brief  Non-copyable objects design pattern.
   3   * \author Stefan Kalkowski
   4   * \date   2012-02-16
   5   */

   6  
   7  /*
   8   * Copyright (C) 2012-2013 Genode Labs GmbH
   9   *
  10   * This file is part of the Genode OS framework, which is distributed
  11   * under the terms of the GNU General Public License version 2.
  12   */

  13  
  14  #ifndef _INCLUDE__UTIL__NONCOPYABLE_H_
  15  #define _INCLUDE__UTIL__NONCOPYABLE_H_
  16  
  17  namespace Genode { class Noncopyable; }
  18  
  19  
  20  /**
  21   * Classes of objects not allowed to be copied, should inherit from this one.
  22   *
  23   * This class declares a private copy-constructor and assignment-operator.
  24   * It`s sufficient to inherit private from this class, and let the compiler
  25   * detect any copy violations.
  26   */

  27  class Genode::Noncopyable
  28  {
  29     private:
  30  
  31        /**
  32         * Constructor
  33         */

  34        Noncopyable(const Noncopyable&);

  35  
  36        const Noncopyable& operator=(const Noncopyable&);

  37  
  38     protected:
  39  
  40        /**
  41         * Constructor
  42         *
  43         * \noapi
  44         */

  45        Noncopyable()  {}

  46  
  47        /**
  48         * Destructor
  49         *
  50         * \noapi
  51         */

  52        ~Noncopyable() {}

  53  }
;

  54  
  55  #endif /* _INCLUDE__UTIL__NONCOPYABLE_H_ */