File: input.hdr

package info (click to toggle)
icmake 13.05.01-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,132 kB
  • sloc: cpp: 11,595; fortran: 883; makefile: 853; sh: 546; pascal: 342
file content (44 lines) | stat: -rw-r--r-- 1,426 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
35
36
37
38
39
40
41
42
43
44
class Input
{
    std::deque<unsigned char> d_deque;  // pending input chars
    std::istream *d_in;                 // ptr for easy streamswitching
    size_t d_trueLineNr;                // true input file's line count
    size_t d_lineNr;                    // line count

    public:
        Input();
                                   // iStream: dynamically allocated
        Input(std::istream *iStream, size_t lineNr = 1);
        size_t get();                   // the next range
        void reRead(size_t ch);         // push back 'ch' (if < 0x100)
                                        // push back str from idx 'fmIdx'
        void reRead(std::string const &str, size_t fmIdx);
        size_t lineNr() const
        {
            return d_lineNr;
        }
        size_t trueLineNr() const
        {
            return d_trueLineNr;
        }
        void setLineNr(size_t lineNr)
        {
            d_lineNr = lineNr;
        }
        size_t nPending() const
        {
            return d_deque.size();
        }
        void setPending(size_t size)
        {
            d_deque.erase(d_deque.begin(), d_deque.end() - size);
        }
        void close()                    // force closing the stream
        {
            delete d_in;
            d_in = 0;                   // switchStreams also closes
        }

    private:
        size_t next();                  // obtain the next character
};