#ifndef SCCLS_H
#define SCCLS_H

STDAPI CZaxxon_CreateInstance(IUnknown *punk, REFIID riid, void **ppv);
STDAPI CZaxxonPlayer_CreateInstance(IUnknown *punk, REFIID riid, void **ppv);
STDAPI CMegaMan_CreateInstance(IUnknown *punk, REFIID riid, void **ppv);
/*****************************************************************************
 *
 *	CFactory
 *
 *
 *****************************************************************************/

class CFactory       : public IClassFactory
{
public:
    //////////////////////////////////////////////////////
    // Public Interfaces
    //////////////////////////////////////////////////////
    
    // *** IUnknown ***
    virtual STDMETHODIMP_(ULONG) AddRef(void);
    virtual STDMETHODIMP_(ULONG) Release(void);
    virtual STDMETHODIMP QueryInterface(REFIID riid, void ** ppv);
    
    // *** IClassFactory ***
    virtual STDMETHODIMP CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppv);
    virtual STDMETHODIMP LockServer(BOOL fLock);

public:
    CFactory(REFCLSID rclsid);

    // Friend Functions
    friend HRESULT CFactory_Create(REFCLSID rclsid, REFIID riid, void ** ppv);

protected:
    ~CFactory(void);
    int                     _cRef;
    CLSID                   _rclsid;
};

#endif