xC-gen-proto: reduce enums to single bytes
That's already way more than we can possibly use.
This commit is contained in:
@@ -161,7 +161,7 @@ function codegen_begin() {
|
||||
print "\tvar n int64"
|
||||
print "\tif err := json.Unmarshal(data, &n); err != nil {"
|
||||
print "\t\treturn 0, err"
|
||||
print "\t} else if n > math.MaxInt32 || n < math.MinInt32 {"
|
||||
print "\t} else if n > math.MaxInt8 || n < math.MinInt8 {"
|
||||
print "\t\treturn 0, errors.New(`integer out of range`)"
|
||||
print "\t} else {"
|
||||
print "\t\treturn n, nil"
|
||||
@@ -191,7 +191,7 @@ function codegen_enum_value(name, subname, value, cg, goname) {
|
||||
|
||||
function codegen_enum(name, cg, gotype, fields) {
|
||||
gotype = PrefixCamel name
|
||||
print "type " gotype " int"
|
||||
print "type " gotype " int8"
|
||||
print ""
|
||||
|
||||
print "const ("
|
||||
@@ -239,12 +239,10 @@ function codegen_enum(name, cg, gotype, fields) {
|
||||
|
||||
# XXX: This should also check if it isn't out-of-range for any reason,
|
||||
# but our usage of sprintf() stands in the way a bit.
|
||||
CodegenSerialize[name] = \
|
||||
"\tdata = binary.BigEndian.AppendUint32(data, uint32(%s))\n"
|
||||
CodegenSerialize[name] = "\tdata = append(data, uint8(%s))\n"
|
||||
CodegenDeserialize[name] = \
|
||||
"\tif len(data) >= 4 {\n" \
|
||||
"\t\t%s = " gotype "(int32(binary.BigEndian.Uint32(data)))\n" \
|
||||
"\t\tdata = data[4:]\n" \
|
||||
"\tif len(data) >= 1 {\n" \
|
||||
"\t\t%s, data = " gotype "(data[0]), data[1:]\n" \
|
||||
"\t} else {\n" \
|
||||
"\t\treturn nil, false\n" \
|
||||
"\t}\n"
|
||||
|
||||
Reference in New Issue
Block a user