+} // namespace anon
+
+
+boost::scoped_ptr<LyX> LyX::singleton_;
+
+void LyX::exec(int & argc, char * argv[])
+{
+ BOOST_ASSERT(!singleton_.get());
+ // We must return from this before launching the gui so that
+ // other parts of the code can access singleton_ through
+ // LyX::ref and LyX::cref.
+ singleton_.reset(new LyX);
+ // Start the real execution loop.
+ singleton_->priv_exec(argc, argv);
+}
+
+
+LyX & LyX::ref()
+{
+ BOOST_ASSERT(singleton_.get());
+ return *singleton_.get();
+}
+
+
+LyX const & LyX::cref()
+{
+ BOOST_ASSERT(singleton_.get());
+ return *singleton_.get();
+}
+
+
+LyX::LyX()
+ : first_start(false)
+{}
+
+
+LastFiles & LyX::lastfiles()
+{
+ BOOST_ASSERT(lastfiles_.get());
+ return *lastfiles_.get();
+}
+
+
+LastFiles const & LyX::lastfiles() const
+{
+ BOOST_ASSERT(lastfiles_.get());
+ return *lastfiles_.get();
+}
+
+
+void LyX::addLyXView(boost::shared_ptr<LyXView> const & lyxview)
+{
+ views_.push_back(lyxview);