#if !defined( calltoDisambiguator_h ) #define calltoDisambiguator_h //--------------------------------------------------------------------------// //--------------------------------------------------------------------------// // Application Header Files. // //--------------------------------------------------------------------------// #include "callto.h" #include "calltoContext.h" //--------------------------------------------------------------------------// // interface IDisambiguator. // //--------------------------------------------------------------------------// class IDisambiguator { protected: // protected constructors --------------------------------// IDisambiguator(){}; public: // public destructor ------------------------------------// virtual ~IDisambiguator(){}; public: // public methods ----------------------------------------// virtual HRESULT disambiguate ( const ICalltoContext * const calltoContext, IMutableCalltoCollection * const calltoCollection, const ICallto * const resolvedCallto ) = 0; }; // End of interface IDisambiguator. //--------------------------------------------------------------------------// // class CGatekeeperDisambiguator. // //--------------------------------------------------------------------------// class CGatekeeperDisambiguator: public IDisambiguator { public: // public methods (IDisambiguator) --------------------// virtual HRESULT disambiguate ( const ICalltoContext * const calltoContext, IMutableCalltoCollection * const calltoCollection, const ICallto * const resolvedCallto ); }; // End of CGatekeeperDisambiguator. //--------------------------------------------------------------------------// // class CGatewayDisambiguator. // //--------------------------------------------------------------------------// class CGatewayDisambiguator: public IDisambiguator { public: // public methods (IDisambiguator) --------------------// virtual HRESULT disambiguate ( const ICalltoContext * const calltoContext, IMutableCalltoCollection * const calltoCollection, const ICallto * const resolvedCallto ); }; // End of CGatewayDisambiguator. //--------------------------------------------------------------------------// // class CComputerDisambiguator. // //--------------------------------------------------------------------------// class CComputerDisambiguator: public IDisambiguator { public: // public methods (IDisambiguator) --------------------// virtual HRESULT disambiguate ( const ICalltoContext * const calltoContext, IMutableCalltoCollection * const calltoCollection, const ICallto * const resolvedCallto ); }; // End of CComputerDisambiguator. //--------------------------------------------------------------------------// // class CILSDisambiguator. // //--------------------------------------------------------------------------// class CILSDisambiguator: public IDisambiguator { public: // public methods (IDisambiguator) --------------------// virtual HRESULT disambiguate ( const ICalltoContext * const calltoContext, IMutableCalltoCollection * const calltoCollection, const ICallto * const resolvedCallto ); }; // End of CILSDisambiguator. //--------------------------------------------------------------------------// // class CUnrecognizedDisambiguator. // //--------------------------------------------------------------------------// class CUnrecognizedDisambiguator: public IDisambiguator { public: // public methods (IDisambiguator) --------------------// virtual HRESULT disambiguate ( const ICalltoContext * const calltoContext, IMutableCalltoCollection * const calltoCollection, const ICallto * const resolvedCallto ); }; // End of CUnrecognizedDisambiguator. //--------------------------------------------------------------------------// // class CCalltoDisambiguator. // //--------------------------------------------------------------------------// class CCalltoDisambiguator { public: // public constructors ------------------------------------// CCalltoDisambiguator(void); public: // public destructor ------------------------------------// ~CCalltoDisambiguator(); public: // public methods ----------------------------------------// HRESULT disambiguate ( const ICalltoContext * const calltoContext, ICalltoCollection * const resolvedCalltoCollection, CCalltoCollection * const disambiguatedCalltoCollection ); private: // private methods ----------------------------------------// bool addDisambiguator ( IDisambiguator * const disambiguator ); private: // private members ----------------------------------------// CGatekeeperDisambiguator m_gatekeeperDisambiguator; CGatewayDisambiguator m_gatewayDisambiguator; CILSDisambiguator m_ilsDisambiguator; CComputerDisambiguator m_computerDisambiguator; CUnrecognizedDisambiguator m_unrecognizedDisambiguator; IDisambiguator * m_disambiguators[ 5 ]; int m_registeredDisambiguators; }; // End of class CCalltoDisambiguator. //--------------------------------------------------------------------------// #endif // !defined( calltoDisambiguator_h )