Next version of JABA
[jabaws.git] / binaries / src / muscle / textfile.h
1 #ifndef TextFile_h\r
2 #define TextFile_h\r
3 \r
4 #include <stdio.h>\r
5 \r
6 struct TEXTFILEPOS\r
7         {\r
8         unsigned uOffset;\r
9         unsigned uLineNr;\r
10         unsigned uColNr;\r
11         };\r
12 \r
13 const unsigned TextFileBufferSize = 256;\r
14 \r
15 class TextFile\r
16         {\r
17 private:\r
18 // no default c'tor, not implemented\r
19         TextFile();\r
20 \r
21 public:\r
22         virtual ~TextFile();\r
23 \r
24         TextFile(const char szFileName[], bool bWrite = false);\r
25         TextFile(FILE *ptrFile, const char *ptrFileName = "-");\r
26         void Close() { fclose(m_ptrFile); m_ptrFile = 0; }\r
27 \r
28         bool GetLine(char szLine[], unsigned uBytes);\r
29         bool GetTrimLine(char szLine[], unsigned uBytes);\r
30         void GetLineX(char szLine[], unsigned uBytes);\r
31 \r
32         bool GetToken(char szToken[], unsigned uBytes, const char szCharTokens[] = "{}");\r
33         void GetTokenX(char szToken[], unsigned uBytes, const char szCharTokens[] = "{}");\r
34 \r
35         void Skip();\r
36         void SkipLine();\r
37         void SkipWhite();\r
38         bool SkipWhiteX();\r
39         void Rewind();\r
40         TEXTFILEPOS GetPos();\r
41         void SetPos(TEXTFILEPOS Pos);\r
42         bool GetChar(char &c);\r
43         void GetCharX(char &c);\r
44         void GetNonblankChar(char &c);\r
45 \r
46         unsigned GetLineNr() { return m_uLineNr; }\r
47 \r
48         void PutString(const char szLine[]);\r
49         void PutFormat(const char szFormat[], ...);\r
50         void PutChar(char c);\r
51 \r
52         const char *GetFileName() { return m_ptrName; }\r
53 \r
54         void PushBack(int c) { m_cPushedBack = c; }\r
55 \r
56         FILE *GetStdioFile() const { return m_ptrFile; }\r
57 \r
58 private:\r
59         void Init(FILE *ptrFile, const char *ptrFileName);\r
60 \r
61 private:\r
62         FILE *m_ptrFile;\r
63         unsigned m_uLineNr;\r
64         unsigned m_uColNr;\r
65         char *m_ptrName;\r
66         bool m_bLastCharWasEOL;\r
67         int m_cPushedBack;\r
68         };\r
69 \r
70 #endif // TextFile_h\r