std::ostream &GraphvizDotGen::ONCHAR( Key lowKey, Key highKey ) { GenCondSpace *condSpace; if ( lowKey > keyOps->maxKey && (condSpace=findCondSpace(lowKey, highKey) ) ) { Key values = ( lowKey - condSpace->baseKey ) / keyOps->alphSize(); lowKey = keyOps->minKey + (lowKey - condSpace->baseKey - keyOps->alphSize() * values.getVal()); highKey = keyOps->minKey + (highKey - condSpace->baseKey - keyOps->alphSize() * values.getVal()); KEY( lowKey ); if ( lowKey != highKey ) { out << ".."; KEY( highKey ); } out << "("; for ( GenCondSet::Iter csi = condSpace->condSet; csi.lte(); csi++ ) { bool set = values & (1 << csi.pos()); if ( !set ) out << "!"; out << (*csi)->nameOrLoc(); if ( !csi.last() ) out << ", "; } out << ")"; } else { /* Output the key. Possibly a range. */ KEY( lowKey ); if ( highKey != lowKey ) { out << ".."; KEY( highKey ); } } return out; }