summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc Jeanmougin <marc@jeanmougin.fr>2015-12-09 00:45:44 +0000
committerMarc Jeanmougin <marcjeanmougin@free.fr>2015-12-09 00:45:44 +0000
commit1c18349cc106bb55c7bca12fd572fb7b899ff225 (patch)
tree68150ab0e7a637f7f7d3b3e97424c03827409570 /src
parentfinally removed all GSList from main folder .h files (diff)
downloadinkscape-1c18349cc106bb55c7bca12fd572fb7b899ff225.tar.gz
inkscape-1c18349cc106bb55c7bca12fd572fb7b899ff225.zip
replaced remaining GHashTable with std::map
(bzr r14504.1.16)
Diffstat (limited to 'src')
-rw-r--r--src/attributes.cpp20
-rw-r--r--src/document-private.h4
-rw-r--r--src/extension/internal/cairo-render-context.cpp14
-rw-r--r--src/extension/internal/cairo-render-context.h2
-rw-r--r--src/xml/repr-io.cpp18
5 files changed, 21 insertions, 37 deletions
diff --git a/src/attributes.cpp b/src/attributes.cpp
index ad6a51c88..e8620a498 100644
--- a/src/attributes.cpp
+++ b/src/attributes.cpp
@@ -536,21 +536,13 @@ static SPStyleProp const props[] = {
unsigned
sp_attribute_lookup(gchar const *key)
{
- static GHashTable *propdict = NULL;
-
- if (!propdict) {
- unsigned int i;
- propdict = g_hash_table_new(g_str_hash, g_str_equal);
- for (i = 1; i < n_attrs; i++) {
- g_assert(props[i].code == static_cast< gint >(i) );
- // If this g_assert fails, then the sort order of SPAttributeEnum does not match the order in props[]!
- g_hash_table_insert(propdict,
- const_cast<void *>(static_cast<void const *>(props[i].name)),
- GINT_TO_POINTER(props[i].code));
- }
+ for (unsigned int i = 1; i < n_attrs; i++) {
+ g_assert(props[i].code == static_cast< gint >(i) );
+ // If this g_assert fails, then the sort order of SPAttributeEnum does not match the order in props[]!
+ if(g_str_equal(const_cast<void *>(static_cast<void const *>(props[i].name)), key))
+ return GPOINTER_TO_UINT(GINT_TO_POINTER(props[i].code));
}
-
- return GPOINTER_TO_UINT(g_hash_table_lookup(propdict, key));
+ return SP_ATTR_INVALID;
}
unsigned char const *
diff --git a/src/document-private.h b/src/document-private.h
index 55c844ecc..eaed0020e 100644
--- a/src/document-private.h
+++ b/src/document-private.h
@@ -36,16 +36,12 @@ class Event;
}
}
-typedef struct _GHashTable GHashTable;
-
struct SPDocumentPrivate {
typedef std::map<GQuark, SPDocument::IDChangedSignal> IDChangedSignalMap;
typedef std::map<GQuark, SPDocument::ResourcesChangedSignal> ResourcesChangedSignalMap;
std::map<std::string, SPObject *> iddef;
std::map<Inkscape::XML::Node *, SPObject *> reprdef;
- //GHashTable *iddef; /**< Dictionary of id -> SPObject mappings */
- //GHashTable *reprdef; /**< Dictionary of Inkscape::XML::Node -> SPObject mappings */
unsigned long serial;
diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp
index 97b84606f..8b7a22f21 100644
--- a/src/extension/internal/cairo-render-context.cpp
+++ b/src/extension/internal/cairo-render-context.cpp
@@ -130,14 +130,12 @@ CairoRenderContext::CairoRenderContext(CairoRenderer *parent) :
_clip_mode(CLIP_MODE_MASK),
_omittext_state(EMPTY)
{
- font_table = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, font_data_free);
}
CairoRenderContext::~CairoRenderContext(void)
{
- if(font_table != NULL) {
- g_hash_table_remove_all(font_table);
- }
+ for (std::map<gpointer, cairo_font_face_t *>::const_iterator iter = font_table.begin(); iter != font_table.end(); ++iter)
+ font_data_free(iter->second);
if (_cr) cairo_destroy(_cr);
if (_surface) cairo_surface_destroy(_surface);
@@ -1645,7 +1643,9 @@ CairoRenderContext::renderGlyphtext(PangoFont *font, Geom::Affine const &font_ma
// create a cairo_font_face from PangoFont
double size = style->font_size.computed; /// \fixme why is this variable never used?
gpointer fonthash = (gpointer)font;
- cairo_font_face_t *font_face = (cairo_font_face_t *)g_hash_table_lookup(font_table, fonthash);
+ cairo_font_face_t *font_face = NULL;
+ if(font_table.find(fonthash)!=font_table.end())
+ font_face = font_table[fonthash];
FcPattern *fc_pattern = NULL;
@@ -1660,7 +1660,7 @@ CairoRenderContext::renderGlyphtext(PangoFont *font, Geom::Affine const &font_ma
if(font_face == NULL) {
font_face = cairo_win32_font_face_create_for_logfontw(&lfw);
- g_hash_table_insert(font_table, fonthash, font_face);
+ font_table[fonthash] = font_face;
}
# endif
#else
@@ -1669,7 +1669,7 @@ CairoRenderContext::renderGlyphtext(PangoFont *font, Geom::Affine const &font_ma
fc_pattern = fc_font->font_pattern;
if(font_face == NULL) {
font_face = cairo_ft_font_face_create_for_pattern(fc_pattern);
- g_hash_table_insert(font_table, fonthash, font_face);
+ font_table[fonthash] = font_face;
}
# endif
#endif
diff --git a/src/extension/internal/cairo-render-context.h b/src/extension/internal/cairo-render-context.h
index 57d155b60..b3ab3655a 100644
--- a/src/extension/internal/cairo-render-context.h
+++ b/src/extension/internal/cairo-render-context.h
@@ -219,7 +219,7 @@ protected:
void _prepareRenderGraphic(void);
void _prepareRenderText(void);
- GHashTable *font_table;
+ std::map<gpointer, cairo_font_face_t *> font_table;
static void font_data_free(gpointer data);
CairoRenderState *_createState(void);
diff --git a/src/xml/repr-io.cpp b/src/xml/repr-io.cpp
index a4146f215..4a6f59b43 100644
--- a/src/xml/repr-io.cpp
+++ b/src/xml/repr-io.cpp
@@ -38,6 +38,7 @@
#include "preferences.h"
#include <glibmm/miscutils.h>
+#include <map>
using Inkscape::IO::Writer;
using Inkscape::Util::List;
@@ -50,8 +51,8 @@ using Inkscape::XML::calc_abs_doc_base;
using Inkscape::XML::rebase_href_attrs;
Document *sp_repr_do_read (xmlDocPtr doc, const gchar *default_ns);
-static Node *sp_repr_svg_read_node (Document *xml_doc, xmlNodePtr node, const gchar *default_ns, GHashTable *prefix_map);
-static gint sp_repr_qualified_name (gchar *p, gint len, xmlNsPtr ns, const xmlChar *name, const gchar *default_ns, GHashTable *prefix_map);
+static Node *sp_repr_svg_read_node (Document *xml_doc, xmlNodePtr node, const gchar *default_ns, std::map<std::string, std::string> &prefix_map);
+static gint sp_repr_qualified_name (gchar *p, gint len, xmlNsPtr ns, const xmlChar *name, const gchar *default_ns, std::map<std::string, std::string> &prefix_map);
static void sp_repr_write_stream_root_element(Node *repr, Writer &out,
bool add_whitespace, gchar const *default_ns,
int inlineattrs, int indent,
@@ -486,8 +487,7 @@ Document *sp_repr_do_read (xmlDocPtr doc, const gchar *default_ns)
return NULL;
}
- GHashTable * prefix_map;
- prefix_map = g_hash_table_new (g_str_hash, g_str_equal);
+ std::map<std::string, std::string> prefix_map;
Document *rdoc = new Inkscape::XML::SimpleDocument();
@@ -536,21 +536,17 @@ Document *sp_repr_do_read (xmlDocPtr doc, const gchar *default_ns)
}
}
- g_hash_table_destroy (prefix_map);
-
return rdoc;
}
-gint sp_repr_qualified_name (gchar *p, gint len, xmlNsPtr ns, const xmlChar *name, const gchar */*default_ns*/, GHashTable *prefix_map)
+gint sp_repr_qualified_name (gchar *p, gint len, xmlNsPtr ns, const xmlChar *name, const gchar */*default_ns*/, std::map<std::string, std::string> &prefix_map)
{
const xmlChar *prefix;
if (ns){
if (ns->href ) {
prefix = reinterpret_cast<const xmlChar*>( sp_xml_ns_uri_prefix(reinterpret_cast<const gchar*>(ns->href),
reinterpret_cast<const char*>(ns->prefix)) );
- void* p0 = reinterpret_cast<gpointer>(const_cast<xmlChar *>(prefix));
- void* p1 = reinterpret_cast<gpointer>(const_cast<xmlChar *>(ns->href));
- g_hash_table_insert( prefix_map, p0, p1 );
+ prefix_map[reinterpret_cast<const char*>(prefix)] = reinterpret_cast<const char*>(ns->href);
}
else {
prefix = NULL;
@@ -567,7 +563,7 @@ gint sp_repr_qualified_name (gchar *p, gint len, xmlNsPtr ns, const xmlChar *nam
}
}
-static Node *sp_repr_svg_read_node (Document *xml_doc, xmlNodePtr node, const gchar *default_ns, GHashTable *prefix_map)
+static Node *sp_repr_svg_read_node (Document *xml_doc, xmlNodePtr node, const gchar *default_ns, std::map<std::string, std::string> &prefix_map)
{
xmlAttrPtr prop;
xmlNodePtr child;