summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2010-03-04 08:44:53 +0000
committerJon A. Cruz <jon@joncruz.org>2010-03-04 08:44:53 +0000
commit46fd0e8c49da44226151096546905589819bbdf5 (patch)
treec9f48e2a3dfbf78059b8fdb236f4ff08ef6ca494 /src
parentRemoved unused static pixmap reference. (diff)
downloadinkscape-46fd0e8c49da44226151096546905589819bbdf5.tar.gz
inkscape-46fd0e8c49da44226151096546905589819bbdf5.zip
Fixing build breakage with more proper autoconf usage.
(bzr r9138)
Diffstat (limited to 'src')
-rw-r--r--src/libnrtype/FontFactory.cpp4
-rw-r--r--src/libnrtype/FontInstance.cpp4
-rw-r--r--src/ui/tool/control-point-selection.h22
-rw-r--r--src/ui/tool/multi-path-manipulator.cpp15
-rw-r--r--src/util/Makefile_insert1
-rw-r--r--src/util/set-types.h55
6 files changed, 90 insertions, 11 deletions
diff --git a/src/libnrtype/FontFactory.cpp b/src/libnrtype/FontFactory.cpp
index d6fc207b0..8ab2ee696 100644
--- a/src/libnrtype/FontFactory.cpp
+++ b/src/libnrtype/FontFactory.cpp
@@ -26,9 +26,9 @@
/* Freetype2 */
# include <pango/pangoft2.h>
-#include <boost/unordered_map.hpp>
+#include "util/set-types.h"
-typedef boost::unordered_map<PangoFontDescription*, font_instance*, font_descr_hash, font_descr_equal> FaceMapType;
+typedef optim_map<PangoFontDescription*, font_instance*, font_descr_hash, font_descr_equal> FaceMapType;
// need to avoid using the size field
size_t font_descr_hash::operator()( PangoFontDescription *const &x) const {
diff --git a/src/libnrtype/FontInstance.cpp b/src/libnrtype/FontInstance.cpp
index 557e9106e..61cd28190 100644
--- a/src/libnrtype/FontInstance.cpp
+++ b/src/libnrtype/FontInstance.cpp
@@ -29,7 +29,7 @@
# include FT_TRUETYPE_TABLES_H
# include <pango/pangoft2.h>
-#include <boost/unordered_map.hpp>
+#include "util/set-types.h"
struct font_style_hash : public std::unary_function<font_style, size_t> {
@@ -40,7 +40,7 @@ struct font_style_equal : public std::binary_function<font_style, font_style, bo
bool operator()(font_style const &a, font_style const &b) const;
};
-typedef boost::unordered_map<font_style, raster_font*, font_style_hash, font_style_equal> StyleMap;
+typedef optim_map<font_style, raster_font*, font_style_hash, font_style_equal> StyleMap;
diff --git a/src/ui/tool/control-point-selection.h b/src/ui/tool/control-point-selection.h
index b3c2f422b..6efb63b67 100644
--- a/src/ui/tool/control-point-selection.h
+++ b/src/ui/tool/control-point-selection.h
@@ -14,8 +14,7 @@
#include <memory>
#include <boost/optional.hpp>
-#include <boost/unordered_set.hpp>
-#include <boost/unordered_map.hpp>
+#include "util/set-types.h"
#include <sigc++/sigc++.h>
#include <2geom/forward.h>
#include <2geom/point.h>
@@ -34,6 +33,17 @@ class SelectableControlPoint;
}
}
+#ifdef USE_GNU_HASHES
+namespace __gnu_cxx {
+template<>
+struct hash<Inkscape::UI::SelectableControlPoint*> {
+ size_t operator()(Inkscape::UI::SelectableControlPoint *p) const {
+ return reinterpret_cast<size_t>(p);
+ }
+};
+} // namespace __gnu_cxx
+#endif // USE_GNU_HASHES
+
namespace Inkscape {
namespace UI {
@@ -41,7 +51,7 @@ class ControlPointSelection : public Manipulator, public sigc::trackable {
public:
ControlPointSelection(SPDesktop *d, SPCanvasGroup *th_group);
~ControlPointSelection();
- typedef boost::unordered_set< SelectableControlPoint * > set_type;
+ typedef optim_set< SelectableControlPoint * > set_type;
typedef set_type Set; // convenience alias
typedef set_type::iterator iterator;
@@ -76,7 +86,9 @@ public:
void erase(iterator first, iterator last);
// find
- iterator find(const key_type &k) { return _points.find(k); }
+ iterator find(const key_type &k) {
+ return _points.find(k);
+ }
// Sometimes it is very useful to keep a list of all selectable points.
set_type const &allPoints() const { return _all_points; }
@@ -130,7 +142,7 @@ private:
set_type _points;
set_type _all_points;
- boost::unordered_map<SelectableControlPoint *, Geom::Point> _original_positions;
+ optim_map<SelectableControlPoint *, Geom::Point> _original_positions;
boost::optional<double> _rot_radius;
boost::optional<double> _mouseover_rot_radius;
Geom::OptRect _bounds;
diff --git a/src/ui/tool/multi-path-manipulator.cpp b/src/ui/tool/multi-path-manipulator.cpp
index 3b0852e6e..d86a7e9e0 100644
--- a/src/ui/tool/multi-path-manipulator.cpp
+++ b/src/ui/tool/multi-path-manipulator.cpp
@@ -8,7 +8,7 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <boost/unordered_set.hpp>
+#include "util/set-types.h"
#include <boost/shared_ptr.hpp>
#include <glib.h>
#include <glibmm/i18n.h>
@@ -25,13 +25,24 @@
#include "ui/tool/multi-path-manipulator.h"
#include "ui/tool/path-manipulator.h"
+#ifdef USE_GNU_HASHES
+namespace __gnu_cxx {
+template<>
+struct hash<Inkscape::UI::NodeList::iterator> {
+ size_t operator()(Inkscape::UI::NodeList::iterator const &n) const {
+ return reinterpret_cast<size_t>(n.ptr());
+ }
+};
+} // namespace __gnu_cxx
+#endif // USE_GNU_HASHES
+
namespace Inkscape {
namespace UI {
namespace {
typedef std::pair<NodeList::iterator, NodeList::iterator> IterPair;
typedef std::vector<IterPair> IterPairList;
-typedef boost::unordered_set<NodeList::iterator> IterSet;
+typedef optim_set<NodeList::iterator> IterSet;
typedef std::multimap<double, IterPair> DistanceMap;
typedef std::pair<double, IterPair> DistanceMapItem;
diff --git a/src/util/Makefile_insert b/src/util/Makefile_insert
index 87a974768..3d3c88940 100644
--- a/src/util/Makefile_insert
+++ b/src/util/Makefile_insert
@@ -16,6 +16,7 @@ ink_common_sources += \
util/map-list.h \
util/mathfns.h \
util/reverse-list.h \
+ util/set-types.h \
util/share.h \
util/share.cpp \
util/tuple.h \
diff --git a/src/util/set-types.h b/src/util/set-types.h
new file mode 100644
index 000000000..f6752fb64
--- /dev/null
+++ b/src/util/set-types.h
@@ -0,0 +1,55 @@
+#ifndef SEEN_SET_TYPES_H
+#define SEEN_SET_TYPES_H
+
+
+/** @file
+ * Simple wrapper to disambiguate hash/unordered lists & sets.
+ */
+/* Authors:
+ * Jon A. Cruz <jon@joncruz.org>
+ *
+ * Copyright (C) 2010 Authors
+ * Released under GNU GPL, read the file 'COPYING' for more information
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#if defined(HAVE_TR1_UNORDERED_SET)
+
+# include <tr1/unordered_set>
+# include <tr1/unordered_map>
+# define optim_set std::tr1::unordered_set
+# define optim_map std::tr1::unordered_map
+
+// TODO test on platform with this detected:
+//#elif defined(HAVE_UNORDERED_SET)
+//
+//# include <unordered_set>
+//# include <unordered_map>
+//#define optim_set std::unordered_set
+//#define optim_map std::unordered_map
+
+#elif defined(HAVE_EXT_HASH_SET)
+
+# include <ext/hash_set>
+# include <ext/hash_map>
+# define optim_set __gnu_cxx::hash_set
+# define optim_map __gnu_cxx::hash_map
+# define USE_GNU_HASHES 1
+
+#endif
+
+
+#endif // SEEN_SET_TYPES_H
+/*
+ Local Variables:
+ mode:c++
+ c-file-style:"stroustrup"
+ c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+ indent-tabs-mode:nil
+ fill-column:99
+ End:
+*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :