X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fispell.h;h=e33d848cb7ee915587db37705882c6fc294d5228;hb=fd2124c83dfcfeaf33b64d1d33c8ceb8d9f5f9b9;hp=c0917c2e5153d589b69d13948ad003ad86cd0af8;hpb=eb5b07f615c67fd9077fd44a6c9111ba902c4cf6;p=lyx.git diff --git a/src/ispell.h b/src/ispell.h index c0917c2e51..e33d848cb7 100644 --- a/src/ispell.h +++ b/src/ispell.h @@ -1,64 +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 - #include "SpellBase.h" +#include + +#include + 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: - /// - void setError(); + /// 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 child_; // vileness below ... please FIXME /// str ???