This is to avoid a discussion on the "expressiveness" of
#include "something"
class Foo : NonCopiable {
...
};
vs
class Foo {
...
private:
// make class noncopyable: unintentionally no implemented
Foo(Foo const &);
Foo & operator=(Foo const &);
};
I actually prefer the latter, but the former is closer to the
boost::noncopyable version we have right now.
In any case I want to get rid of #include <boost/utility> which we only
use for boost::noncopyable (i.e. < 10 lines) It pulls in 30000 lines of
otherwise mainly useless code which ends up thanks to its use in
BufferView.h in almost all of our translation units.
Andre'
------------------------------------------------------------------------
Index: BufferList.h
===================================================================
--- BufferList.h (revision 20587)
+++ BufferList.h (working copy)
@@ -14,7 +14,7 @@
#include "support/docstring.h"
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <vector>
@@ -28,7 +28,7 @@
* The class holds all all open buffers, and handles construction
* and deletions of new ones.
*/
-class BufferList : boost::noncopyable {
+class BufferList : NonCopyable {
public:
typedef std::vector<Buffer *>::iterator iterator;
typedef std::vector<Buffer *>::const_iterator const_iterator;
Index: insets/ExternalTemplate.h
===================================================================
--- insets/ExternalTemplate.h (revision 20587)
+++ insets/ExternalTemplate.h (working copy)
@@ -15,7 +15,7 @@
#include "ExternalTransforms.h"
-#include <boost/utility.hpp>
+#include "support/utility.h"
namespace lyx {
@@ -97,7 +97,7 @@
/**
* A singleton class that manages the external inset templates
*/
-class TemplateManager : boost::noncopyable {
+class TemplateManager : NonCopyable {
public:
/// Map from the LyX name of the template to the template structure
typedef std::map<std::string, Template> Templates;
Index: graphics/GraphicsCacheItem.h
===================================================================
--- graphics/GraphicsCacheItem.h (revision 20587)
+++ graphics/GraphicsCacheItem.h (working copy)
@@ -30,7 +30,7 @@
#include "GraphicsTypes.h"
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <boost/scoped_ptr.hpp>
#include <boost/signal.hpp>
@@ -45,7 +45,7 @@
class Converter;
/// A lyx::graphics::Cache item holder.
-class CacheItem : boost::noncopyable {
+class CacheItem : NonCopyable {
public:
///
CacheItem(support::FileName const & file);
Index: graphics/Previews.h
===================================================================
--- graphics/Previews.h (revision 20587)
+++ graphics/Previews.h (working copy)
@@ -15,7 +15,7 @@
#ifndef PREVIEWS_H
#define PREVIEWS_H
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <boost/scoped_ptr.hpp>
namespace lyx {
@@ -27,7 +27,7 @@
class PreviewLoader;
-class Previews : boost::noncopyable {
+class Previews : NonCopyable {
public:
/// a wrapper for lyxrc.preview
static LyXRC_PreviewStatus status();
Index: graphics/PreviewLoader.h
===================================================================
--- graphics/PreviewLoader.h (revision 20587)
+++ graphics/PreviewLoader.h (working copy)
@@ -18,7 +18,7 @@
#ifndef PREVIEWLOADER_H
#define PREVIEWLOADER_H
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <boost/scoped_ptr.hpp>
#include <boost/signal.hpp>
@@ -31,7 +31,7 @@
class PreviewImage;
-class PreviewLoader : boost::noncopyable {
+class PreviewLoader : NonCopyable {
public:
/** We need buffer because we require the preamble to the
* LaTeX file.
Index: graphics/GraphicsCache.h
===================================================================
--- graphics/GraphicsCache.h (revision 20587)
+++ graphics/GraphicsCache.h (working copy)
@@ -20,7 +20,7 @@
#ifndef GRAPHICSCACHE_H
#define GRAPHICSCACHE_H
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <boost/scoped_ptr.hpp>
#include <boost/shared_ptr.hpp>
@@ -36,7 +36,7 @@
class CacheItem;
-class Cache : boost::noncopyable {
+class Cache : NonCopyable {
public:
/// This is a singleton class. Get the instance.
Index: graphics/GraphicsConverter.h
===================================================================
--- graphics/GraphicsConverter.h (revision 20587)
+++ graphics/GraphicsConverter.h (working copy)
@@ -19,7 +19,7 @@
#include <boost/scoped_ptr.hpp>
#include <boost/signal.hpp>
-#include <boost/utility.hpp>
+#include "support/utility.h"
namespace lyx {
@@ -27,7 +27,7 @@
namespace graphics {
-class Converter : boost::noncopyable {
+class Converter : NonCopyable {
public:
/// Can the conversion be performed?
static bool isReachable(std::string const & from_format_name,
Index: LyXAction.h
===================================================================
--- LyXAction.h (revision 20587)
+++ LyXAction.h (working copy)
@@ -15,7 +15,7 @@
#include "lfuns.h"
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <map>
#include <string>
@@ -32,7 +32,7 @@
* dynamically, for encapsulating a real action and an
* argument. They are used for things like the menus.
*/
-class LyXAction : boost::noncopyable {
+class LyXAction : NonCopyable {
private:
/// information for an action
struct func_info {
Index: Session.h
===================================================================
--- Session.h (revision 20587)
+++ Session.h (working copy)
@@ -16,7 +16,7 @@
#include "support/FileName.h"
#include "support/types.h"
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <boost/tuple/tuple.hpp>
#include <string>
@@ -38,7 +38,7 @@
/** base class for all sections in the session file
*/
-class SessionSection : boost::noncopyable {
+class SessionSection : NonCopyable {
public:
///
@@ -372,7 +372,7 @@
};
-class Session : boost::noncopyable {
+class Session : NonCopyable {
public:
/** Read the session file.
Index: TextClassList.h
===================================================================
--- TextClassList.h (revision 20587)
+++ TextClassList.h (working copy)
@@ -16,7 +16,7 @@
#include "support/types.h"
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <string>
#include <vector>
@@ -30,7 +30,7 @@
extern bool LyXSetStyle();
///
-class TextClassList : boost::noncopyable {
+class TextClassList : NonCopyable {
public:
///
typedef std::vector<TextClass> ClassList;
Index: frontends/WorkArea.cpp
===================================================================
--- frontends/WorkArea.cpp (revision 20587)
+++ frontends/WorkArea.cpp (working copy)
@@ -38,7 +38,7 @@
#include "support/ForkedcallsController.h"
#include "support/FileName.h"
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <boost/bind.hpp>
#include <boost/current_function.hpp>
Index: frontends/LyXView.h
===================================================================
--- frontends/LyXView.h (revision 20587)
+++ frontends/LyXView.h (working copy)
@@ -18,7 +18,7 @@
#include <boost/signal.hpp>
#include <boost/signals/trackable.hpp>
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <vector>
@@ -54,7 +54,7 @@
* Additionally we would like to support multiple views
* in a single LyXView.
*/
-class LyXView : public boost::signals::trackable, boost::noncopyable {
+class LyXView : public boost::signals::trackable, NonCopyable {
public:
///
LyXView(int id);
Index: frontends/Dialogs.h
===================================================================
--- frontends/Dialogs.h (revision 20587)
+++ frontends/Dialogs.h (working copy)
@@ -14,7 +14,7 @@
#define DIALOGS_H
#include <boost/signal.hpp>
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <map>
@@ -29,7 +29,7 @@
/** Container of all dialogs.
*/
-class Dialogs : boost::noncopyable {
+class Dialogs : NonCopyable {
public:
///
Dialogs(LyXView &);
Index: frontends/qt4/pch.h
===================================================================
--- frontends/qt4/pch.h (revision 20587)
+++ frontends/qt4/pch.h (working copy)
@@ -10,7 +10,7 @@
#include <boost/signals/trackable.hpp>
#include <boost/signal.hpp>
#include <boost/tuple/tuple.hpp>
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <algorithm>
#include <cmath>
Index: support/RandomAccessList.h
===================================================================
--- support/RandomAccessList.h (revision 20587)
+++ support/RandomAccessList.h (working copy)
@@ -15,7 +15,7 @@
//#include "debug.h"
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <vector>
#include <list>
Index: support/FileMonitor.h
===================================================================
--- support/FileMonitor.h (revision 20587)
+++ support/FileMonitor.h (working copy)
@@ -15,7 +15,7 @@
#ifndef FILEMONITOR_H
#define FILEMONITOR_H
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <boost/scoped_ptr.hpp>
#include <boost/signal.hpp>
@@ -24,7 +24,7 @@
class FileName;
-class FileMonitor : boost::noncopyable {
+class FileMonitor : NonCopyable {
public:
/** Once monitoring begins, the file will be monitored every
* interval ms.
Index: support/pch.h
===================================================================
--- support/pch.h (revision 20587)
+++ support/pch.h (working copy)
@@ -19,7 +19,7 @@
#endif
#include <boost/tokenizer.hpp>
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <fcntl.h>
#ifdef HAVE_SYS_STAT_H
Index: support/docstring.h
===================================================================
--- support/docstring.h (revision 20587)
+++ support/docstring.h (working copy)
@@ -10,8 +10,8 @@
* Full author contact details are available in file CREDITS.
*/
-#ifndef LYX_DOCSTRING_H
-#define LYX_DOCSTRING_H
+#ifndef DOCSTRING_H
+#define DOCSTRING_H
#include "support/types.h"
@@ -66,34 +66,34 @@
docstring const normalize_c(docstring const & s);
/// Compare a docstring with a C string of ASCII characters
-bool operator==(lyx::docstring const &, char const *);
+bool operator==(docstring const &, char const *);
/// Compare a C string of ASCII characters with a docstring
-inline bool operator==(char const * l, lyx::docstring const & r) { return r ==
l; }
+inline bool operator==(char const * l, docstring const & r) { return r == l; }
/// Compare a docstring with a C string of ASCII characters
-inline bool operator!=(lyx::docstring const & l, char const * r) { return !(l
== r); }
+inline bool operator!=(docstring const & l, char const * r) { return !(l ==
r); }
/// Compare a C string of ASCII characters with a docstring
-inline bool operator!=(char const * l, lyx::docstring const & r) { return !(r
== l); }
+inline bool operator!=(char const * l, docstring const & r) { return !(r ==
l); }
/// Concatenate a docstring and a C string of ASCII characters
-lyx::docstring operator+(lyx::docstring const &, char const *);
+docstring operator+(docstring const &, char const *);
/// Concatenate a C string of ASCII characters and a docstring
-lyx::docstring operator+(char const *, lyx::docstring const &);
+docstring operator+(char const *, docstring const &);
/// Concatenate a docstring and a single ASCII character
-lyx::docstring operator+(lyx::docstring const & l, char r);
+docstring operator+(docstring const & l, char r);
/// Concatenate a single ASCII character and a docstring
-lyx::docstring operator+(char l, lyx::docstring const & r);
+docstring operator+(char l, docstring const & r);
/// Append a C string of ASCII characters to a docstring
-lyx::docstring & operator+=(lyx::docstring &, char const *);
+docstring & operator+=(docstring &, char const *);
/// Append a single ASCII character to a docstring
-lyx::docstring & operator+=(lyx::docstring & l, char r);
+docstring & operator+=(docstring & l, char r);
} // namespace lyx
Index: support/Path.h
===================================================================
--- support/Path.h (revision 20587)
+++ support/Path.h (working copy)
@@ -14,7 +14,7 @@
#include "support/FileName.h"
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <string>
@@ -34,7 +34,7 @@
*
* At the end of p's scope the cwd is reset to its previous value.
*/
-class Path : boost::noncopyable {
+class Path : NonCopyable {
public:
/// change to the given directory
explicit Path(FileName const & path);
Index: support/utility.h
===================================================================
--- support/utility.h (revision 0)
+++ support/utility.h (revision 0)
@@ -0,0 +1,48 @@
+// -*- C++ -*-
+/**
+ * \file utility.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * Provide a set of typedefs for commonly used things like sizes and
+ * indices wile trying to stay compatible with types used
+ * by the standard containers.
+ *
+ * \author Andr� P�nitz
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef UTILITY_H
+#define UTILITY_H
+
+// This is mainly a replacement for stuff that's too expensive in boost.
+
+namespace lyx {
+
+class NonCopyable
+{
+public:
+ NonCopyable() {}
+private:
+ // intentionally unimplemented
+ NonCopyable(NonCopyable const &);
+ void operator=(NonCopyable const &);
+};
+
+
+template <typename T>
+class ScopedPtr : public NonCopyable
+{
+public:
+ ScopedPtr() : ptr_(0) {}
+ explicit ScopedPtr(T * ptr) : ptr_(ptr) {}
+ ~ScopedPtr() { delete ptr_; }
+ T * get() const { return ptr_; }
+private:
+ T * ptr_;
+};
+
+} // namespace lyx
+
+#endif // UTILITY_H
Index: LaTeX.h
===================================================================
--- LaTeX.h (revision 20587)
+++ LaTeX.h (working copy)
@@ -19,7 +19,7 @@
#include "support/docstring.h"
#include "support/FileName.h"
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <boost/signal.hpp>
#include <vector>
@@ -93,7 +93,7 @@
* This is required by the LaTeX compiler, and we also make use of it by
* various support::makeAbsPath() calls.
*/
-class LaTeX : boost::noncopyable {
+class LaTeX : NonCopyable {
public:
/** Return values from scanLogFile() and run() (to come)
Index: pch.h
===================================================================
--- pch.h (revision 20587)
+++ pch.h (working copy)
@@ -18,7 +18,7 @@
#include <boost/signals/trackable.hpp>
#include <boost/tokenizer.hpp>
#include <boost/tuple/tuple.hpp>
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <boost/version.hpp>
#include <algorithm>
Index: ConverterCache.h
===================================================================
--- ConverterCache.h (revision 20587)
+++ ConverterCache.h (working copy)
@@ -21,7 +21,7 @@
#ifndef CONVERTERCACHE_H
#define CONVERTERCACHE_H
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <boost/scoped_ptr.hpp>
#include <string>
@@ -49,7 +49,7 @@
*
* There is no cache maintenance yet (max size, max age etc.)
*/
-class ConverterCache : boost::noncopyable {
+class ConverterCache : NonCopyable {
public:
/// This is a singleton class. Get the instance.
Index: BufferView.h
===================================================================
--- BufferView.h (revision 20587)
+++ BufferView.h (working copy)
@@ -24,7 +24,7 @@
#include "support/types.h"
#include <boost/tuple/tuple.hpp>
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <boost/signal.hpp>
#include <utility>
@@ -85,7 +85,7 @@
* \sa Buffer
* \sa CoordCache
*/
-class BufferView : boost::noncopyable {
+class BufferView : NonCopyable {
public:
///
BufferView(Buffer & buffer);
Index: LyX.h
===================================================================
--- LyX.h (revision 20587)
+++ LyX.h (working copy)
@@ -15,7 +15,7 @@
#define LYX_H
#include <boost/scoped_ptr.hpp>
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <string>
@@ -47,7 +47,7 @@
}
/// initial startup
-class LyX : boost::noncopyable {
+class LyX : NonCopyable {
public:
LyX();
Index: ModuleList.h
===================================================================
--- ModuleList.h (revision 20587)
+++ ModuleList.h (working copy)
@@ -15,7 +15,7 @@
#include <vector>
#include "support/FileName.h"
-#include <boost/utility.hpp>
+#include "support/utility.h"
#include <map>
@@ -45,7 +45,7 @@
* The ModuleList represents the various LyXModule's that are
available at
* present.
*/
- class ModuleList : boost::noncopyable {
+ class ModuleList : NonCopyable {
public:
/// reads the modules from a file generated by
configure.py
bool load();