Hey Peter
Here is what I mean - the patch ( and all the tests pass ;-)
0. BDecoder::readInt() just verifies the markers ‘i’ etc.
1. readInt() is pushed to BinaryReader ( it is a reader so should read integers too ;-)
2. BinaryReader::readInt() pushes sets up a few things and pushes the ball to QByteArray::toInt…. So we don’t have to worry about the parsing, conversion errors etc…
3. We need BDecoder::readInt() as the marker processing is a decorator - on top of BinaryReader ;-)
4. We don’t worry about the method calls etc. at this stage… clarity first - also decomposing a program into smaller methods/functions could make it faster — this is really something we should not worry about - and maybe after the profiler tells us ;-)
5. We have a bigger chance of being correct ( as the chunk is done by Qt lib which is well tested and debugged )
let me know ( and yes the ‘e’ marker handling is in BinaryReader::readInt but I will remove it … )
— cheerio atul
— cheerio atul
Peter Dimov wrote:
I’m a bit confused, Atul! Are you talking about BDecoder or BinaryReader? Could you elaborate your point a bit please?
Regards,
Peter
Peter Dimov wrote:Hi Atul, the thing is that with integers we might need to swap bytes whereas readBytes() and readCString() should never swap bytes. Or maybe I got you wrong?
Peter
atul wrote:Dear all
Why not use
int QByteArray::toInt() and leave all the processing to it? ;-)
I mean we could write a BinaryReader::toInt() wrapper and that could just call the QByteArray version….
So there would be a lot of less code to maintain ( and more reuse etc… )
Could the same ideas be used for BDecoder::readString?
I think I will write another SourceComment for that ;-)
—- cheerio atul
