/** * @file yapie.hh * * @defgroup yap-cplus-error-hanadlinge Errir Handling in the YAP interface. * * @brief this is an attempt at supporting error * * @ingroup yap-cplus-interface * @tableofcontents * * @{ * * These classes define an object that we can then throw when an error * or unexoected event interrupts YAP. Often, the object is built by * YAP itself. One can also define one's own error objects. * * Errors will be thrown from the `C++` code, and may be processed in * very different ways. The error object should provide as much data asa * possible. */ #ifndef YAPIE_HH #define YAPIE_HH class X_API YAPPPredicate; class X_API YAPTerm; /// take information on a Prolog error: class X_API YAPError { yap_error_number ID; std::string goal, info; int swigcode; public: YAPError(){ //ID = LOCAL_ActiveError->errorNo; } /// error handler object with initial data when receiving the error term YAPError(yap_error_number id, YAPTerm culprit, std::string txt); /// we just know the error number /// exact error ID yap_error_number getID() { return LOCAL_ActiveError->errorNo; }; /// class of error yap_error_class_number getErrorClass() { return Yap_errorClass(LOCAL_ActiveError->errorNo); }; /// where in the code things happened; const char *getFile() { return LOCAL_ActiveError->errorFile; }; /// predicate things happened; Int getLine() { return LOCAL_ActiveError->errorLine; }; /// the term that caused the bug // YAPTerm getCulprit(LOCAL_ActiveError->errorFile){}; /// text describing the Error std::string text(); }; #endif /// @}