|
|
|
@ -407,6 +407,83 @@ string DefaultValue(const Params& params, const FieldDescriptor* field) { |
|
|
|
|
return ""; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static const char* kBitMasks[] = { |
|
|
|
|
"0x00000001", |
|
|
|
|
"0x00000002", |
|
|
|
|
"0x00000004", |
|
|
|
|
"0x00000008", |
|
|
|
|
"0x00000010", |
|
|
|
|
"0x00000020", |
|
|
|
|
"0x00000040", |
|
|
|
|
"0x00000080", |
|
|
|
|
|
|
|
|
|
"0x00000100", |
|
|
|
|
"0x00000200", |
|
|
|
|
"0x00000400", |
|
|
|
|
"0x00000800", |
|
|
|
|
"0x00001000", |
|
|
|
|
"0x00002000", |
|
|
|
|
"0x00004000", |
|
|
|
|
"0x00008000", |
|
|
|
|
|
|
|
|
|
"0x00010000", |
|
|
|
|
"0x00020000", |
|
|
|
|
"0x00040000", |
|
|
|
|
"0x00080000", |
|
|
|
|
"0x00100000", |
|
|
|
|
"0x00200000", |
|
|
|
|
"0x00400000", |
|
|
|
|
"0x00800000", |
|
|
|
|
|
|
|
|
|
"0x01000000", |
|
|
|
|
"0x02000000", |
|
|
|
|
"0x04000000", |
|
|
|
|
"0x08000000", |
|
|
|
|
"0x10000000", |
|
|
|
|
"0x20000000", |
|
|
|
|
"0x40000000", |
|
|
|
|
"0x80000000", |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
string GetBitFieldName(int index) { |
|
|
|
|
string var_name = "bitField"; |
|
|
|
|
var_name += SimpleItoa(index); |
|
|
|
|
var_name += "_"; |
|
|
|
|
return var_name; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
string GetBitFieldNameForBit(int bit_index) { |
|
|
|
|
return GetBitFieldName(bit_index / 32); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
string GenerateGetBit(int bit_index) { |
|
|
|
|
string var_name = GetBitFieldNameForBit(bit_index); |
|
|
|
|
int bit_in_var_index = bit_index % 32; |
|
|
|
|
|
|
|
|
|
string mask = kBitMasks[bit_in_var_index]; |
|
|
|
|
string result = "((" + var_name + " & " + mask + ") == " + mask + ")"; |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
string GenerateSetBit(int bit_index) { |
|
|
|
|
string var_name = GetBitFieldNameForBit(bit_index); |
|
|
|
|
int bit_in_var_index = bit_index % 32; |
|
|
|
|
|
|
|
|
|
string mask = kBitMasks[bit_in_var_index]; |
|
|
|
|
string result = var_name + " |= " + mask; |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
string GenerateClearBit(int bit_index) { |
|
|
|
|
string var_name = GetBitFieldNameForBit(bit_index); |
|
|
|
|
int bit_in_var_index = bit_index % 32; |
|
|
|
|
|
|
|
|
|
string mask = kBitMasks[bit_in_var_index]; |
|
|
|
|
string result = var_name + " = (" + var_name + " & ~" + mask + ")"; |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} // namespace javanano
|
|
|
|
|
} // namespace compiler
|
|
|
|
|
} // namespace protobuf
|
|
|
|
|