QString ConvertASCIIToEnc::getSequence(int &i) { QString seq = nextSequence(i); static QRegExp reBraces("\\{([a-zA-Z]?)\\}"); if(isModifier(seq)) { KILE_DEBUG_MAIN << "\tisModifier true : " << seq; if(seq[seq.length() - 1].isLetter()) { seq += ' '; } while(m_io->currentLine()[i].isSpace()) { ++i; } if(m_io->currentLine().mid(i, 2) == "{}") { i = i + 2; } if(m_io->currentLine()[i] == '\\') { seq += nextSequence(i); } else { if(reBraces.exactMatch(m_io->currentLine().mid(i, 3))) { KILE_DEBUG_MAIN << "\tbraces detected"; i = i + 3; seq += reBraces.cap(1); } else { QChar nextChar = m_io->currentLine()[i++]; if(!nextChar.isSpace()) { seq += (QString)nextChar; } } } } else if(m_map->canEncode(seq)) { if(m_io->currentLine().mid(i, 2) == "{}") { i = i + 2; } else if(m_io->currentLine()[i].isSpace()) { ++i; } } return seq; }
void Player::startPlaySequence(){ while(nowSequenceNumber<sequenceNumber-1){ nextSequence(); int key = waitKey(waitKeyNumber); if(key=='d') break; else if(key=='[') waitKeyNumber *= 2; else if(key==']') waitKeyNumber /= 2; } return; }
// @dist is indexed by Node::tag, returns -1 if no path found int Graph::findLightestPathWeight(Node *a, Node *b, const std::vector<int> &weight) { std::vector<int> path(weight.size(), std::numeric_limits<int>::max()); std::list<Node *> nodeList; const int seq = nextSequence(); path[a->tag] = 0; for (Node *c = a; c && c != b;) { const int p = path[c->tag] + weight[c->tag]; for (EdgeIterator ei = c->outgoing(); !ei.end(); ei.next()) { Node *t = ei.getNode(); if (t->getSequence() < seq) { if (path[t->tag] == std::numeric_limits<int>::max()) nodeList.push_front(t); if (p < path[t->tag]) path[t->tag] = p; } } c->visit(seq); Node *next = NULL; for (std::list<Node *>::iterator n = nodeList.begin(); n != nodeList.end(); ++n) { if (!next || path[(*n)->tag] < path[next->tag]) next = *n; if ((*n) == c) { // erase visited n = nodeList.erase(n); --n; } } c = next; } if (path[b->tag] == std::numeric_limits<int>::max()) return -1; return path[b->tag]; }