summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc Jeanmougin <marc@jeanmougin.fr>2015-12-08 21:36:21 +0000
committerMarc Jeanmougin <marcjeanmougin@free.fr>2015-12-08 21:36:21 +0000
commit402e0259b8310d25a1f51cc6a4c69f496f73591e (patch)
tree9e0947e17ed84f037e20fe3ce733ee09d579e6b7 /src
parent0-sized arrays are supposed to be forbidden (diff)
downloadinkscape-402e0259b8310d25a1f51cc6a4c69f496f73591e.tar.gz
inkscape-402e0259b8310d25a1f51cc6a4c69f496f73591e.zip
cppification: GSList replaced by vectors (connectors)
(bzr r14504.1.13)
Diffstat (limited to 'src')
-rw-r--r--src/conn-avoid-ref.cpp26
-rw-r--r--src/conn-avoid-ref.h7
-rw-r--r--src/graphlayout.cpp9
-rw-r--r--src/widgets/connector-toolbar.cpp10
4 files changed, 22 insertions, 30 deletions
diff --git a/src/conn-avoid-ref.cpp b/src/conn-avoid-ref.cpp
index 4c9665fa0..d43d000a7 100644
--- a/src/conn-avoid-ref.cpp
+++ b/src/conn-avoid-ref.cpp
@@ -139,9 +139,9 @@ void SPAvoidRef::handleSettingChange(void)
}
-GSList *SPAvoidRef::getAttachedShapes(const unsigned int type)
+std::vector<SPItem *> SPAvoidRef::getAttachedShapes(const unsigned int type)
{
- GSList *list = NULL;
+ std::vector<SPItem *> list;
Avoid::IntList shapes;
GQuark shapeId = g_quark_from_string(item->getId());
@@ -157,15 +157,15 @@ GSList *SPAvoidRef::getAttachedShapes(const unsigned int type)
continue;
}
SPItem *shapeItem = SP_ITEM(obj);
- list = g_slist_prepend(list, shapeItem);
+ list.push_back(shapeItem);
}
return list;
}
-GSList *SPAvoidRef::getAttachedConnectors(const unsigned int type)
+std::vector<SPItem *> SPAvoidRef::getAttachedConnectors(const unsigned int type)
{
- GSList *list = NULL;
+ std::vector<SPItem *> list;
Avoid::IntList conns;
GQuark shapeId = g_quark_from_string(item->getId());
@@ -181,7 +181,7 @@ GSList *SPAvoidRef::getAttachedConnectors(const unsigned int type)
continue;
}
SPItem *connItem = SP_ITEM(obj);
- list = g_slist_prepend(list, connItem);
+ list.push_back(connItem);
}
return list;
}
@@ -331,7 +331,7 @@ static Avoid::Polygon avoid_item_poly(SPItem const *item)
}
-GSList *get_avoided_items(GSList *list, SPObject *from, SPDesktop *desktop,
+std::vector<SPItem *> get_avoided_items(std::vector<SPItem *> &list, SPObject *from, SPDesktop *desktop,
bool initialised)
{
for (SPObject *child = from->firstChild() ; child != NULL; child = child->next ) {
@@ -342,7 +342,7 @@ GSList *get_avoided_items(GSList *list, SPObject *from, SPDesktop *desktop,
(!initialised || SP_ITEM(child)->avoidRef->shapeRef)
)
{
- list = g_slist_prepend (list, SP_ITEM(child));
+ list.push_back(SP_ITEM(child));
}
if (SP_IS_ITEM(child) && desktop->isLayer(SP_ITEM(child))) {
@@ -376,17 +376,15 @@ void init_avoided_shape_geometry(SPDesktop *desktop)
DocumentUndo::setUndoSensitive(document, false);
bool initialised = false;
- GSList *items = get_avoided_items(NULL, desktop->currentRoot(), desktop,
+ std::vector<SPItem *> tmp;
+ std::vector<SPItem *> items = get_avoided_items(tmp, desktop->currentRoot(), desktop,
initialised);
- for ( GSList const *iter = items ; iter != NULL ; iter = iter->next ) {
- SPItem *item = reinterpret_cast<SPItem *>(iter->data);
+ for (std::vector<SPItem *>::const_iterator iter = items.begin(); iter != items.end(); ++iter) {
+ SPItem *item = *iter;
item->avoidRef->handleSettingChange();
}
- if (items) {
- g_slist_free(items);
- }
DocumentUndo::setUndoSensitive(document, saved);
}
diff --git a/src/conn-avoid-ref.h b/src/conn-avoid-ref.h
index e9e12118f..2c7da9aae 100644
--- a/src/conn-avoid-ref.h
+++ b/src/conn-avoid-ref.h
@@ -20,7 +20,6 @@
class SPDesktop;
class SPObject;
class SPItem;
-typedef struct _GSList GSList;
namespace Avoid { class ShapeRef; }
class SPAvoidRef {
@@ -41,8 +40,8 @@ public:
// Avoid::runningTo
// Avoid::runningFrom
// Avoid::runningToAndFrom
- GSList *getAttachedShapes(const unsigned int type);
- GSList *getAttachedConnectors(const unsigned int type);
+ std::vector<SPItem *> getAttachedShapes(const unsigned int type);
+ std::vector<SPItem *> getAttachedConnectors(const unsigned int type);
private:
SPItem *item;
@@ -55,7 +54,7 @@ private:
sigc::connection _transformed_connection;
};
-extern GSList *get_avoided_items(GSList *list, SPObject *from,
+extern std::vector<SPItem *> get_avoided_items(std::vector<SPItem *> &list, SPObject *from,
SPDesktop *desktop, bool initialised = true);
extern void avoid_item_move(Geom::Affine const *mp, SPItem *moved_item);
extern void init_avoided_shape_geometry(SPDesktop *desktop);
diff --git a/src/graphlayout.cpp b/src/graphlayout.cpp
index 9b67ba0b5..39ffb6cc7 100644
--- a/src/graphlayout.cpp
+++ b/src/graphlayout.cpp
@@ -106,7 +106,6 @@ void graphlayout(std::vector<SPItem*> const &items) {
return;
}
- using Inkscape::Util::GSListIterator;
list<SPItem *> selected;
filterConnectors(items,selected);
if (selected.empty()) return;
@@ -164,10 +163,11 @@ void graphlayout(std::vector<SPItem*> const &items) {
continue;
}
unsigned u=i_iter->second;
- GSList *nlist=iu->avoidRef->getAttachedConnectors(Avoid::runningFrom);
+ std::vector<SPItem *> nlist=iu->avoidRef->getAttachedConnectors(Avoid::runningFrom);
list<SPItem *> connectors;
- connectors.insert<GSListIterator<SPItem *> >(connectors.end(),nlist,NULL);
+ connectors.insert(connectors.end(), nlist.begin(), nlist.end());
+
for (list<SPItem *>::iterator j(connectors.begin());
j != connectors.end();
++j) {
@@ -203,9 +203,6 @@ void graphlayout(std::vector<SPItem*> const &items) {
}
}
}
- if(nlist) {
- g_slist_free(nlist);
- }
}
const unsigned E = es.size();
double eweights[E];
diff --git a/src/widgets/connector-toolbar.cpp b/src/widgets/connector-toolbar.cpp
index 8cc254bd2..733fb34e8 100644
--- a/src/widgets/connector-toolbar.cpp
+++ b/src/widgets/connector-toolbar.cpp
@@ -200,17 +200,15 @@ static void connector_spacing_changed(GtkAdjustment *adj, GObject* tbl)
desktop->namedview->updateRepr();
bool modmade = false;
- GSList *items = get_avoided_items(NULL, desktop->currentRoot(), desktop);
- for ( GSList const *iter = items ; iter != NULL ; iter = iter->next ) {
- SPItem *item = reinterpret_cast<SPItem *>(iter->data);
+ std::vector<SPItem *> items;
+ items = get_avoided_items(items, desktop->currentRoot(), desktop);
+ for (std::vector<SPItem *>::const_iterator iter = items.begin(); iter != items.end(); ++iter ) {
+ SPItem *item = *iter;
Geom::Affine m = Geom::identity();
avoid_item_move(&m, item);
modmade = true;
}
- if (items) {
- g_slist_free(items);
- }
if(modmade) {
DocumentUndo::done(doc, SP_VERB_CONTEXT_CONNECTOR,
_("Change connector spacing"));