]> git.lyx.org Git - lyx.git/blob - src/TexStream.cpp
Fixed some lines that were too long. It compiled afterwards.
[lyx.git] / src / TexStream.cpp
1 #include "TexStream.h"
2 #include "TexRow.h"
3
4 #include <iostream>
5 #include <streambuf>
6
7 namespace lyx {
8
9 ////////////////////////////////////////////////////////////////
10 //
11 // TexStreamBuffer
12 //
13 ////////////////////////////////////////////////////////////////
14
15
16 class TexStreamBuffer : public TexStreamBase
17 {
18 public:
19   TexStreamBuffer(TexStreamBase * sbuf, TexRow * texrow);
20         int line() const { return line_; }
21         int column() const { return column_; }
22
23 protected:
24   int overflow(int);
25   int sync();
26
27 private:
28   TexStreamBase * sbuf_; 
29         TexRow * texrow_;
30         int column_;
31         int line_;
32 };
33
34
35 TexStreamBuffer::TexStreamBuffer(TexStreamBase *sb, TexRow * texrow)
36   : sbuf_(sb), texrow_(texrow), line_(0)
37 {
38   setp(0, 0);
39   setg(0, 0, 0);
40 }
41
42 int TexStreamBuffer::overflow(int c)
43 {
44         if (c == '\n') {
45                 ++line_;
46                 column_ = 0;
47         } else {
48                 ++column_;
49         }
50         return c;
51 }
52
53
54 int TexStreamBuffer::sync()
55 {
56   sbuf_->pubsync();
57   return 0;
58 }
59
60   
61 ////////////////////////////////////////////////////////////////
62 //
63 // TexStream
64 //
65 ////////////////////////////////////////////////////////////////
66
67 TexStream::TexStream(TexStreamBase * sbuf, TexRow * texrow)
68                 : std::basic_ostream<char_type>(sbuf_ = new TexStreamBuffer(sbuf, texrow))
69 {}
70
71
72 TexStream::~TexStream()
73 {
74         delete sbuf_;
75 }
76
77
78 int TexStream::line() const
79 {
80         return sbuf_->line();
81 }
82
83
84 ////////////////////////////////////////////////////////////////
85 //
86 // Test
87 //
88 ////////////////////////////////////////////////////////////////
89
90 #if 0
91
92 int main(int argc, char *argv[])
93 {
94         TexStream out(std::cout.rdbuf());
95         char c;
96         while (std::cin) {
97                 if (std::cin.get(c))
98                         out.put(c);
99         }
100         std::cout << "line count: " << out.line() << std::endl;
101
102   return 0;
103 }
104
105 #endif
106
107 }