]> git.lyx.org Git - lyx.git/blobdiff - src/ispell.h
Use Gtk::ComboBoxText::clear() instead of clear_items(), which only exists in newer...
[lyx.git] / src / ispell.h
index 2e89f00fbb91aa72d67994bb18ee520b3b0796bb..e33d848cb7ee915587db37705882c6fc294d5228 100644 (file)
@@ -1,61 +1,80 @@
 // -*- C++ -*-
 /**
  * \file ispell.h
- * Copyright 2002 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 unknown
+ * \author John Levon
+ *
+ * Full author contact details are available in file CREDITS.
  */
 
 #ifndef SP_ISPELL_H
 #define SP_ISPELL_H
 
-#include <cstdio>
-
 #include "SpellBase.h"
 
+#include <boost/scoped_ptr.hpp>
+
+#include <cstdio>
+
 class BufferParams;
+namespace lyx {
+namespace support {
+class ForkedProcess;
+}
+}
 
 /// i/a spell process-based spellchecker
 class ISpell : public SpellBase {
 public:
-       ISpell(BufferParams const & params, string const & lang);
+       ISpell(BufferParams const & params, std::string const & lang);
 
        ~ISpell();
 
        /// return true if the spellchecker instance still exists
        virtual bool alive();
 
-       /// clean up on messy exit
-       virtual void cleanUp();
-
        /// check the given word and return the result
        virtual enum Result check(WordLangTuple const & word);
 
-       /// finish this spellchecker instance
-       virtual void close();
-
        /// insert the given word into the personal dictionary
        virtual void insert(WordLangTuple const & word);
 
        /// accept the given word temporarily
        virtual void accept(WordLangTuple const & word);
 
-       /// return the next near miss after a MISSED result
-       virtual string const nextMiss();
+       /// return the next near miss after a SUGGESTED_WORDS result
+       virtual std::string const nextMiss();
 
-       /// give an error message on messy exit 
-       virtual string const error();
+       /// give an error message on messy exit
+       virtual std::string const error();
 
 private:
+       /// read some data. Returns true on an error. Sets err_read
+       /// to true if the data was from stderr.
+       bool select(bool & err_read);
+
        /// instream to communicate with ispell
        FILE * in;
        /// outstream to communicate with ispell
        FILE * out;
+       /// errstream for ispell
+       FILE * inerr;
+
+       /// pipe fds
+       int pipein[2];
+       int pipeout[2];
+       int pipeerr[2];
+
+       /// buffer for reading
+       char buf[BUFSIZ];
+
        /// spell error
-       char const * error_;
-       /// the fd of the outgoing pipe
-       int isp_fd;
+       std::string error_;
+
+       boost::scoped_ptr<lyx::support::ForkedProcess> child_;
 
        // vileness below ... please FIXME
        /// str ???