/*
 * Copyright (c) 1999 Johnny C. Lam.
 * All rights reserved.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  The author makes no representations
 * about the suitability of this software for any purpose.  It is
 * provided "as is" without express or implied warranty.
 */

#include <iostream>
#include <singleton>

class One : public Singleton<One> {
public:
    int	one() const { return 1; }
    int	two() const { return 2; }
    int	three() const { return 3; }

protected:
    ~One() { std::cout << "~One()" << endl; }
};

INITIALIZE_SINGLETON_BASE(One);

int
main()
{
    std::cout << One::Instance()->one() << endl;
    std::cout << One::Instance()->two() << endl;
    std::cout << One::Instance()->three() << endl;
    return 0;
}
