fixed64 is mapped to 'int64_t', should it be 'uint64_t'?
GoogleCodeExporter opened this issue · 3 comments
GoogleCodeExporter commented
Given the input:
message Guid {
optional fixed64 lo = 1; // the first 8 bytes of the guid
optional fixed64 hi = 2; // the second 8 bytes of the guid
}
protoc for objective-c generates:
@interface Guid : PBGeneratedMessage {
@private
BOOL hasLo_:1;
BOOL hasHi_:1;
int64_t lo;
int64_t hi;
}
- (BOOL) hasLo;
- (BOOL) hasHi;
@property (readonly) int64_t lo;
@property (readonly) int64_t hi;
....
I'd have expected the uint64_t type to be used, as fixed64 appears to
unsigned, with sfixed64 being the signed variant?
Using build 2.2.0 of ProtocolBuffers on Mac OS X Snow Leopard.
Joseph Heenan
joseph@heenan.me.uk
Original issue reported on code.google.com by joseph.j...@gmail.com
on 12 May 2010 at 11:40
GoogleCodeExporter commented
Hey Jospeh. The Obj-C implementation follows the Java implementation (which
made it
both easy to port and easy to maintain). As java doesn't have unsigned types,
it
uses signed types in these cases. So we do the same in Obj-C.
There is a 1:1 mapping though of all uint_64s to int64s. So you can always
transliterate the values yourself.
Original comment by cyrus.na...@gmail.com
on 12 May 2010 at 7:15
GoogleCodeExporter commented
Hi Cyrus,
Ah, I see - thanks. At least I know I've understood correctly :)
Joseph
Original comment by joseph.j...@gmail.com
on 15 May 2010 at 8:24
GoogleCodeExporter commented
Original comment by cyrus.na...@gmail.com
on 2 Nov 2010 at 5:23
- Changed state: ByDesign