func init() if(Type == 2) lng.decl_var('len', 1, 0, 0) lng.decl_priv_var(ba, 'QByteArray') elseif(Type == 3) lng.decl_priv_var(ba, 'QByteArray') end end func doRead(_data) fvar(io) io = IODevice if(expof(io) != QIODevice) error('Invalid data type for point IODevice') else switch(Type) case 0: lng.decl_loc_var(i, 'int') println(io + '->read((char*)&' + i + ', sizeof(int));') event(onRead, i@int) case 1: lng.decl_loc_var(f, 'float') println(io + '->read((char*)&' + f + ', sizeof(float));') event(onRead, f@real) case 2: lng.decl_loc_var(tmp_ba, 'QByteArray') println('if(!' + len + ') {' + io + '->read((char *)&' + len + ', sizeof(int)); ' + ba + '.clear(); }') println(tmp_ba + ' = ' + io + '->read(' + len + ');') println(len + ' -= ' + tmp_ba + '.length();') println(ba + ' += ' + tmp_ba + ';') println('if(' + len + ' == 0) {') block.inclvl() event(onRead, ba@QByteArray) block.declvl() println('}') case 3: println(ba + ' = ' + io + '->readAll();') event(onRead, ba@QByteArray) end end end