Root/
Source at commit 1322 created 12 years 7 months ago. By meklort, Add doxygen to utils folder | |
---|---|
1 | /****************************************************************************␊ |
2 | ** ␊ |
3 | **␊ |
4 | ** Definition of QIODevice class␊ |
5 | **␊ |
6 | ** Created : 940913␊ |
7 | **␊ |
8 | ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.␊ |
9 | **␊ |
10 | ** This file is part of the tools module of the Qt GUI Toolkit.␊ |
11 | **␊ |
12 | ** This file may be distributed under the terms of the Q Public License␊ |
13 | ** as defined by Trolltech AS of Norway and appearing in the file␊ |
14 | ** LICENSE.QPL included in the packaging of this file.␊ |
15 | **␊ |
16 | ** This file may be distributed and/or modified under the terms of the␊ |
17 | ** GNU General Public License version 2 as published by the Free Software␊ |
18 | ** Foundation and appearing in the file LICENSE.GPL included in the␊ |
19 | ** packaging of this file.␊ |
20 | **␊ |
21 | ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition␊ |
22 | ** licenses may use this file in accordance with the Qt Commercial License␊ |
23 | ** Agreement provided with the Software.␊ |
24 | **␊ |
25 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE␊ |
26 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.␊ |
27 | **␊ |
28 | ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for␊ |
29 | ** information about Qt Commercial License Agreements.␊ |
30 | ** See http://www.trolltech.com/qpl/ for QPL licensing information.␊ |
31 | ** See http://www.trolltech.com/gpl/ for GPL licensing information.␊ |
32 | **␊ |
33 | ** Contact info@trolltech.com if any conditions of this licensing are␊ |
34 | ** not clear to you.␊ |
35 | **␊ |
36 | **********************************************************************/␊ |
37 | ␊ |
38 | #ifndef QIODEVICE_H␊ |
39 | #define QIODEVICE_H␊ |
40 | ␊ |
41 | #ifndef QT_H␊ |
42 | #include "qglobal.h"␊ |
43 | #include "qcstring.h"␊ |
44 | #endif // QT_H␊ |
45 | ␊ |
46 | ␊ |
47 | // IO device access types␊ |
48 | ␊ |
49 | #define IO_Direct␉␉0x0100␉␉// direct access device␊ |
50 | #define IO_Sequential␉␉0x0200␉␉// sequential access device␊ |
51 | #define IO_Combined␉␉0x0300␉␉// combined direct/sequential␊ |
52 | #define IO_TypeMask␉␉0x0f00␊ |
53 | ␊ |
54 | // IO handling modes␊ |
55 | ␊ |
56 | #define IO_Raw␉␉␉0x0040␉␉// raw access (not buffered)␊ |
57 | #define IO_Async␉␉0x0080␉␉// asynchronous mode␊ |
58 | ␊ |
59 | // IO device open modes␊ |
60 | ␊ |
61 | #define IO_ReadOnly␉␉0x0001␉␉// readable device␊ |
62 | #define IO_WriteOnly␉␉0x0002␉␉// writable device␊ |
63 | #define IO_ReadWrite␉␉0x0003␉␉// read+write device␊ |
64 | #define IO_Append␉␉0x0004␉␉// append␊ |
65 | #define IO_Truncate␉␉0x0008␉␉// truncate device␊ |
66 | #define IO_Translate␉␉0x0010␉␉// translate CR+LF␊ |
67 | #define IO_ModeMask␉␉0x00ff␊ |
68 | ␊ |
69 | // IO device state␊ |
70 | ␊ |
71 | #define IO_Open␉␉␉0x1000␉␉// device is open␊ |
72 | #define IO_StateMask␉␉0xf000␊ |
73 | ␊ |
74 | ␊ |
75 | // IO device status␊ |
76 | ␊ |
77 | #define IO_Ok␉␉␉0␊ |
78 | #define IO_ReadError␉␉1␉␉// read error␊ |
79 | #define IO_WriteError␉␉2␉␉// write error␊ |
80 | #define IO_FatalError␉␉3␉␉// fatal unrecoverable error␊ |
81 | #define IO_ResourceError␉4␉␉// resource limitation␊ |
82 | #define IO_OpenError␉␉5␉␉// cannot open device␊ |
83 | #define IO_ConnectError␉␉5␉␉// cannot connect to device␊ |
84 | #define IO_AbortError␉␉6␉␉// abort error␊ |
85 | #define IO_TimeOutError␉␉7␉␉// time out␊ |
86 | #define IO_UnspecifiedError␉␉8␉␉// unspecified error␊ |
87 | ␊ |
88 | class Q_EXPORT QIODevice␉␉␉␉␉// IO device class␊ |
89 | {␊ |
90 | public:␊ |
91 | QIODevice();␊ |
92 | virtual ~QIODevice();␊ |
93 | ␊ |
94 | int␉␉ flags() const { return ioMode; }␊ |
95 | int␉␉ mode()␉ const { return ioMode & IO_ModeMask; }␊ |
96 | int␉␉ state() const { return ioMode & IO_StateMask; }␊ |
97 | ␊ |
98 | bool␉ isDirectAccess() const { return ((ioMode & IO_Direct) == IO_Direct); }␊ |
99 | bool␉ isSequentialAccess() const { return ((ioMode & IO_Sequential) == IO_Sequential); }␊ |
100 | bool␉ isCombinedAccess() const { return ((ioMode & IO_Combined) == IO_Combined); }␊ |
101 | bool␉ isBuffered()␉ const { return ((ioMode & IO_Raw) != IO_Raw); }␊ |
102 | bool␉ isRaw()␉ const { return ((ioMode & IO_Raw) == IO_Raw); }␊ |
103 | bool␉ isSynchronous() const { return ((ioMode & IO_Async) != IO_Async); }␊ |
104 | bool␉ isAsynchronous() const { return ((ioMode & IO_Async) == IO_Async); }␊ |
105 | bool␉ isTranslated()␉ const { return ((ioMode & IO_Translate) == IO_Translate); }␊ |
106 | bool␉ isReadable()␉ const { return ((ioMode & IO_ReadOnly) == IO_ReadOnly); }␊ |
107 | bool␉ isWritable()␉ const { return ((ioMode & IO_WriteOnly) == IO_WriteOnly); }␊ |
108 | bool␉ isReadWrite()␉ const { return ((ioMode & IO_ReadWrite) == IO_ReadWrite); }␊ |
109 | bool␉ isInactive()␉ const { return state() == 0; }␊ |
110 | bool␉ isOpen()␉ const { return state() == IO_Open; }␊ |
111 | ␊ |
112 | int␉␉ status() const { return ioSt; }␊ |
113 | void␉ resetStatus()␉{ ioSt = IO_Ok; }␊ |
114 | ␊ |
115 | virtual bool open( int mode ) = 0;␊ |
116 | virtual void close() = 0;␊ |
117 | virtual void flush() = 0;␊ |
118 | ␊ |
119 | virtual uint size()␉ const = 0;␊ |
120 | virtual int␉ at()␉ const;␊ |
121 | virtual bool at( int );␊ |
122 | virtual bool atEnd() const;␊ |
123 | bool␉ reset() { return at(0); }␊ |
124 | ␊ |
125 | virtual int␉ readBlock( char *data, uint maxlen ) = 0;␊ |
126 | virtual int␉ writeBlock( const char *data, uint len ) = 0;␊ |
127 | virtual int␉ readLine( char *data, uint maxlen );␊ |
128 | int writeBlock( const QByteArray& data );␊ |
129 | QByteArray readAll();␊ |
130 | ␊ |
131 | virtual int␉ getch() = 0;␊ |
132 | virtual int␉ putch( int ) = 0;␊ |
133 | virtual int␉ ungetch( int ) = 0;␊ |
134 | ␊ |
135 | protected:␊ |
136 | void␉ setFlags( int f ) { ioMode = f; }␊ |
137 | void␉ setType( int );␊ |
138 | void␉ setMode( int );␊ |
139 | void␉ setState( int );␊ |
140 | void␉ setStatus( int );␊ |
141 | int␉␉ ioIndex;␊ |
142 | ␊ |
143 | private:␊ |
144 | int␉␉ ioMode;␊ |
145 | int␉␉ ioSt;␊ |
146 | ␊ |
147 | private:␉// Disabled copy constructor and operator=␊ |
148 | #if defined(Q_DISABLE_COPY)␊ |
149 | QIODevice( const QIODevice & );␊ |
150 | QIODevice &operator=( const QIODevice & );␊ |
151 | #endif␊ |
152 | };␊ |
153 | ␊ |
154 | ␊ |
155 | #endif // QIODEVICE_H␊ |
156 |