00001 #ifndef REBECCA_FRAMEWORK_GRAPHBUILDERFRAMEWORK_H 00002 #define REBECCA_FRAMEWORK_GRAPHBUILDERFRAMEWORK_H 00003 00004 /* 00005 * RebeccaAIML, Artificial Intelligence Markup Language 00006 * C++ api and engine. 00007 * 00008 * Copyright (C) 2005 Frank Hassanabad 00009 * 00010 * This library is free software; you can redistribute it and/or 00011 * modify it under the terms of the GNU Lesser General Public 00012 * License as published by the Free Software Foundation; either 00013 * version 2.1 of the License, or (at your option) any later version. 00014 * 00015 * This library is distributed in the hope that it will be useful, 00016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * Lesser General Public License for more details. 00019 * 00020 * You should have received a copy of the GNU Lesser General Public 00021 * License along with this library; if not, write to the Free Software 00022 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00023 */ 00024 00025 /* Disable Windows VC 7.x warning about 00026 * it ignoring the throw specification 00027 */ 00028 #ifdef _WIN32 00029 # pragma warning ( push ) 00030 # pragma warning( disable : 4290 ) 00031 #endif 00032 00033 //Rebecca includes 00034 #include <rebecca/GraphBuilder.h> 00035 00036 00037 namespace rebecca 00038 { 00039 namespace framework 00040 { 00041 namespace impl 00042 { 00043 00044 /* 00045 * Forward declerations 00046 */ 00047 class CustomTags; 00048 00061 class GraphBuilderFramework : public GraphBuilder 00062 { 00063 public: 00064 00091 virtual CallBacks &getCallBacks() 00092 throw(Exception &) = 0; 00093 00117 virtual StringPimpl getStar(const unsigned int &index) const 00118 throw(IllegalArgumentException &, Exception &) = 0; 00119 00142 virtual StringPimpl getThatStar(const unsigned int &index) const 00143 throw(IllegalArgumentException &, Exception &) = 0; 00144 00169 virtual StringPimpl getTopicStar(const unsigned int &index) const 00170 throw(IllegalArgumentException &, Exception &) = 0; 00171 00193 virtual StringPimpl genderSubstitute(const StringPimpl &input) const 00194 throw(Exception &) = 0; 00195 00217 virtual StringPimpl personSubstitute(const StringPimpl &input) const 00218 throw(Exception &) = 0; 00219 00241 virtual StringPimpl person2Substitute(const StringPimpl &input) const 00242 throw(Exception &) = 0; 00243 00271 virtual StringPimpl checkedInfiniteLoopGetResponse(const StringPimpl &userInput, bool keepPreviousUserInput = true) 00272 throw(RecursionException &, Exception &) = 0; 00273 00292 virtual StringPimpl getPreviousBotResponsePunctuation(const unsigned int &previousBotResponse, 00293 const unsigned int &sentence) const 00294 throw(IllegalArgumentException &, Exception &) = 0; 00295 }; 00296 00297 } //end of namespace impl 00298 00299 //Expose just the class name to the framework namespace 00300 using rebecca::framework::impl::GraphBuilderFramework; 00301 00302 } //end of namespace framework 00303 } //end of namespace rebecca 00304 00305 00306 #ifdef _WIN32 00307 # pragma warning ( pop ) 00308 #endif 00309 00310 #endif 00311