#include "UncompressedReader.h"
+#include "QDebug"
UncompressedReader::UncompressedReader(QObject *parent) :
}
+
UncompressedReader::UncompressedReader(QString filename, QObject *parent) :
StarDictReader(parent) {
open(filename);
}
+
UncompressedReader::~UncompressedReader() {
if(_file.isOpen())
_file.close();
}
+
bool UncompressedReader::open(QString file) {
_file.setFileName(file);
_stream.setDevice(&_file);
return _file.open(QFile::ReadOnly);
}
+
void UncompressedReader::close() {
_file.close();
}
+
QChar UncompressedReader::readChar() {
- char c[1];
+ char c[4]={0};
+ QString cha;
+
+ _stream.readRawData(c,1);
+ if(((unsigned char)c[0])>240)
+ _stream.readRawData(c+1,3);
+ else if(((unsigned char)c[0])>224)
+ _stream.readRawData(c+1,2);
+ else if(((unsigned char)c[0])>192)
+ _stream.readRawData(c+1,1);
+ else if(((unsigned char)c[0])>127)
+ qDebug()<<"error - starDict - read wordList from UTF-8";
+
+
+ /* if(((unsigned char)c[0])>127){
+ _stream.readRawData(c+1,1);
+ if(((unsigned char)c[1])>127 && ((unsigned char)c[1])<192){
+ _stream.readRawData(c+2,1);
+ if(((unsigned char)c[2])>127 && ((unsigned char)c[2])<192)
+ _stream.readRawData(c+3,1);
+ }
+ }
+ */
+ cha=QString::fromUtf8(c);
- _stream.readRawData(c, 1);
- return QChar(c[0]);
+ return cha.at(0);
}
+
QString UncompressedReader::readKeyword() {
QString result;
QChar c;
result += c;
c = readChar();
}
-
return result;
}
return result;
}
+
qint32 UncompressedReader::readInt32BigEndian() {
_stream.setByteOrder(QDataStream::BigEndian);
qint32 value;
_stream>>value;
_stream.setByteOrder(QDataStream::LittleEndian);
-
return value;
}
+
qint64 UncompressedReader::readInt64BigEndian() {
_stream.setByteOrder(QDataStream::BigEndian);
qint64 value;
_stream>>value;
_stream.setByteOrder(QDataStream::LittleEndian);
-
return value;
}