From 19bc744575f5780d1e1a60384b2c32546b378b8a Mon Sep 17 00:00:00 2001
From: Marco Biasini <marco.biasini@unibas.ch>
Date: Sat, 13 Oct 2012 15:10:53 +0200
Subject: [PATCH] fix a FIXME

---
 modules/conop/src/diag.hh       | 6 ++++++
 modules/conop/src/rule_based.cc | 3 ++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/modules/conop/src/diag.hh b/modules/conop/src/diag.hh
index 1e749f3d8..ba7297dd6 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 7bde24ffd..862faffad 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:
-- 
GitLab