home *** CD-ROM | disk | FTP | other *** search
- /*
- * KOALAC.H
- *
- * Definition of the Koala object using containment, Chapter 2
- * Included only from KOALAC.CPP.
- *
- * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
- *
- * Kraig Brockschmidt, Microsoft
- * Internet : kraigb@microsoft.com
- * Compuserve: >INTERNET:kraigb@microsoft.com
- */
-
-
- #ifndef _KOALAC_H_
- #define _KOALAC_H_
-
- class CImpIAnimal_K;
- typedef CImpIAnimal_K *PCImpIAnimal_K;
-
- class CImpIKoala_C;
- typedef CImpIKoala_C *PCImpIKoala_C;
-
- class CKoalaC : public IUnknown
- {
- friend CImpIAnimal_K;
- friend CImpIKoala_C;
-
- private:
- DWORD m_cRef; //Object reference count
-
- PCImpIAnimal_K m_pImpIAnimal; //Interface implementation
- PCImpIKoala_C m_pImpIKoala; //Interface implementation
-
- IAnimal *m_pIAnimal; //From Animal
-
- public:
- CKoalaC(void);
- ~CKoalaC(void);
-
- BOOL Init(void);
-
- //IUnknown members, non-delegating
- STDMETHODIMP QueryInterface(REFIID, PPVOID);
- STDMETHODIMP_(DWORD) AddRef(void);
- STDMETHODIMP_(DWORD) Release(void);
- };
-
-
- typedef CKoalaC *PCKoalaC;
-
-
- class CImpIAnimal_K : public IAnimal
- {
- private:
- DWORD m_cRef; //For debugging
- PCKoalaC m_pObj; //Back pointer
-
- public:
- CImpIAnimal_K(PCKoalaC);
- ~CImpIAnimal_K(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);
- };
-
-
- class CImpIKoala_C : public IKoala
- {
- private:
- DWORD m_cRef; //For debugging
- PCKoalaC m_pObj; //Back pointer
-
- public:
- CImpIKoala_C(PCKoalaC);
- ~CImpIKoala_C(void);
-
- //IUnknown members
- STDMETHODIMP QueryInterface(REFIID, PPVOID);
- STDMETHODIMP_(DWORD) AddRef(void);
- STDMETHODIMP_(DWORD) Release(void);
-
- //IKoala members
- STDMETHODIMP ClimbEucalyptusTrees(void);
- STDMETHODIMP PouchOpensDown(void);
- STDMETHODIMP SleepForHoursAfterEating(void);
- };
-
-
- #endif _KOALAC_H_
-