+// -*- C++ -*-
/**
* \file Thesaurus.h
- * Copyright 2001 the LyX Team
- * Read the file COPYING
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
* \author John Levon
+ * \author Jürgen Spitzmüller
+ *
+ * Full author contact details are available in file CREDITS.
*/
#ifndef THESAURUS_H
#define THESAURUS_H
-
+
+#include "support/docstring.h"
+
#include <vector>
+#include <map>
+#include <string>
-#include <config.h>
-
-#include "LString.h"
+#ifdef HAVE_LIBMYTHES
+#include MYTHES_H_LOCATION
+#else
#ifdef HAVE_LIBAIKSAURUS
-#include "AikSaurus.h"
-#endif
-
+#include AIKSAURUS_H_LOCATION
+#endif // HAVE_LIBAIKSAURUS
+#endif // !HAVE_LIBMYTHES
+
+namespace lyx {
+
/**
* This class provides an interface to whatever thesauri we might support.
*/
-class Thesaurus {
+class Thesaurus
+{
public:
///
Thesaurus();
///
~Thesaurus();
- /**
- * enum of possible part of speech types
- */
- enum POS {
- NONE = 0x0,
- OTHER = 0x01,
- NOUN = 0x02,
- VERB = 0x04,
- ADJECTIVE = 0x08,
- ADVERB = 0x10
- };
-
- /**
- * an individual entry from the thesaurus
- */
- struct ThesaurusEntry {
- ///
- ThesaurusEntry(const string & ent, char pos);
- /// the actual entry
- string entry;
- /// entry's part of speech
- int pos;
- };
+ typedef std::map<docstring, std::vector<docstring> > Meanings;
/**
* look up some text in the thesaurus
*/
- std::vector<ThesaurusEntry> lookup(string const & text);
+ Meanings lookup(docstring const & text, docstring const & lang);
+ /// check if a thesaurus for a given language \p lang is available
+ bool thesaurusAvailable(docstring const & lang) const;
private:
+#ifdef HAVE_LIBMYTHES
+ /// add a thesaurus to the list
+ bool addThesaurus(docstring const & lang);
+
+ typedef std::map<docstring, MyThes *> Thesauri;
+ /// the thesauri
+ Thesauri thes_;
+#else
#ifdef HAVE_LIBAIKSAURUS
- AikSaurus * aik_;
-#endif
+ Aiksaurus * thes_;
+#endif // HAVE_LIBAIKSAURUS
+#endif // !HAVE_LIBMYTHES
};
-
+
extern Thesaurus thesaurus;
-
+
+
+} // namespace lyx
+
#endif