text: #ifndef __IAGCProbeImpl_h__
  #define __IAGCProbeImpl_h__
  
  /////////////////////////////////////////////////////////////////////////////
  // IAGCProbeImpl.h : Declaration of the IAGCProbeImpl class template.
  //
  
  #include "IAGCScannerImpl.h"
  
  
  /////////////////////////////////////////////////////////////////////////////
  // Interface Map Macro
  //
  // Classes derived from IAGCProbeImpl should include this macro in their
  // interface maps.
  //
  #define COM_INTERFACE_ENTRIES_IAGCProbeImpl()                               \
      COM_INTERFACE_ENTRY(IAGCProbe)                                          \
      COM_INTERFACE_ENTRY(IDispatch)                                          \
      COM_INTERFACE_ENTRIES_IAGCScannerImpl()
  
  
  /////////////////////////////////////////////////////////////////////////////
  // IAGCProbeImpl
  //
  template <class T, class IGC, class ITF, const GUID* plibid>
  class ATL_NO_VTABLE IAGCProbeImpl :
    public IAGCScannerImpl<T, IGC, ITF, plibid, IprobeIGC, IAGCProbe>
  {
  // Types
  public:
    typedef IAGCProbeImpl<T, IGC, ITF, plibid> IAGCProbeImplBase;
  
  // IAGCProbe Interface Methods
  public:
  //  STDMETHODIMP get_ProjectileType(IAGCProjectileType** ppType)
  //  {
  //    // Not currently supported
  //    return E_NOTIMPL;
  //  }
  
    STDMETHODIMP get_EmissionPoint(IAGCVector** ppEmissionPoint)
    {
      assert(GetIGC());
  
      // Create an instance of the AGCVector object
      return GetAGCGlobal()->MakeAGCVector(&GetIGC()->GetEmissionPt(),
        ppEmissionPoint);
    }
  
    STDMETHODIMP get_Lifespan(float* pfLifespan)
    {
      assert(GetIGC());
      CLEAROUT(pfLifespan, GetIGC()->GetLifespan());
      return S_OK;
    }
  
    STDMETHODIMP get_DtBurst(float* pfDtBurst)
    {
      assert(GetIGC());
      CLEAROUT(pfDtBurst, GetIGC()->GetDtBurst());
      return S_OK;
    }
  
    STDMETHODIMP get_Accuracy(float* pfAccuracy)
    {
      assert(GetIGC());
      CLEAROUT(pfAccuracy, GetIGC()->GetAccuracy());
      return S_OK;
    }
  
    STDMETHODIMP get_IsRipcord(VARIANT_BOOL* pbIsRipcord)
    {
      assert(GetIGC());
      CLEAROUT(pbIsRipcord, VARBOOL(GetIGC()->GetCanRipcord()));
      return S_OK;
    }
  };
  
  
  /////////////////////////////////////////////////////////////////////////////
  
  #endif //__IAGCProbeImpl_h__
  