Switch to side-by-side view

--- a/src/rcldb/synfamily.h
+++ b/src/rcldb/synfamily.h
@@ -35,7 +35,10 @@
 #include <string>
 #include <vector>
 
-#include "xapian.h"
+#include <xapian.h>
+
+#include "debuglog.h"
+#include "xmacros.h"
 
 namespace Rcl {
 
@@ -98,15 +101,38 @@
 			     const std::string& term, 
 			     const std::vector<std::string>& trans);
 
+    // Need to call setCurrentMemberName before addSynonym ! 
+    // We don't check it, for speed
+    virtual void setCurrentMemberName(const std::string& nm)
+    {
+	m_currentPrefix = entryprefix(nm);
+    }
+    virtual bool addSynonym(const std::string& term, const std::string& trans)
+    {
+	std::string key = m_currentPrefix + term;
+	std::string ermsg;
+	try {
+	    m_wdb.add_synonym(key, trans);
+	} XCATCHERROR(ermsg);
+	if (!ermsg.empty()) {
+	    LOGERR(("XapSynFamily::addSynonym: xapian error %s\n", 
+		    ermsg.c_str()));
+	    return false;
+	}
+	return true;
+    }
+
 protected:
     Xapian::WritableDatabase m_wdb;
+    std::string m_currentPrefix;
 };
 
 
 //
 // Prefixes are centrally defined here to avoid collisions
 //
-// Stem expansion family prefix. The family member name is the language
+// Stem expansion family prefix. The family member name is the
+// language ("all" for Dia and Cse)
 static const std::string synFamStem("Stm");
 static const std::string synFamDiac("Dia");
 static const std::string synFamCase("Cse");