00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 template<class InputIterator>
00024 void
00025 write_long_list(ostream &out, int indent_level,
00026 InputIterator first, InputIterator last,
00027 string first_prefix, string later_prefix,
00028 int max_col) {
00029 if (later_prefix.empty()) {
00030 later_prefix = first_prefix;
00031 }
00032
00033 if (first != last) {
00034
00035
00036
00037 ostringstream item;
00038 item << *first;
00039 string str = item.str();
00040
00041 indent(out, indent_level) << first_prefix << str;
00042 int col = indent_level + first_prefix.length() + str.length();
00043
00044 ++first;
00045
00046 while (first != last) {
00047 ostringstream item;
00048 item << *first;
00049 string str = item.str();
00050
00051 col += 1 + str.length();
00052 if (col > max_col) {
00053 out << "\n";
00054 indent(out, indent_level) << later_prefix << str;
00055 col = indent_level + later_prefix.length() + str.length();
00056
00057 } else {
00058 out << " " << str;
00059 }
00060
00061 ++first;
00062 }
00063 out << "\n";
00064 }
00065 }