StarDictReader(parent) {
}
+
CompressedReader::CompressedReader(QString filename, QObject *parent) :
StarDictReader(parent) {
open(filename);
}
+
CompressedReader::~CompressedReader() {
if(_file != NULL)
gzclose(_file);
}
+
bool CompressedReader::open(QString file) {
_file = gzopen(file.toStdString().c_str(), "rb");
if(_file == NULL)
return true;
}
+
void CompressedReader::close() {
gzclose(_file);
_file = NULL;
QString cha;
gzread(_file, c, 1);
+ if(((unsigned char)c[0])>240)
+ gzread(_file, c+1, 3);
+ else if(((unsigned char)c[0])>224)
+ gzread(_file, c+1, 2);
+ else if(((unsigned char)c[0])>192)
+ gzread(_file, c+1, 1);
+ else if(((unsigned char)c[0])>127){
+ qDebug()<<"error - starDict - read wordList from UTF-8";
+ c[0]=0;
+ }
+
+
+ /* gzread(_file, c, 1);
if(((unsigned char)c[0])>127){
gzread(_file, c+1, 1);
if(((unsigned char)c[1])>127 && ((unsigned char)c[1])<192){
gzread(_file, c+3, 1);
}
}
+*/
cha=QString::fromUtf8(c);
return cha.at(0);
}
+
qint32 CompressedReader::readInt32BigEndian() {
qint32 value;
gzread(_file, (void*)(&value), 4);
return qFromBigEndian(value);
}
+
qint64 CompressedReader::readInt64BigEndian() {
qint64 value;
gzread(_file, (void*)(&value), 8);
return value;
}
+
QString CompressedReader::readKeyword() {
QString result;
QChar c;
return result;
}
+
QByteArray CompressedReader::readString(qint64 offset, qint32 len) {
char* buf;
buf = new char[len];