home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / com / inole2 / chap02 / reuse / koalac.h < prev    next >
C/C++ Source or Header  |  1995-05-03  |  2KB  |  98 lines

  1. /*
  2.  * KOALAC.H
  3.  *
  4.  * Definition of the Koala object using containment, Chapter 2
  5.  * Included only from KOALAC.CPP.
  6.  *
  7.  * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
  8.  *
  9.  * Kraig Brockschmidt, Microsoft
  10.  * Internet  :  kraigb@microsoft.com
  11.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  12.  */
  13.  
  14.  
  15. #ifndef _KOALAC_H_
  16. #define _KOALAC_H_
  17.  
  18. class CImpIAnimal_K;
  19. typedef CImpIAnimal_K *PCImpIAnimal_K;
  20.  
  21. class CImpIKoala_C;
  22. typedef CImpIKoala_C *PCImpIKoala_C;
  23.  
  24. class CKoalaC : public IUnknown
  25.     {
  26.     friend CImpIAnimal_K;
  27.     friend CImpIKoala_C;
  28.  
  29.     private:
  30.         DWORD           m_cRef;         //Object reference count
  31.  
  32.         PCImpIAnimal_K  m_pImpIAnimal;  //Interface implementation
  33.         PCImpIKoala_C   m_pImpIKoala;   //Interface implementation
  34.  
  35.         IAnimal        *m_pIAnimal;     //From Animal
  36.  
  37.     public:
  38.         CKoalaC(void);
  39.         ~CKoalaC(void);
  40.  
  41.         BOOL Init(void);
  42.  
  43.         //IUnknown members, non-delegating
  44.         STDMETHODIMP         QueryInterface(REFIID, PPVOID);
  45.         STDMETHODIMP_(DWORD) AddRef(void);
  46.         STDMETHODIMP_(DWORD) Release(void);
  47.     };
  48.  
  49.  
  50. typedef CKoalaC *PCKoalaC;
  51.  
  52.  
  53. class CImpIAnimal_K : public IAnimal
  54.     {
  55.     private:
  56.         DWORD       m_cRef;         //For debugging
  57.         PCKoalaC    m_pObj;         //Back pointer
  58.  
  59.     public:
  60.         CImpIAnimal_K(PCKoalaC);
  61.         ~CImpIAnimal_K(void);
  62.  
  63.         //IUnknown members
  64.         STDMETHODIMP         QueryInterface(REFIID, PPVOID);
  65.         STDMETHODIMP_(DWORD) AddRef(void);
  66.         STDMETHODIMP_(DWORD) Release(void);
  67.  
  68.         //IAnimal members
  69.         STDMETHODIMP Eat(void);
  70.         STDMETHODIMP Sleep(void);
  71.         STDMETHODIMP Procreate(void);
  72.     };
  73.  
  74.  
  75. class CImpIKoala_C : public IKoala
  76.     {
  77.     private:
  78.         DWORD       m_cRef;         //For debugging
  79.         PCKoalaC    m_pObj;         //Back pointer
  80.  
  81.     public:
  82.         CImpIKoala_C(PCKoalaC);
  83.         ~CImpIKoala_C(void);
  84.  
  85.         //IUnknown members
  86.         STDMETHODIMP         QueryInterface(REFIID, PPVOID);
  87.         STDMETHODIMP_(DWORD) AddRef(void);
  88.         STDMETHODIMP_(DWORD) Release(void);
  89.  
  90.         //IKoala members
  91.         STDMETHODIMP ClimbEucalyptusTrees(void);
  92.         STDMETHODIMP PouchOpensDown(void);
  93.         STDMETHODIMP SleepForHoursAfterEating(void);
  94.     };
  95.  
  96.  
  97. #endif _KOALAC_H_
  98.