diff options
author | Clifford Wolf <clifford@clifford.at> | 2013-03-03 21:19:55 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2013-03-03 21:19:55 +0100 |
commit | bc8d94b4aeb43fd7cc6b77725bb379650a0575a3 (patch) | |
tree | ec34178961e33e8b4729eec62de0e9b5141ab212 /libs/subcircuit/subcircuit.cc | |
parent | 3ebc365c096ee062516bdbfd903fea14e4aa6185 (diff) |
Added "shared nodes" feature to the subcircuit library
Diffstat (limited to 'libs/subcircuit/subcircuit.cc')
-rw-r--r-- | libs/subcircuit/subcircuit.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libs/subcircuit/subcircuit.cc b/libs/subcircuit/subcircuit.cc index 73152c3b..f05aeaa2 100644 --- a/libs/subcircuit/subcircuit.cc +++ b/libs/subcircuit/subcircuit.cc @@ -100,7 +100,7 @@ bool SubCircuit::Graph::BitRef::operator < (const BitRef &other) const return bitIdx < other.bitIdx; } -void SubCircuit::Graph::createNode(std::string nodeId, std::string typeId, void *userData) +void SubCircuit::Graph::createNode(std::string nodeId, std::string typeId, void *userData, bool shared) { assert(nodeMap.count(nodeId) == 0); nodeMap[nodeId] = nodes.size(); @@ -110,6 +110,7 @@ void SubCircuit::Graph::createNode(std::string nodeId, std::string typeId, void newNode.nodeId = nodeId; newNode.typeId = typeId; newNode.userData = userData; + newNode.shared = shared; } void SubCircuit::Graph::createPort(std::string nodeId, std::string portId, int width, int minWidth) @@ -1074,7 +1075,8 @@ class SubCircuit::SolverWorker } for (int j = 0; j < int(enumerationMatrix.size()); j++) - haystack.usedNodes[*enumerationMatrix[j].begin()] = true; + if (!haystack.graph.nodes[*enumerationMatrix[j].begin()].shared) + haystack.usedNodes[*enumerationMatrix[j].begin()] = true; if (verbose) { my_printf("\nSolution:\n"); |