diff --git a/modules/conop/src/diag.hh b/modules/conop/src/diag.hh index 1e749f3d8953c5db0e673f335aa2134567b13480..ba7297dd63766ede1e5dd067852b99b61fd14cae 100644 --- a/modules/conop/src/diag.hh +++ b/modules/conop/src/diag.hh @@ -112,6 +112,12 @@ class Diagnostics; typedef boost::shared_ptr<Diagnostics> DiagnosticsPtr; + +class DLLEXPORT DiagError : public Error { +public: + DiagError(const Diag& diag) : Error(diag.Format(false)) {} +}; + class DLLEXPORT_OST_CONOP Diagnostics { public: typedef std::vector<Diag*>::iterator diag_iterator; diff --git a/modules/conop/src/rule_based.cc b/modules/conop/src/rule_based.cc index 7bde24ffd328d4394cb62c730c6500dd839ae262..862faffada08ba9b48f4cc9a8fced2b2fde3da1d 100644 --- a/modules/conop/src/rule_based.cc +++ b/modules/conop/src/rule_based.cc @@ -114,7 +114,7 @@ void RuleBasedProcessor::ProcessUnkResidue(DiagnosticsPtr diags, .AddResidue(res); break; case CONOP_FATAL: - // FIXME: Implement a ConopError based on Diag... + throw DiagError(Diag(DIAG_UNK_RESIDUE, "unknown residue %0").AddResidue(res)); break; case CONOP_REMOVE_RESIDUE: case CONOP_REMOVE: @@ -162,6 +162,7 @@ void RuleBasedProcessor::ProcessUnkAtoms(DiagnosticsPtr diags, .AddResidue(i->GetResidue()).AddString(i->GetName()); break; case CONOP_FATAL: + throw DiagError(Diag(DIAG_UNK_ATOM, "unknown atom %0").AddAtom(*i)); // FIXME: Implement a ConopError based on Diag... break; case CONOP_REMOVE_RESIDUE: