void tictactoe::field::print(std::ostream &os, empty_tile_caption_callback on_empty) const { const std::string::size_type caption_length = num_digits(this->size()), player_state_padding_length = caption_length / 2; // truncation by int division is intentional const std::string player_state_padding = std::string(player_state_padding_length, ' '), X(player_state_padding + ((caption_length % 2) ? "X" : "><") + player_state_padding), O(player_state_padding + ((caption_length % 2) ? "O" : "()") + player_state_padding), row_separator("\n +" + repeat_string(std::string(2 + caption_length, '-') + "+", order()) + " \n"); const char * const field_separator(" | "); for(size_type index=0; index < size(); ++index) { if (0 == index % order()) { // first field in a new row os << row_separator << field_separator; } switch(tiles[index]) { case tile::empty: os << on_empty(caption_length, index); break; case tile::player1: os << X; break; case tile::player2: os << O; break; // no default case - issue warning if cases are not specifically handled } os << field_separator; } os << row_separator; }
string arrange_string(string str, int width) { int i, j, maxi, len; string stripped_colours; if (!width) return ""; len = strlen(stripped_colours = strip_colours(str)); if (len < width) return str + repeat_string(" ", width - len); if (len == width) return str; /* Full str indexed by i. Visible chars in stripped_colours indexed by j */ j = 0; maxi = strlen(str); for (i = 0 ; i < maxi ; i++) { if (str[i] == stripped_colours[j]) { j++; if(j >= width) break; } } return str[0..i]; }
string query_rank(object ob) { string rank=_query_rank(ob); string s1,s2,s3; int len, len1, len2; if(sscanf(rank,"%s【%s】%s",s1,s2,s3)!=3) return rank; len=14-sizeof(s2); if(len<1) return rank; len1=len/2; len2=len-len1; if(len1) s2=repeat_string(" ",len1)+s2; if(len2) s2+=repeat_string(" ",len2); return s1+"【"+s2+"】"+s3; }
Strdeq_t repeat_rclass(const RTree_t *nptr) { Strdeq_t opsd; /* output string deque */ Intdeq_t ideq = get_series(nptr); /* next rule string deque */ Strdeq_t nrsd = rule_interpreter(nptr->next); Intdeqitr_t i = ideq.begin(); print_deque(nrsd); for( ; i != ideq.end(); ++i) { Strdeqitr_t s = nrsd.begin(); for( ; s != nrsd.end(); ++s) opsd.push_back(repeat_string((*s).data(), *i)); } return opsd; }
void do_tests() { sprintf("%.9" + repeat_string("9", 8000) + "f", MAX_FLOAT); }
void unindent() { currentIndent--; repeat_string(" ", currentIndent * kSpacesPerIndent, &indentStr); }
SourceWriter() : currentIndent(0), startNewLine(true) { repeat_string(" ", currentIndent * kSpacesPerIndent, &indentStr); }