Down-integrate some code from an internal branch. (More to come.)
This commit is contained in:
parent
31afcd730b
commit
d2fd0638c3
@ -7,6 +7,9 @@
|
||||
* Added RemoveLast and SwapElements(index1, index2) to Reflection
|
||||
interface for repeated elements.
|
||||
* Added Swap(Message) to Reflection interface.
|
||||
* Floating-point literals in generated code that are intended to be
|
||||
single-precision now explicitly have 'f' suffix to avoid pedantic warnings
|
||||
produced by some compilers.
|
||||
|
||||
2009-05-13 version 2.1.0:
|
||||
|
||||
|
@ -88,5 +88,8 @@ int main(int argc, char* argv[]) {
|
||||
}
|
||||
}
|
||||
|
||||
// Optional: Delete all global objects allocated by libprotobuf.
|
||||
google::protobuf::ShutdownProtobufLibrary();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -61,5 +61,8 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
ListPeople(address_book);
|
||||
|
||||
// Optional: Delete all global objects allocated by libprotobuf.
|
||||
google::protobuf::ShutdownProtobufLibrary();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -808,7 +808,6 @@ public final class CodedOutputStream {
|
||||
* field of arbitrary type, excluding tag, to the stream.
|
||||
*
|
||||
* @param type The field's type.
|
||||
* @param number The field's number.
|
||||
* @param value Object representing the field's value. Must be of the exact
|
||||
* type which would be returned by
|
||||
* {@link Message#getField(Descriptors.FieldDescriptor)} for
|
||||
|
@ -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:
|
||||
|
@ -50,9 +50,11 @@
|
||||
#include <google/protobuf/unittest_optimize_for.pb.h>
|
||||
#include <google/protobuf/unittest_embed_optimize_for.pb.h>
|
||||
#include <google/protobuf/test_util.h>
|
||||
#include <google/protobuf/compiler/cpp/cpp_helpers.h>
|
||||
#include <google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.h>
|
||||
#include <google/protobuf/compiler/importer.h>
|
||||
#include <google/protobuf/io/coded_stream.h>
|
||||
#include <google/protobuf/io/tokenizer.h>
|
||||
#include <google/protobuf/io/zero_copy_stream_impl.h>
|
||||
#include <google/protobuf/descriptor.h>
|
||||
#include <google/protobuf/descriptor.pb.h>
|
||||
@ -73,6 +75,18 @@ namespace cpp {
|
||||
// Can't use an anonymous namespace here due to brokenness of Tru64 compiler.
|
||||
namespace cpp_unittest {
|
||||
|
||||
TEST(ExtremeDefaultValues, FloatingPoint) {
|
||||
const unittest::TestExtremeDefaultValues& extreme_default =
|
||||
unittest::TestExtremeDefaultValues::default_instance();
|
||||
|
||||
EXPECT_EQ(0.0f, extreme_default.zero_float());
|
||||
EXPECT_EQ(1.0f, extreme_default.one_float());
|
||||
EXPECT_EQ(1.5f, extreme_default.small_float());
|
||||
EXPECT_EQ(-1.0f, extreme_default.negative_one_float());
|
||||
EXPECT_EQ(-1.5f, extreme_default.negative_float());
|
||||
EXPECT_EQ(2.0e8f, extreme_default.large_float());
|
||||
EXPECT_EQ(-8e-28f, extreme_default.small_negative_float());
|
||||
}
|
||||
|
||||
class MockErrorCollector : public MultiFileErrorCollector {
|
||||
public:
|
||||
|
@ -223,6 +223,11 @@ class LIBPROTOBUF_EXPORT Message {
|
||||
// See Reflection::GetUnknownFields() for more on unknown fields.
|
||||
virtual void DiscardUnknownFields();
|
||||
|
||||
// Computes (an estimate of) the total number of bytes currently used for
|
||||
// storing the message in memory. The default implementation calls the
|
||||
// Reflection object's SpaceUsed() method.
|
||||
virtual int SpaceUsed() const;
|
||||
|
||||
// Debugging -------------------------------------------------------
|
||||
|
||||
// Generates a human readable form of this message, useful for debugging
|
||||
@ -362,11 +367,6 @@ class LIBPROTOBUF_EXPORT Message {
|
||||
// this, it MUST override SetCachedSize().
|
||||
virtual int ByteSize() const;
|
||||
|
||||
// Computes (an estimate of) the total number of bytes currently used for
|
||||
// storing the message in memory. The default implementation calls the
|
||||
// Reflection object's SpaceUsed() method.
|
||||
virtual int SpaceUsed() const;
|
||||
|
||||
// Serializes the message without recomputing the size. The message must
|
||||
// not have changed since the last call to ByteSize(); if it has, the results
|
||||
// are undefined.
|
||||
|
@ -458,6 +458,16 @@ message TestExtremeDefaultValues {
|
||||
// the UTF-8 text directly into this text file rather than escape it, but
|
||||
// lots of people use editors that would be confused by this.)
|
||||
optional string utf8_string = 6 [default = "\341\210\264"];
|
||||
|
||||
// Tests for single-precision floating-point values.
|
||||
optional float zero_float = 7 [default = 0];
|
||||
optional float one_float = 8 [default = 1];
|
||||
optional float small_float = 9 [default = 1.5];
|
||||
optional float negative_one_float = 10 [default = -1];
|
||||
optional float negative_float = 11 [default = -1.5];
|
||||
// Using exponents
|
||||
optional float large_float = 12 [default = 2E8];
|
||||
optional float small_negative_float = 13 [default = -8e-28];
|
||||
}
|
||||
|
||||
// Test String and Bytes: string is for valid UTF-8 strings
|
||||
|
Loading…
Reference in New Issue
Block a user