diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2010-03-04 08:44:53 +0000 |
|---|---|---|
| committer | Jon A. Cruz <jon@joncruz.org> | 2010-03-04 08:44:53 +0000 |
| commit | 46fd0e8c49da44226151096546905589819bbdf5 (patch) | |
| tree | c9f48e2a3dfbf78059b8fdb236f4ff08ef6ca494 /src | |
| parent | Removed unused static pixmap reference. (diff) | |
| download | inkscape-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.cpp | 4 | ||||
| -rw-r--r-- | src/libnrtype/FontInstance.cpp | 4 | ||||
| -rw-r--r-- | src/ui/tool/control-point-selection.h | 22 | ||||
| -rw-r--r-- | src/ui/tool/multi-path-manipulator.cpp | 15 | ||||
| -rw-r--r-- | src/util/Makefile_insert | 1 | ||||
| -rw-r--r-- | src/util/set-types.h | 55 |
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 : |
