/*****************************************************************************
 * $LastChangedDate: 2010-05-25 21:26:05 -0400 (Tue, 25 May 2010) $
 * @file
 * @author  Jim E. Brooks  http://www.palomino3d.org
 * @brief   Shared is a base class with an intrusive reference-count updated by shptr.
 * @remarks Documented at shptr_doc.hh.
 *//*
 * LEGAL:   COPYRIGHT (C) 2007 JIM E. BROOKS
 *          THIS SOURCE CODE IS RELEASED UNDER THE TERMS
 *          OF THE GNU GENERAL PUBLIC LICENSE VERSION 2 (GPL 2).
 *****************************************************************************/

#if ! DOXYGEN
#ifndef BASE_SHARED_HH
#define BASE_SHARED_HH 1

#include "threads/module.hh"
#include "threads/threadable.hh"
using namespace threads;

namespace base {

// Shared class (non-threadable).
#define SHARED  Shared
#define SHPTR   shptr
#define SHPTR0  shptr0
#define SHARED_THREADABLE_OR_NON  NonThreadable
#define SHARED_AUTO_LOCK
#include "base/shared_impl.hh"
#undef  SHARED
#undef  SHPTR
#undef  SHPTR0
#undef  SHARED_THREADABLE_OR_NON
#undef  SHARED_AUTO_LOCK

} // namespace base

#endif // BASE_SHARED_HH
#endif // ! DOXYGEN
