Abdelrazak Younes wrote:

Hum... I've done the change (see attached) but it's more complicated than that. For example, InsetMathNest.C should not care about BufferList but I need to include "bufferlist.h" to avoid this compilation error below. Any idea someone?

With the pimpl_ implementation attached, InsetMathNest.C compiles fine. Does that suit you?

Abdel.
Index: Application.C
===================================================================
--- Application.C       (revision 15161)
+++ Application.C       (working copy)
@@ -12,9 +12,13 @@
 
 #include "Application.h"
 
+#include "bufferlist.h"
 #include "funcrequest.h"
 #include "LyXAction.h"
+#include "lyxfunc.h"
 #include "lyxrc.h"
+#include "lyxserver.h"
+#include "lyxsocket.h"
 #include "LyXView.h"
 
 #include "support/lstrings.h"
@@ -25,60 +29,76 @@
 
 using lyx::support::package;
 
+struct Application_pimpl 
+{
+       // FIXME: lyxfunc_ should be private. But the actual construction is 
done in
+       // GuiApplication for now.
+
+       /// our function handler
+       boost::scoped_ptr<LyXFunc> lyxfunc_;
+
+       ///
+       boost::scoped_ptr<LyXServer> lyx_server_;
+       ///
+       boost::scoped_ptr<LyXServerSocket> lyx_socket_;
+       ///
+       boost::scoped_ptr<BufferList> buffer_list_;
+};
+
 namespace lyx {
 namespace frontend {
 
-
 Application::Application(int &, char **)
 {
+       pimpl_ = new Application_pimpl;
 }
 
 
 LyXFunc & Application::lyxFunc()
 {
-       return *lyxfunc_.get(); 
+       return *pimpl_->lyxfunc_.get();
 }
 
 
 LyXFunc const & Application::lyxFunc() const
 {
-       return *lyxfunc_.get(); 
+       return *pimpl_->lyxfunc_.get(); 
 }
 
 
 LyXServer & Application::server()
 {
-       return *lyx_server_.get(); 
+       return *pimpl_->lyx_server_.get(); 
 }
 
 
 LyXServer const & Application::server() const 
 {
-       return *lyx_server_.get(); 
+       return *pimpl_->lyx_server_.get(); 
 }
 
 
 LyXServerSocket & Application::socket()
 {
-       return *lyx_socket_.get();
+       return *pimpl_->lyx_socket_.get();
 }
 
 
 LyXServerSocket const & Application::socket() const
 {
-       return *lyx_socket_.get();
+       return *pimpl_->lyx_socket_.get();
 }
 
 
 BufferList & Application::bufferList()
 {
-       return buffer_list_;
+       return *pimpl_->buffer_list_.get();
 }
 
 
 BufferList const & Application::bufferList() const
 {
-       return buffer_list_;
+       return *pimpl_->buffer_list_.get();
 }
 
 
@@ -90,13 +110,13 @@
 
 int Application::start(std::string const & batch)
 {
-       lyx_server_.reset(new LyXServer(lyxfunc_.get(), lyxrc.lyxpipes));
-       lyx_socket_.reset(new LyXServerSocket(lyxfunc_.get(), 
+       pimpl_->lyx_server_.reset(new LyXServer(pimpl_->lyxfunc_.get(), 
lyxrc.lyxpipes));
+       pimpl_->lyx_socket_.reset(new LyXServerSocket(pimpl_->lyxfunc_.get(), 
                lyx::support::os::internal_path(package().temp_dir() + 
"/lyxsocket")));
 
        // handle the batch commands the user asked for
        if (!batch.empty()) {
-               lyxfunc_->dispatch(lyxaction.lookupFunc(batch));
+               pimpl_->lyxfunc_->dispatch(lyxaction.lookupFunc(batch));
        }
 
        return exec();
Index: Application.h
===================================================================
--- Application.h       (revision 15161)
+++ Application.h       (working copy)
@@ -11,18 +11,18 @@
 #ifndef LYX_APPLICATION_H
 #define LYX_APPLICATION_H
 
-#include "bufferlist.h"
-#include "lyxfunc.h"
-#include "lyxserver.h"
-#include "lyxsocket.h"
-
 #include <boost/scoped_ptr.hpp>
 
 #include <string>
 
+class BufferList;
 class BufferView;
-class LyXView;
+class LyXFunc;
+class LyXServer;
+class LyXServerSocket;
 
+struct Application_pimpl;
+       
 namespace lyx {
 namespace frontend {
 
@@ -30,7 +30,6 @@
 class Gui;
 class Selection;
 
-
 /// The main application class
 /**
 There should be only one instance of this class. No Qt object
@@ -78,20 +77,8 @@
 protected:
        ///
        BufferView * buffer_view_;
-
-       // FIXME: lyxfunc_ should be private. But the actual construction is 
done in
-       // GuiApplication for now.
-
-       /// our function handler
-       boost::scoped_ptr<LyXFunc> lyxfunc_;
-
-private:
        ///
-       boost::scoped_ptr<LyXServer> lyx_server_;
-       ///
-       boost::scoped_ptr<LyXServerSocket> lyx_socket_;
-       ///
-       BufferList buffer_list_;
+       Application_pimpl * pimpl_;
 
 }; // Application
 

Reply via email to