@@ -172,10 +172,30 @@ [self readExactlyNBytes: 8 intoBuffer: (char*)&ret]; return of_bswap64_if_le(ret); } + +- (float)readBigEndianFloat +{ + float ret; + + [self readExactlyNBytes: 4 + intoBuffer: (char*)&ret]; + + return of_bswap_float_if_le(ret); +} + +- (double)readBigEndianDouble +{ + double ret; + + [self readExactlyNBytes: 8 + intoBuffer: (char*)&ret]; + + return of_bswap_double_if_le(ret); +} - (uint16_t)readLittleEndianInt16 { uint16_t ret; @@ -202,10 +222,30 @@ [self readExactlyNBytes: 8 intoBuffer: (char*)&ret]; return of_bswap64_if_be(ret); } + +- (float)readLittleEndianFloat +{ + float ret; + + [self readExactlyNBytes: 4 + intoBuffer: (char*)&ret]; + + return of_bswap_float_if_be(ret); +} + +- (double)readLittleEndianDouble +{ + double ret; + + [self readExactlyNBytes: 8 + intoBuffer: (char*)&ret]; + + return of_bswap_double_if_be(ret); +} - (OFDataArray*)readDataArrayWithNItems: (size_t)nItems { return [self readDataArrayWithItemSize: 1 andNItems: nItems]; @@ -628,10 +668,26 @@ int64 = of_bswap64_if_le(int64); [self writeNBytes: 8 fromBuffer: (char*)&int64]; } + +- (void)writeBigEndianFloat: (float)float_ +{ + float_ = of_bswap_float_if_le(float_); + + [self writeNBytes: 4 + fromBuffer: (char*)&float_]; +} + +- (void)writeBigEndianDouble: (double)double_ +{ + double_ = of_bswap_double_if_le(double_); + + [self writeNBytes: 8 + fromBuffer: (char*)&double_]; +} - (void)writeLittleEndianInt16: (uint16_t)int16 { int16 = of_bswap16_if_be(int16); @@ -652,10 +708,26 @@ int64 = of_bswap64_if_be(int64); [self writeNBytes: 8 fromBuffer: (char*)&int64]; } + +- (void)writeLittleEndianFloat: (float)float_ +{ + float_ = of_bswap_float_if_be(float_); + + [self writeNBytes: 4 + fromBuffer: (char*)&float_]; +} + +- (void)writeLittleEndianDouble: (double)double_ +{ + double_ = of_bswap_double_if_be(double_); + + [self writeNBytes: 8 + fromBuffer: (char*)&double_]; +} - (size_t)writeDataArray: (OFDataArray*)dataArray { return [self writeNBytes: [dataArray count] * [dataArray itemSize] fromBuffer: [dataArray cArray]];