File: insertformatted.f

package info (click to toggle)
bobcat 6.11.00-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,292 kB
  • sloc: cpp: 21,370; fortran: 6,507; makefile: 2,787; sh: 724; perl: 401; ansic: 26
file content (34 lines) | stat: -rw-r--r-- 1,072 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
template <typename Type>
void CSVTabIns::insertFormatted(FMT const &fmt, Type const &value)
{
    if (d_idx == d_format.size())           // beyond the last column:
    {
        unsigned width = d_out->width();    // get the current width
                                            // insert 'value' as-is
        *d_out << std::setw(0) << d_sep << std::setw(width) << value;
        return;
    }

                    // before the last column

    unsigned fieldWidth = width(fmt);       // determine the field width

                                            // when centering: plain insertion
    if (fmt.align() == FMT::CENTER)         // because centered fills the full
        *d_out << centered(fmt, fieldWidth, value); // field width

    else
    {
        *d_out << (fmt.align() == FMT::RIGHT ? std::right : std::left);

        if (fmt.precision() < fieldWidth)
            d_out->precision(fmt.precision());

        *d_out <<  std::setw(fieldWidth) << value;
    }

    d_idx += fmt.nCols();

    if (d_idx != d_format.size())
        *d_out << d_sep;
}