~ubuntu-dev/wxwidgets2.6/upstream-debian

« back to all changes in this revision

Viewing changes to include/wx/txtstrm.h

  • Committer: Daniel T Chen
  • Date: 2006-06-26 10:15:11 UTC
  • Revision ID: crimsun@ubuntu.com-20060626101511-a4436cec4c6d9b35
ImportĀ DebianĀ 2.6.3.2.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/////////////////////////////////////////////////////////////////////////////
 
2
// Name:        txtstrm.h
 
3
// Purpose:     Text stream classes
 
4
// Author:      Guilhem Lavaux
 
5
// Modified by:
 
6
// Created:     28/06/1998
 
7
// RCS-ID:      $Id: txtstrm.h,v 1.27 2004/11/21 18:26:36 RN Exp $
 
8
// Copyright:   (c) Guilhem Lavaux
 
9
// Licence:     wxWindows licence
 
10
/////////////////////////////////////////////////////////////////////////////
 
11
 
 
12
#ifndef _WX_TXTSTREAM_H_
 
13
#define _WX_TXTSTREAM_H_
 
14
 
 
15
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 
16
#pragma interface "txtstrm.h"
 
17
#endif
 
18
 
 
19
#include "wx/stream.h"
 
20
 
 
21
#if wxUSE_STREAMS
 
22
 
 
23
class WXDLLIMPEXP_BASE wxTextInputStream;
 
24
class WXDLLIMPEXP_BASE wxTextOutputStream;
 
25
 
 
26
typedef wxTextInputStream& (*__wxTextInputManip)(wxTextInputStream&);
 
27
typedef wxTextOutputStream& (*__wxTextOutputManip)(wxTextOutputStream&);
 
28
 
 
29
WXDLLIMPEXP_BASE wxTextOutputStream &endl( wxTextOutputStream &stream );
 
30
 
 
31
 
 
32
#define wxEOT wxT('\4') // the End-Of-Text control code (used only inside wxTextInputStream)
 
33
 
 
34
// If you're scanning through a file using wxTextInputStream, you should check for EOF _before_
 
35
// reading the next item (word / number), because otherwise the last item may get lost.
 
36
// You should however be prepared to receive an empty item (empty string / zero number) at the
 
37
// end of file, especially on Windows systems. This is unavoidable because most (but not all) files end
 
38
// with whitespace (i.e. usually a newline).
 
39
class WXDLLIMPEXP_BASE wxTextInputStream
 
40
{
 
41
public:
 
42
#if wxUSE_UNICODE
 
43
    wxTextInputStream(wxInputStream& s, const wxString &sep=wxT(" \t"), wxMBConv& conv = wxConvUTF8 );
 
44
#else
 
45
    wxTextInputStream(wxInputStream& s, const wxString &sep=wxT(" \t") );
 
46
#endif
 
47
    ~wxTextInputStream();
 
48
 
 
49
    wxUint32 Read32(int base = 10); // base may be between 2 and 36, inclusive, or the special 0 (= C format)
 
50
    wxUint16 Read16(int base = 10);
 
51
    wxUint8  Read8(int base = 10);
 
52
    wxInt32  Read32S(int base = 10);
 
53
    wxInt16  Read16S(int base = 10);
 
54
    wxInt8   Read8S(int base = 10);
 
55
    double   ReadDouble();
 
56
    wxString ReadString();  // deprecated: use ReadLine or ReadWord instead
 
57
    wxString ReadLine();
 
58
    wxString ReadWord();
 
59
    wxChar   GetChar() { wxChar c = NextChar(); return (wxChar)(c != wxEOT ? c : 0); }
 
60
 
 
61
    wxString GetStringSeparators() const { return m_separators; }
 
62
    void SetStringSeparators(const wxString &c) { m_separators = c; }
 
63
 
 
64
    // Operators
 
65
    wxTextInputStream& operator>>(wxString& word);
 
66
    wxTextInputStream& operator>>(char& c);
 
67
#if wxUSE_UNICODE && wxWCHAR_T_IS_REAL_TYPE
 
68
    wxTextInputStream& operator>>(wchar_t& wc);
 
69
#endif // wxUSE_UNICODE
 
70
    wxTextInputStream& operator>>(wxInt16& i);
 
71
    wxTextInputStream& operator>>(wxInt32& i);
 
72
    wxTextInputStream& operator>>(wxUint16& i);
 
73
    wxTextInputStream& operator>>(wxUint32& i);
 
74
    wxTextInputStream& operator>>(double& i);
 
75
    wxTextInputStream& operator>>(float& f);
 
76
 
 
77
    wxTextInputStream& operator>>( __wxTextInputManip func) { return func(*this); }
 
78
 
 
79
protected:
 
80
    wxInputStream &m_input;
 
81
    wxString m_separators;
 
82
    char m_lastBytes[10]; // stores the bytes that were read for the last character
 
83
 
 
84
#if wxUSE_UNICODE
 
85
    wxMBConv &m_conv;
 
86
#endif
 
87
 
 
88
    bool   EatEOL(const wxChar &c);
 
89
    void   UngetLast(); // should be used instead of wxInputStream::Ungetch() because of Unicode issues
 
90
    // returns EOT (\4) if there is a stream error, or end of file
 
91
    wxChar NextChar();   // this should be used instead of GetC() because of Unicode issues
 
92
    wxChar NextNonSeparators();
 
93
 
 
94
    DECLARE_NO_COPY_CLASS(wxTextInputStream)
 
95
};
 
