home *** CD-ROM | disk | FTP | other *** search
- /*
- * ANIMAL.H
- *
- * Definition of the aggregatable CAnimal object.
- * Included only from ANIMAL.CPP.
- *
- * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
- *
- * Kraig Brockschmidt, Microsoft
- * Internet : kraigb@microsoft.com
- * Compuserve: >INTERNET:kraigb@microsoft.com
- */
-
-
- #ifndef _ANIMAL_H_
- #define _ANIMAL_H_
-
-
- class CImpIAnimal_A;
- typedef CImpIAnimal_A *PCImpIAnimal_A;
-
- class CAnimal : public IUnknown
- {
- friend CImpIAnimal_A;
-
- private:
- DWORD m_cRef; //Object reference count
- IUnknown *m_pUnkOuter; //Outer unknown, no AddRef
-
- PCImpIAnimal_A m_pImpIAnimal; //Interface implementation
-
- public:
- CAnimal(IUnknown *);
- ~CAnimal(void);
-
- BOOL Init(void);
-
- //IUnknown members, non-delegating
- STDMETHODIMP QueryInterface(REFIID, PPVOID);
- STDMETHODIMP_(DWORD) AddRef(void);
- STDMETHODIMP_(DWORD) Release(void);
- };
-
-
- typedef CAnimal *PCAnimal;
-
-
- class CImpIAnimal_A : public IAnimal
- {
- private:
- DWORD m_cRef; //For debugging
- PCAnimal m_pObj; //Back pointer
- IUnknown *m_pUnkOuter; //Outer unknown, for delegation
-
- public:
- CImpIAnimal_A(PCAnimal, IUnknown *);
- ~CImpIAnimal_A(void);
-
- //IUnknown members
- STDMETHODIMP QueryInterface(REFIID, PPVOID);
- STDMETHODIMP_(DWORD) AddRef(void);
- STDMETHODIMP_(DWORD) Release(void);
-
- //IAnimal members
- STDMETHODIMP Eat(void);
- STDMETHODIMP Sleep(void);
- STDMETHODIMP Procreate(void);
- };
-
-
- #endif _ANIMAL_H_
-