GLProgramming.com

home :: about :: development guides :: irc :: forums :: search :: paste :: links :: contribute :: code dump

-> Click here to learn how to get live help <-


New Paste :: Recent Pastes:: Add Line Numbers


A Paste by Anonymous
/* Original version Copyright (C) Scott Bilas, 2000.
 * All rights reserved worldwide.
 *
 * This software is provided "as is" without express or implied
 * warranties. You may freely copy and compile this source into
 * applications you distribute provided that the copyright text
 * below is included in the resulting source code, for example:
 * "Portions Copyright (C) Scott Bilas, 2000"
 */
#ifndef _SINGLETON_H__
#define _SINGLETON_H__

/** Template class for creating single-instance global classes.
*/
template <typename T> class Singleton
{
protected:
    static T* ms_Singleton;

public:
    Singleton()
    {
//        assert( !ms_Singleton );
        ms_Singleton = static_cast< T* >( this );
    }
    ~Singleton()
    {  /*assert( ms_Singleton );*/  ms_Singleton = 0;  }
    static T& Inst( void )
    {    /*assert( ms_Singleton );*/  return ( *ms_Singleton ); }
    static T* InstPtr( void )
    { return ms_Singleton; }
};

template <typename T> T* Singleton<T>::ms_Singleton = 0;

#endif