    // file      : Utility/Synch/Policy/Null.hpp
    // author    : Boris Kolpackov <boris@kolpackov.net>
    // copyright : Copyright (c) 2002-2003 Boris Kolpackov
    // license   : http://kolpackov.net/license.html

    namespace Utility
    {
      namespace Synch
      {
        namespace Policy
        {

          class NullMutex
          {
          };

          class NullGuard
          {
          public:
            explicit
            NullGuard (NullMutex&) throw ();

          private:
            NullGuard (NullGuard const&) throw ();

            NullGuard&
            operator= (NullGuard const&) throw ();
          };

          struct Null
          {
            typedef
            NullMutex
            Mutex;

            typedef
            NullGuard
            ReadGuard;

            typedef
            NullGuard
            WriteGuard;
          };
        }
      }
    }