Merge branch 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into master-integration
[qt-netbsd.git] / src / corelib / codecs / qtextcodec_p.h
blobe4662afd43e201f1c2690f8ac6a4abb6a003ebbf
1 /****************************************************************************
2 **
3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 **
7 ** This file is part of the QtCore module of the Qt Toolkit.
8 **
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** No Commercial Usage
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
14 ** this package.
16 ** GNU Lesser General Public License Usage
17 ** Alternatively, this file may be used under the terms of the GNU Lesser
18 ** General Public License version 2.1 as published by the Free Software
19 ** Foundation and appearing in the file LICENSE.LGPL included in the
20 ** packaging of this file. Please review the following information to
21 ** ensure the GNU Lesser General Public License version 2.1 requirements
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 ** In addition, as a special exception, Nokia gives you certain additional
25 ** rights. These rights are described in the Nokia Qt LGPL Exception
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
38 ** $QT_END_LICENSE$
40 ****************************************************************************/
42 #ifndef QTEXTCODEC_P_H
43 #define QTEXTCODEC_P_H
46 // W A R N I N G
47 // -------------
49 // This file is not part of the Qt API. It exists for the convenience
50 // of the QTextCodec class. This header file may change from
51 // version to version without notice, or even be removed.
53 // We mean it.
56 #include "qtextcodec.h"
57 #include <string.h>
59 QT_BEGIN_NAMESPACE
61 #ifndef QT_NO_TEXTCODEC
63 typedef void (*QTextCodecStateFreeFunction)(QTextCodec::ConverterState*);
65 struct QTextCodecUnalignedPointer
67 static inline QTextCodecStateFreeFunction decode(const uint *src)
69 quintptr data;
70 memcpy(&data, src, sizeof(data));
71 return reinterpret_cast<QTextCodecStateFreeFunction>(data);
73 static inline void encode(uint *dst, QTextCodecStateFreeFunction fn)
75 quintptr data = reinterpret_cast<quintptr>(fn);
76 memcpy(dst, &data, sizeof(data));
80 #else
82 class QTextCodec
84 public:
85 enum ConversionFlag {
86 DefaultConversion,
87 ConvertInvalidToNull = 0x80000000,
88 IgnoreHeader = 0x1,
89 FreeFunction = 0x2
91 Q_DECLARE_FLAGS(ConversionFlags, ConversionFlag)
93 struct ConverterState {
94 ConverterState(ConversionFlags f = DefaultConversion)
95 : flags(f), remainingChars(0), invalidChars(0), d(0) { state_data[0] = state_data[1] = state_data[2] = 0; }
96 ~ConverterState() { }
97 ConversionFlags flags;
98 int remainingChars;
99 int invalidChars;
100 uint state_data[3];
101 void *d;
102 private:
103 Q_DISABLE_COPY(ConverterState)
107 #endif //QT_NO_TEXTCODEC
109 QT_END_NAMESPACE
111 #endif