partially fix big-endian build
samples are the next thing to tackle
This commit is contained in:
parent
7c42453422
commit
142c21e20b
4 changed files with 160 additions and 11 deletions
|
|
@ -77,6 +77,85 @@ signed char SafeReader::readC() {
|
|||
return (signed char)buf[curSeek++];
|
||||
}
|
||||
|
||||
#ifdef TA_BIG_ENDIAN
|
||||
short SafeReader::readS_BE() {
|
||||
#ifdef READ_DEBUG
|
||||
logD("SR: reading short %x:",curSeek);
|
||||
#endif
|
||||
if (curSeek+2>len) throw EndOfFileException(this,len);
|
||||
short ret;
|
||||
memcpy(&ret,&buf[curSeek],2);
|
||||
#ifdef READ_DEBUG
|
||||
logD("SR: %.4x",ret);
|
||||
#endif
|
||||
curSeek+=2;
|
||||
return ret;
|
||||
}
|
||||
|
||||
short SafeReader::readS() {
|
||||
if (curSeek+2>len) throw EndOfFileException(this,len);
|
||||
short ret;
|
||||
memcpy(&ret,&buf[curSeek],2);
|
||||
curSeek+=2;
|
||||
return ((ret>>8)&0xff)|(ret<<8);
|
||||
}
|
||||
|
||||
int SafeReader::readI_BE() {
|
||||
#ifdef READ_DEBUG
|
||||
logD("SR: reading int %x:",curSeek);
|
||||
#endif
|
||||
if (curSeek+4>len) throw EndOfFileException(this,len);
|
||||
int ret;
|
||||
memcpy(&ret,&buf[curSeek],4);
|
||||
curSeek+=4;
|
||||
#ifdef READ_DEBUG
|
||||
logD("SR: %.8x",ret);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
int SafeReader::readI() {
|
||||
if (curSeek+4>len) throw EndOfFileException(this,len);
|
||||
unsigned int ret;
|
||||
memcpy(&ret,&buf[curSeek],4);
|
||||
curSeek+=4;
|
||||
return (int)((ret>>24)|((ret&0xff0000)>>8)|((ret&0xff00)<<8)|((ret&0xff)<<24));
|
||||
}
|
||||
|
||||
int64_t SafeReader::readL() {
|
||||
if (curSeek+8>len) throw EndOfFileException(this,len);
|
||||
unsigned char ret[8];
|
||||
memcpy(ret,&buf[curSeek],8);
|
||||
curSeek+=8;
|
||||
return (int64_t)(ret[0]|(ret[1]<<8)|(ret[2]<<16)|(ret[3]<<24)|(ret[4]<<32)|(ret[5]<<40)|(ret[6]<<48)|(ret[7]<<56));
|
||||
}
|
||||
|
||||
float SafeReader::readF() {
|
||||
if (curSeek+4>len) throw EndOfFileException(this,len);
|
||||
unsigned int ret;
|
||||
memcpy(&ret,&buf[curSeek],4);
|
||||
curSeek+=4;
|
||||
ret=((ret>>24)|((ret&0xff0000)>>8)|((ret&0xff00)<<8)|((ret&0xff)<<24));
|
||||
return *((float*)(&ret));
|
||||
}
|
||||
|
||||
double SafeReader::readD() {
|
||||
if (curSeek+8>len) throw EndOfFileException(this,len);
|
||||
unsigned char ret[8];
|
||||
unsigned char retB[8];
|
||||
memcpy(ret,&buf[curSeek],8);
|
||||
curSeek+=8;
|
||||
retB[0]=ret[7];
|
||||
retB[1]=ret[6];
|
||||
retB[2]=ret[5];
|
||||
retB[3]=ret[4];
|
||||
retB[4]=ret[3];
|
||||
retB[5]=ret[2];
|
||||
retB[6]=ret[1];
|
||||
retB[7]=ret[0];
|
||||
return *((double*)retB);
|
||||
}
|
||||
#else
|
||||
short SafeReader::readS() {
|
||||
#ifdef READ_DEBUG
|
||||
logD("SR: reading short %x:",curSeek);
|
||||
|
|
@ -144,6 +223,7 @@ double SafeReader::readD() {
|
|||
curSeek+=8;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
String SafeReader::readString(size_t stlen) {
|
||||
String ret;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue