aboutsummaryrefslogtreecommitdiff
path: root/src/google/protobuf/compiler/cpp/cpp_helpers.cc
diff options
context:
space:
mode:
authorkenton@google.com <kenton@google.com@630680e5-0e50-0410-840e-4b1c322b438d>2009-07-24 01:00:35 +0000
committerkenton@google.com <kenton@google.com@630680e5-0e50-0410-840e-4b1c322b438d>2009-07-24 01:00:35 +0000
commitd2fd0638c309113ccae3731a58e30419f522269a (patch)
tree19765ef6018015a1ae7a84ead0dd13592c2442b5 /src/google/protobuf/compiler/cpp/cpp_helpers.cc
parent31afcd730b279a6aa810cee447757725a7031353 (diff)
downloadprotobuf-d2fd0638c309113ccae3731a58e30419f522269a.tar.gz
protobuf-d2fd0638c309113ccae3731a58e30419f522269a.tar.bz2
protobuf-d2fd0638c309113ccae3731a58e30419f522269a.zip
Down-integrate some code from an internal branch. (More to come.)
Diffstat (limited to 'src/google/protobuf/compiler/cpp/cpp_helpers.cc')
-rw-r--r--src/google/protobuf/compiler/cpp/cpp_helpers.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/google/protobuf/compiler/cpp/cpp_helpers.cc b/src/google/protobuf/compiler/cpp/cpp_helpers.cc
index 070fde55..595aeaeb 100644
--- a/src/google/protobuf/compiler/cpp/cpp_helpers.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_helpers.cc
@@ -227,7 +227,15 @@ string DefaultValue(const FieldDescriptor* field) {
case FieldDescriptor::CPPTYPE_DOUBLE:
return SimpleDtoa(field->default_value_double());
case FieldDescriptor::CPPTYPE_FLOAT:
- return SimpleFtoa(field->default_value_float());
+ {
+ // If floating point value contains a period (.) or an exponent (either
+ // E or e), then append suffix 'f' to make it a floating-point literal.
+ string float_value = SimpleFtoa(field->default_value_float());
+ if (float_value.find_first_of(".eE") != string::npos) {
+ float_value.push_back('f');
+ }
+ return float_value;
+ }
case FieldDescriptor::CPPTYPE_BOOL:
return field->default_value_bool() ? "true" : "false";
case FieldDescriptor::CPPTYPE_ENUM: