1 #ifndef GGL_CHEM_MC_MC_NODE_HH_
2 #define GGL_CHEM_MC_MC_NODE_HH_
37 using MC_NodeAdjacency::constrainedNodeID;
40 using MC_NodeAdjacency::op;
43 using MC_NodeAdjacency::count;
46 using MC_NodeAdjacency::nodeLabels;
49 using MC_NodeAdjacency::edgeLabels;
88 : sgm::
MC_NodeAdjacency( constrainedNodeID , op , count , nodeLabels , edgeLabels )
102 ,
const std::string & nodeLabel )
130 const size_t matchedTargetID )
const
149 #if HAVE_UNORDERED_MAP > 0
150 std::unordered_map<sgm::Graph_Interface::IndexType, char>
151 #elif HAVE_TR1_UNORDERED_MAP > 0
152 std::tr1::unordered_map<sgm::Graph_Interface::IndexType, char>
153 #elif HAVE_GNU_HASH_MAP > 0
154 __gnu_cxx::hash_map<sgm::Graph_Interface::IndexType, char>
156 std::map<sgm::Graph_Interface::IndexType, char>
163 curEdge != curEdgeEnd; ++curEdge )
166 if (observedNodes.find(curEdge->getToIndex()) == observedNodes.end()) {
168 observedNodes[curEdge->getToIndex()] =
'T';
179 const bool allNodes =
nodeLabels.empty() || nodeWildcard;
181 const bool allEdges =
edgeLabels.empty() || edgeWildcard;
184 if ( allNodes && allEdges )
189 curEdge != curEdgeEnd; ++curEdge )
198 curEdge != curEdgeEnd; ++curEdge )
212 case MC_L :
return ( hits <
count );
break;
213 case MC_G :
return ( hits >
count );
break;
216 default : assert(
false );
324 remap(
const sgm::Match & old2newIndexMapping,
const size_t unmatchedIndex = UINT_MAX )
328 if (old2newIndexMapping.at(this->constrainedNodeID)==unmatchedIndex) {
383 using MC_NodeLabel::constrainedNodeID;
387 using MC_NodeLabel::nodeLabels;
392 using MC_NodeLabel::compareType;
424 :
MC_NodeLabel( constrainedNodeID, nodeLabels, compareType )
461 const size_t matchedTargetID )
const
536 remap(
const sgm::Match & old2newIndexMapping,
const size_t unmatchedIndex = UINT_MAX )
540 if (old2newIndexMapping.at(this->constrainedNodeID)==unmatchedIndex) {
561 return MC_NodeLabel::operator==(toCompare);