// ========================================================================= // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co) // ========================================================================= #ifndef __TinyCon__Trie__h__ #define __TinyCon__Trie__h__ #include #include #include #include #include namespace TinyCon { /** */ class CPPLUGINS_TINYCON_EXPORT Trie { public: typedef Trie Self; typedef std::map< char, Self* > TChildren; public: Trie( ); virtual ~Trie( ); virtual bool IsWord( ) const; virtual Self* createExtension( ); virtual Self* getExtension( ); virtual const Self* getExtension( ) const; virtual void setExtension( Self* extension ); virtual Self* insert( const std::string& w ); virtual void words( std::vector< std::string >& options ) const; virtual std::pair< Self*, std::string > find( const std::string& line, const std::size_t& p = 0 ); virtual std::pair< const Self*, std::string > find( const std::string& line, const std::size_t& p = 0 ) const; protected: TChildren m_Next; bool m_IsWord; Self* m_Extension; }; } // end namespace #endif // __TinyCon__Trie__h__ // eof - $RCSfile$