#include "UncompressedReader.h"
#include "QDebug"
+
UncompressedReader::UncompressedReader(QObject *parent) :
StarDictReader(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[4]={0};
QString cha;
_stream.readRawData(c,1);
- if(((unsigned char)c[0])>127){
+ 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);
_stream.readRawData(c+3,1);
}
}
-
+ */
cha=QString::fromUtf8(c);
+
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;
return value;
}
+
qint64 UncompressedReader::readInt64BigEndian() {
_stream.setByteOrder(QDataStream::BigEndian);
qint64 value;
_stream>>value;
_stream.setByteOrder(QDataStream::LittleEndian);
-
return value;
}