void traverseGraph(const vector<vector<char> > &graph, int i, int j, vector<vector<bool> > &traversed) { //cout<<"Traversing "<<i<<" "<<j<<endl; traversed[i][j] = true; if((getCharAt(graph,i-1,j) == 'O') && (!traversed[i-1][j])) { traverseGraph(graph, i-1, j, traversed); } if((getCharAt(graph,i+1,j) == 'O') && (!traversed[i+1][j])) { traverseGraph(graph, i+1, j, traversed); } if((getCharAt(graph,i,j-1) == 'O') && (!traversed[i][j-1])) { traverseGraph(graph, i, j-1, traversed); } if((getCharAt(graph,i,j+1) == 'O') && (!traversed[i][j+1])) { traverseGraph(graph, i, j+1, traversed); } }
void fixStyles(int32_t start, int32_t limit, int32_t newLen) { UChar newStyle = NO_STYLE; if (start != limit && styles.charAt(start) != NO_STYLE) { newStyle = styles.charAt(start); } else if (start > 0 && getCharAt(start-1) != NO_STYLE_MARK) { newStyle = styles.charAt(start-1); } else if (limit < styles.length()) { newStyle = styles.charAt(limit); } // dumb implementation for now. UnicodeString s; for (int i = 0; i < newLen; ++i) { // this doesn't really handle an embedded NO_STYLE_MARK // in the middle of a long run of characters right -- but // that case shouldn't happen anyway if (getCharAt(start+i) == NO_STYLE_MARK) { s.append(NO_STYLE); } else { s.append(newStyle); } } styles.replaceBetween(start, limit, s); }