/** * @class wosh::services::AimlQBot * @brief * * * * * * **************************************************************************** * @version $Id: AimlQBot.h 14 2009-03-02 20:29:02Z alex $ * @author Alessandro Polo ****************************************************************************/ /* Copyright (c) 2009, WOSH - Wide Open Smart Home * by Alessandro Polo - OpenSmartHome.com * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the OpenSmartHome.com WOSH nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY Alessandro Polo ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL Alessandro Polo BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************************************************************/ #ifndef __WOSH_AimlQBot_H__ #define __WOSH_AimlQBot_H__ #include #include #include #include #include #include "3rdparty/aimlparser.h" using namespace std; namespace wosh { namespace services { class AimlQBot : public Thread { public: AimlQBot(); virtual ~AimlQBot(); /** @name Setup * @{ ******************************************************************************/ public: void setBusConnector( BusConnector* conn ) { this->connector = conn; } void setLogger( Logger* logger ) { this->log = logger; } //@} public: string evaluate( const string& message ); WRESULT loadFolderSet( const string& folder_path ); WRESULT loadVars( const string& folder_path ); WRESULT loadSubstitutions( const string& folder_path ); WRESULT saveVars( const string& folder_path ); /** @name Internal methods * @{ ******************************************************************************/ protected: /** * @brief * @see running * @see */ virtual void runThread(); //@} protected: QStringList sets; AIMLParser parser; BusConnector* connector; Logger* log; }; // class def }; // namespace services }; // namespace wosh #endif //__WOSH_AimlQBot_H__