96
 
 
97
typedef enum
 
98
{
 
99
  wxEOL_NATIVE,
 
100
  wxEOL_UNIX,
 
101
  wxEOL_MAC,
 
102
  wxEOL_DOS
 
103
} wxEOL;
 
104
 
 
105
class WXDLLIMPEXP_BASE wxTextOutputStream
 
106
{
 
107
public:
 
108
#if wxUSE_UNICODE
 
109
    wxTextOutputStream( wxOutputStream& s, wxEOL mode = wxEOL_NATIVE, wxMBConv& conv = wxConvUTF8  );
 
110
#else
 
111
    wxTextOutputStream( wxOutputStream& s, wxEOL mode = wxEOL_NATIVE );
 
112
#endif
 
113
    virtual ~wxTextOutputStream();
 
114
 
 
115
    void SetMode( wxEOL mode = wxEOL_NATIVE );
 
116
    wxEOL GetMode() { return m_mode; }
 
117
 
 
118
    void Write32(wxUint32 i);
 
119
    void Write16(wxUint16 i);
 
120
    void Write8(wxUint8 i);
 
121
    virtual void WriteDouble(double d);
 
122
    virtual void WriteString(const wxString& string);
 
123
 
 
124
    wxTextOutputStream& PutChar(wxChar c);
 
125
 
 
126
    wxTextOutputStream& operator<<(const wxChar *string);
 
127
    wxTextOutputStream& operator<<(const wxString& string);
 
128
    wxTextOutputStream& operator<<(char c);
 
129
#if wxUSE_UNICODE && wxWCHAR_T_IS_REAL_TYPE
 
130
    wxTextOutputStream& operator<<(wchar_t wc);
 
131
#endif // wxUSE_UNICODE
 
132
    wxTextOutputStream& operator<<(wxInt16 c);
 
133
    wxTextOutputStream& operator<<(wxInt32 c);
 
134
    wxTextOutputStream& operator<<(wxUint16 c);
 
135
    wxTextOutputStream& operator<<(wxUint32 c);
 
136
    wxTextOutputStream& operator<<(double f);
 
137
    wxTextOutputStream& operator<<(float f);
 
138
 
 
139
    wxTextOutputStream& operator<<( __wxTextOutputManip func) { return func(*this); }
 
140
 
 
141
protected:
 
142
    wxOutputStream &m_output;
 
143
    wxEOL           m_mode;
 
144
 
 
145
#if wxUSE_UNICODE
 
146
    wxMBConv &m_conv;
 
147
#endif
 
148
 
 
149
    DECLARE_NO_COPY_CLASS(wxTextOutputStream)
 
150
};
 
151
 
 
152
#endif
 
153
  // wxUSE_STREAMS
 
154
 
 
155
#endif
 
156
    // _WX_DATSTREAM_H_