summaryrefslogtreecommitdiffstats
path: root/src/libs/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/shared')
-rw-r--r--src/libs/shared/Builder.cpp8
-rw-r--r--src/libs/shared/ClashAvoider.cpp26
-rw-r--r--src/libs/shared/ClashAvoider.hpp4
3 files changed, 27 insertions, 11 deletions
diff --git a/src/libs/shared/Builder.cpp b/src/libs/shared/Builder.cpp
index 7065e0b4..1eb127a5 100644
--- a/src/libs/shared/Builder.cpp
+++ b/src/libs/shared/Builder.cpp
@@ -41,7 +41,7 @@ Builder::build(const Raul::Path& prefix, SharedPtr<const GraphObject> object)
SharedPtr<const Patch> patch = PtrCast<const Patch>(object);
if (patch) {
if (object->path() != "/") {
- const std::string path_str = prefix + object->path();
+ const std::string path_str = prefix.base() + object->path().substr(1);
//cout << "BUILDING PATCH " << path_str << endl;
_interface.new_patch(path_str, patch->internal_polyphony());
}
@@ -49,8 +49,10 @@ Builder::build(const Raul::Path& prefix, SharedPtr<const GraphObject> object)
build_object(prefix, object);
for (Patch::Connections::const_iterator i = patch->connections().begin();
i != patch->connections().end(); ++i) {
- _interface.connect(prefix.base() + (*i)->src_port_path().substr(1),
- prefix.base() + (*i)->dst_port_path().substr(1));
+ string base = prefix.base() + object->path().substr(1);
+ cout << "*********** BASE: " << base << endl;
+ _interface.connect(base + (*i)->src_port_path().substr(1),
+ base + (*i)->dst_port_path().substr(1));
}
return;
}
diff --git a/src/libs/shared/ClashAvoider.cpp b/src/libs/shared/ClashAvoider.cpp
index 75f46bf6..c3078468 100644
--- a/src/libs/shared/ClashAvoider.cpp
+++ b/src/libs/shared/ClashAvoider.cpp
@@ -25,9 +25,11 @@ namespace Ingen {
namespace Shared {
-const Raul::Path&
+const Raul::Path
ClashAvoider::map_path(const Raul::Path& in)
{
+ cout << "MAP PATH: " << in << endl;
+
unsigned offset = 0;
bool has_offset = false;
size_t pos = in.find_last_of("_");
@@ -56,10 +58,16 @@ ClashAvoider::map_path(const Raul::Path& in)
if (p != _symbol_map.end()) {
const Path mapped = p->second.base() + in.substr(parent.base().length());
InsertRecord i = _symbol_map.insert(make_pair(in, mapped));
- return i.first->second;
+ return _prefix.base() + i.first->second.substr(1);
}
+ parent = parent.parent();
} while (parent != "/");
+ cout << "????????????????????????????????? " << in << endl;
+
+ if (in.parent() != "/")
+ cout << "!!!!!!!!!!!!!!!!!!!!!! NOT ROOT PARENT " << endl;
+
// Append _2 _3 etc until an unused symbol is found
string base_name = in.name();
if (has_offset)
@@ -70,10 +78,12 @@ ClashAvoider::map_path(const Raul::Path& in)
if (o != _offsets.end()) {
offset = ++o->second;
} else {
- offset = _store.child_name_offset(
- _prefix.base() + in.parent().base().substr(1),
- base_name,
- false);
+ string parent_str = _prefix.base() + in.parent().base().substr(1);
+ parent_str = parent_str.substr(0, parent_str.find_last_of("/"));
+ if (parent_str == "")
+ parent_str = "/";
+ cout << "***** PARENT: " << parent_str << endl;
+ offset = _store.child_name_offset(parent_str, base_name, false);
_offsets.insert(make_pair(base_name, offset));
}
@@ -81,7 +91,9 @@ ClashAvoider::map_path(const Raul::Path& in)
std::stringstream ss;
ss << in.parent().base() << base_name << "_" << offset;
if (_store.find(ss.str()) == _store.end()) {
- InsertRecord i = _symbol_map.insert(make_pair(in, ss.str()));
+ string str = _prefix.base() + ss.str().substr(1);
+ InsertRecord i = _symbol_map.insert(make_pair(in, str));
+ cout << "HIT: offset = " << offset << ", str = " << str << endl;
return i.first->second;
} else {
cout << "MISSED OFFSET: " << in << " => " << ss.str() << endl;
diff --git a/src/libs/shared/ClashAvoider.hpp b/src/libs/shared/ClashAvoider.hpp
index f70e839a..3c8a1c9f 100644
--- a/src/libs/shared/ClashAvoider.hpp
+++ b/src/libs/shared/ClashAvoider.hpp
@@ -39,6 +39,8 @@ class ClashAvoider : public CommonInterface
public:
ClashAvoider(Store& store, const Raul::Path& prefix, CommonInterface& target)
: _prefix(prefix), _store(store), _target(target) {}
+
+ void set_target(CommonInterface& target) { _target = target; }
// Bundles
void bundle_begin() { _target.bundle_begin(); }
@@ -79,7 +81,7 @@ public:
const Raul::Atom& value);
private:
- const Raul::Path& map_path(const Raul::Path& in);
+ const Raul::Path map_path(const Raul::Path& in);
const Raul::Path& _prefix;
Store& _store;