aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Feng Xiao <xfxyjwf@gmail.com>2014-12-10 20:56:13 -0800
committerGravatar Feng Xiao <xfxyjwf@gmail.com>2014-12-10 20:56:13 -0800
commit52909485d15a9ac617bc8948c02dafd1ab4233bd (patch)
treeb0d60d94523b828c077bfe47f30ce0e70c01f267
parent261fe97a63316a4a4918afcaa6c8c0f4b0da45fc (diff)
parent8d5d7cc6d03b00fcb7162525100fbd4cc0d1929d (diff)
Merge branch v3.0.0-alpha-1 into master.
Conflicts: configure.ac
-rw-r--r--CHANGES.txt104
-rw-r--r--Makefile.am1
-rw-r--r--configure.ac4
-rw-r--r--java/pom.xml4
-rw-r--r--java/src/main/java/com/google/protobuf/MapFieldLite.java2
-rw-r--r--java/src/test/java/com/google/protobuf/MapTest.java7
-rw-r--r--java/src/test/java/com/google/protobuf/UnknownFieldSetLiteTest.java5
-rwxr-xr-xpost_process_dist.sh24
-rwxr-xr-xpython/setup.py2
-rw-r--r--src/Makefile.am8
-rw-r--r--src/google/protobuf/arena.cc21
-rw-r--r--src/google/protobuf/arena.h11
-rw-r--r--src/google/protobuf/arena_unittest.cc12
-rwxr-xr-xsrc/google/protobuf/arenastring.h3
-rw-r--r--src/google/protobuf/compiler/cpp/cpp_message.cc2
-rw-r--r--src/google/protobuf/compiler/cpp/cpp_unittest.cc2
-rw-r--r--src/google/protobuf/compiler/plugin.pb.h4
-rw-r--r--src/google/protobuf/descriptor.cc5
-rw-r--r--src/google/protobuf/descriptor.pb.h4
-rw-r--r--src/google/protobuf/map.h6
-rw-r--r--src/google/protobuf/map_entry.h13
-rw-r--r--src/google/protobuf/map_field.cc27
-rw-r--r--src/google/protobuf/map_field.h2
-rw-r--r--src/google/protobuf/map_field_test.cc35
-rw-r--r--src/google/protobuf/map_test.cc2
-rw-r--r--src/google/protobuf/map_test_util.cc34
-rw-r--r--src/google/protobuf/message.h1
-rw-r--r--src/google/protobuf/preserve_unknown_enum_test.cc2
-rw-r--r--src/google/protobuf/repeated_field.h13
-rw-r--r--src/google/protobuf/repeated_field_reflection.h4
-rw-r--r--src/google/protobuf/repeated_field_reflection_unittest.cc5
-rw-r--r--src/google/protobuf/repeated_field_unittest.cc4
-rw-r--r--src/google/protobuf/stubs/common.h16
-rw-r--r--src/google/protobuf/stubs/fastmem.h1
-rw-r--r--src/google/protobuf/stubs/type_traits.h11
-rw-r--r--src/google/protobuf/stubs/type_traits_unittest.cc2
-rw-r--r--src/google/protobuf/unknown_field_set_unittest.cc2
-rwxr-xr-xvsprojects/extract_includes.bat78
-rw-r--r--vsprojects/libprotobuf-lite.vcproj34
-rw-r--r--vsprojects/libprotobuf.vcproj90
-rw-r--r--vsprojects/libprotoc.vcproj88
-rw-r--r--vsprojects/lite-test.vcproj4
-rw-r--r--vsprojects/protoc.vcproj4
-rwxr-xr-xvsprojects/test_plugin.vcproj4
-rw-r--r--vsprojects/tests.vcproj540
45 files changed, 972 insertions, 275 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 0d0ac814..0d4ce0ec 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,107 @@
+2014-12-01 version 3.0.0-alpha-1 (C++/Java):
+
+ General
+ * Introduced Protocol Buffers language version 3 (aka proto3).
+
+ When protobuf was initially opensourced it implemented Protocol Buffers
+ language version 2 (aka proto2), which is why the version number
+ started from v2.0.0. From v3.0.0, a new language version (proto3) is
+ introduced while the old version (proto2) will continue to be supported.
+
+ The main intent of introducing proto3 is to clean up protobuf before
+ pushing the language as the foundation of Google's new API platform.
+ In proto3, the language is simplified, both for ease of use and to
+ make it available in a wider range of programming languages. At the
+ same time a few features are added to better support common idioms
+ found in APIs.
+
+ The following are the main new features in language version 3:
+
+ 1. Removal of field presence logic for primitive value fields, removal
+ of required fields, and removal of default values. This makes proto3
+ significantly easier to implement with open struct representations,
+ as in languages like Android Java, Objective C, or Go.
+ 2. Removal of unknown fields.
+ 3. Removal of extensions, which are instead replaced by a new standard
+ type called Any.
+ 4. Fix semantics for unknown enum values.
+ 5. Addition of maps.
+ 6. Addition of a small set of standard types for representation of time,
+ dynamic data, etc.
+ 7. A well-defined encoding in JSON as an alternative to binary proto
+ encoding.
+
+ This release (v3.0.0-alpha-1) includes partial proto3 support for C++ and
+ Java. Items 6 (well-known types) and 7 (JSON format) in the above feature
+ list are not impelmented.
+
+ A new notion "syntax" is introduced to specify whether a .proto file
+ uses proto2 or proto3:
+
+ // foo.proto
+ syntax = "proto3";
+ message Bar {...}
+
+ If omitted, the protocol compiler will generate a warning and "proto2" will
+ be used as the default. This warning will be turned into an error in a
+ future release.
+
+ We recommend that new Protocol Buffers users use proto3. However, we do not
+ generally recommend that existing users migrate from proto2 from proto3 due
+ to API incompatibility, and we will continue to support proto2 for a long
+ time.
+
+ * Added support for map fields (implemented in C++/Java for both proto2 and
+ proto3).
+
+ Map fields can be declared using the following syntax:
+
+ message Foo {
+ map<string, string> values = 1;
+ }
+
+ Data of a map field will be stored in memory as an unordered map and it
+ can be accessed through generated accessors.
+
+ C++
+ * Added arena allocation support (for both proto2 and proto3).
+
+ Profiling shows memory allocation and deallocation constitutes a significant
+ fraction of CPU-time spent in protobuf code and arena allocation is a
+ technique introduced to reduce this cost. With arena allocation, new
+ objects will be allocated from a large piece of preallocated memory and
+ deallocation of these objects is almost free. Early adoption shows 20% to
+ 50% improvement in some Google binaries.
+
+ To enable arena support, add the following option to your .proto file:
+
+ option cc_enable_arenas = true;
+
+ Protocol compiler will generate additional code to make the generated
+ message classes work with arenas. This does not change the existing API
+ of protobuf messages and does not affect wire format. Your existing code
+ should continue to work after adding this option. In the future we will
+ make this option enabled by default.
+
+ To actually take advantage of arena allocation, you need to use the arena
+ APIs when creating messages. A quick example of using the arena API:
+
+ {
+ google::protobuf::Arena arena;
+ // Allocate a protobuf message in the arena.
+ MyMessage* message = Arena::CreateMessage<MyMessage>(&arena);
+ // All submessages will be allocated in the same arena.
+ if (!message->ParseFromString(data)) {
+ // Deal with malformed input data.
+ }
+ // Must not delete the message here. It will be deleted automatically
+ // when the arena is destroyed.
+ }
+
+ Currently arena does not work with map fields. Enabling arena in a .proto
+ file containing map fields will result in compile errors in the generated
+ code. This will be addressed in a future release.
+
2014-10-20 version 2.6.1:
C++
diff --git a/Makefile.am b/Makefile.am
index 292b8725..dadccf25 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -135,6 +135,7 @@ java_EXTRA_DIST= \
java/src/test/java/com/google/protobuf/field_presence_test.proto \
java/src/test/java/com/google/protobuf/lazy_fields_lite.proto \
java/src/test/java/com/google/protobuf/lite_equals_and_hash.proto \
+ java/src/test/java/com/google/protobuf/map_for_proto2_lite_test.proto \
java/src/test/java/com/google/protobuf/map_for_proto2_test.proto \
java/src/test/java/com/google/protobuf/map_test.proto \
java/src/test/java/com/google/protobuf/multiple_files_test.proto \
diff --git a/configure.ac b/configure.ac
index ee85c155..263118b5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,7 +12,7 @@ AC_PREREQ(2.59)
# In the SVN trunk, the version should always be the next anticipated release
# version with the "-pre" suffix. (We used to use "-SNAPSHOT" but this pushed
# the size of one file name in the dist tarfile over the 99-char limit.)
-AC_INIT([Protocol Buffers],[2.6.2-pre],[protobuf@googlegroups.com],[protobuf])
+AC_INIT([Protocol Buffers],[3.0.0-alpha-1],[protobuf@googlegroups.com],[protobuf])
AM_MAINTAINER_MODE([enable])
@@ -22,7 +22,7 @@ AC_CONFIG_MACRO_DIR([m4])
AC_ARG_VAR(DIST_LANG, [language to include in the distribution package (i.e., make dist)])
case "$DIST_LANG" in
- "") DIST_LANG=cpp ;;
+ "") DIST_LANG=all ;;
all | cpp | java | python | javanano | ruby) ;;
*) AC_MSG_FAILURE([unknown language: $DIST_LANG]) ;;
esac
diff --git a/java/pom.xml b/java/pom.xml
index 4ec6d776..bc339f66 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -10,7 +10,7 @@
</parent>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
- <version>2.6.2-pre</version>
+ <version>3.0.0-alpha-1</version>
<packaging>bundle</packaging>
<name>Protocol Buffer Java API</name>
<description>
@@ -152,7 +152,7 @@
<instructions>
<Bundle-DocURL>https://developers.google.com/protocol-buffers/</Bundle-DocURL>
<Bundle-SymbolicName>com.google.protobuf</Bundle-SymbolicName>
- <Export-Package>com.google.protobuf;version=2.6.2-pre</Export-Package>
+ <Export-Package>com.google.protobuf;version=3.0.0-alpha-1</Export-Package>
</instructions>
</configuration>
</plugin>
diff --git a/java/src/main/java/com/google/protobuf/MapFieldLite.java b/java/src/main/java/com/google/protobuf/MapFieldLite.java
index eea36d9e..7f94c690 100644
--- a/java/src/main/java/com/google/protobuf/MapFieldLite.java
+++ b/java/src/main/java/com/google/protobuf/MapFieldLite.java
@@ -97,7 +97,7 @@ public class MapFieldLite<K, V> {
if (a == b) {
return true;
}
- if (a.size() != a.size()) {
+ if (a.size() != b.size()) {
return false;
}
for (Map.Entry<K, V> entry : a.entrySet()) {
diff --git a/java/src/test/java/com/google/protobuf/MapTest.java b/java/src/test/java/com/google/protobuf/MapTest.java
index 542a20e7..9a25e302 100644
--- a/java/src/test/java/com/google/protobuf/MapTest.java
+++ b/java/src/test/java/com/google/protobuf/MapTest.java
@@ -260,6 +260,13 @@ public class MapTest extends TestCase {
assertFalse(m1.equals(m2));
// Don't check m1.hashCode() != m2.hashCode() because it's not guaranteed
// to be different.
+
+ // Regression test for b/18549190: if a map is a subset of the other map,
+ // equals() should return false.
+ b2.getMutableInt32ToInt32Field().remove(1);
+ m2 = b2.build();
+ assertFalse(m1.equals(m2));
+ assertFalse(m2.equals(m1));
}
diff --git a/java/src/test/java/com/google/protobuf/UnknownFieldSetLiteTest.java b/java/src/test/java/com/google/protobuf/UnknownFieldSetLiteTest.java
index 6372b7a7..cec3da1e 100644
--- a/java/src/test/java/com/google/protobuf/UnknownFieldSetLiteTest.java
+++ b/java/src/test/java/com/google/protobuf/UnknownFieldSetLiteTest.java
@@ -38,7 +38,6 @@ import junit.framework.TestCase;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.nio.charset.StandardCharsets;
/**
* Tests for {@link UnknownFieldSetLite}.
@@ -228,9 +227,9 @@ public class UnknownFieldSetLiteTest extends TestCase {
assertEquals(foo, copyOfCopy);
}
- public void testMalformedBytes() {
+ public void testMalformedBytes() throws Exception {
try {
- Foo.parseFrom("this is a malformed protocol buffer".getBytes(StandardCharsets.UTF_8));
+ Foo.parseFrom("this is a malformed protocol buffer".getBytes("UTF-8"));
fail();
} catch (InvalidProtocolBufferException e) {
// Expected.
diff --git a/post_process_dist.sh b/post_process_dist.sh
index 7b2e599d..733fa088 100755
--- a/post_process_dist.sh
+++ b/post_process_dist.sh
@@ -16,7 +16,7 @@
# 5) Cleans up after itself.
if [ "$1" == "" ]; then
- echo "USAGE: $1 DISTFILE" >&2
+ echo "USAGE: $0 DISTFILE" >&2
exit 1
fi
@@ -27,7 +27,9 @@ fi
set -ex
+LANGUAGES="cpp java python"
BASENAME=`basename $1 .tar.gz`
+VERSION=${BASENAME:9}
# Create a directory called "dist", copy the tarball there and unpack it.
mkdir dist
@@ -44,17 +46,23 @@ cd $BASENAME/vsprojects
./convert2008to2005.sh
cd ..
-# Build the dist again in .tar.gz and .tar.bz2 formats.
-./configure
-make dist-gzip
-make dist-bzip2
+for LANG in $LANGUAGES; do
+ # Build the dist again in .tar.gz
+ ./configure DIST_LANG=$LANG
+ make dist-gzip
+ mv $BASENAME.tar.gz ../protobuf-$LANG-$VERSION.tar.gz
+done
# Convert all text files to use DOS-style line endings, then build a .zip
# distribution.
todos *.txt */*.txt
-make dist-zip
-# Clean up.
-mv $BASENAME.tar.gz $BASENAME.tar.bz2 $BASENAME.zip ..
+for LANG in $LANGUAGES; do
+ # Build the dist again in .zip
+ ./configure DIST_LANG=$LANG
+ make dist-zip
+ mv $BASENAME.zip ../protobuf-$LANG-$VERSION.zip
+done
+
cd ..
rm -rf $BASENAME
diff --git a/python/setup.py b/python/setup.py
index 69ffcd1d..e4120208 100755
--- a/python/setup.py
+++ b/python/setup.py
@@ -163,7 +163,7 @@ if __name__ == '__main__':
))
setup(name = 'protobuf',
- version = '2.6.2-pre',
+ version = '3.0.0-alpha-1',
packages = [ 'google' ],
namespace_packages = [ 'google' ],
test_suite = 'setup.MakeTestSuite',
diff --git a/src/Makefile.am b/src/Makefile.am
index e5f4bf04..46190713 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -111,7 +111,7 @@ nobase_include_HEADERS = \
lib_LTLIBRARIES = libprotobuf-lite.la libprotobuf.la libprotoc.la
libprotobuf_lite_la_LIBADD = $(PTHREAD_LIBS)
-libprotobuf_lite_la_LDFLAGS = -version-info 9:2:0 -export-dynamic -no-undefined
+libprotobuf_lite_la_LDFLAGS = -version-info 10:0:0 -export-dynamic -no-undefined
libprotobuf_lite_la_SOURCES = \
google/protobuf/stubs/atomicops_internals_x86_gcc.cc \
google/protobuf/stubs/atomicops_internals_x86_msvc.cc \
@@ -126,7 +126,6 @@ libprotobuf_lite_la_SOURCES = \
google/protobuf/arenastring.cc \
google/protobuf/extension_set.cc \
google/protobuf/generated_message_util.cc \
- google/protobuf/map_field.cc \
google/protobuf/message_lite.cc \
google/protobuf/repeated_field.cc \
google/protobuf/wire_format_lite.cc \
@@ -136,7 +135,7 @@ libprotobuf_lite_la_SOURCES = \
google/protobuf/io/zero_copy_stream_impl_lite.cc
libprotobuf_la_LIBADD = $(PTHREAD_LIBS)
-libprotobuf_la_LDFLAGS = -version-info 9:2:0 -export-dynamic -no-undefined
+libprotobuf_la_LDFLAGS = -version-info 10:0:0 -export-dynamic -no-undefined
libprotobuf_la_SOURCES = \
$(libprotobuf_lite_la_SOURCES) \
google/protobuf/stubs/strutil.cc \
@@ -150,6 +149,7 @@ libprotobuf_la_SOURCES = \
google/protobuf/dynamic_message.cc \
google/protobuf/extension_set_heavy.cc \
google/protobuf/generated_message_reflection.cc \
+ google/protobuf/map_field.cc \
google/protobuf/message.cc \
google/protobuf/reflection_internal.h \
google/protobuf/reflection_ops.cc \
@@ -166,7 +166,7 @@ libprotobuf_la_SOURCES = \
google/protobuf/compiler/parser.cc
libprotoc_la_LIBADD = $(PTHREAD_LIBS) libprotobuf.la
-libprotoc_la_LDFLAGS = -version-info 9:2:0 -export-dynamic -no-undefined
+libprotoc_la_LDFLAGS = -version-info 10:0:0 -export-dynamic -no-undefined
libprotoc_la_SOURCES = \
google/protobuf/compiler/code_generator.cc \
google/protobuf/compiler/command_line_interface.cc \
diff --git a/src/google/protobuf/arena.cc b/src/google/protobuf/arena.cc
index 1cb6441e..18536781 100644
--- a/src/google/protobuf/arena.cc
+++ b/src/google/protobuf/arena.cc
@@ -38,7 +38,14 @@ namespace google {
namespace protobuf {
google::protobuf::internal::SequenceNumber Arena::lifecycle_id_generator_;
-__thread Arena::ThreadCache Arena::thread_cache_ = { -1, NULL };
+#ifdef PROTOBUF_USE_DLLS
+Arena::ThreadCache& Arena::thread_cache() {
+ static GOOGLE_THREAD_LOCAL ThreadCache thread_cache_ = { -1, NULL };
+ return thread_cache_;
+}
+#else
+GOOGLE_THREAD_LOCAL Arena::ThreadCache Arena::thread_cache_ = { -1, NULL };
+#endif
void Arena::Init(const ArenaOptions& options) {
lifecycle_id_ = lifecycle_id_generator_.GetNext();
@@ -130,18 +137,18 @@ void* Arena::AllocateAligned(size_t n) {
// If this thread already owns a block in this arena then try to use that.
// This fast path optimizes the case where multiple threads allocate from the
// same arena.
- if (thread_cache_.last_lifecycle_id_seen == lifecycle_id_ &&
- thread_cache_.last_block_used_ != NULL) {
- if (thread_cache_.last_block_used_->avail() < n) {
+ if (thread_cache().last_lifecycle_id_seen == lifecycle_id_ &&
+ thread_cache().last_block_used_ != NULL) {
+ if (thread_cache().last_block_used_->avail() < n) {
return SlowAlloc(n);
}
- return AllocFromBlock(thread_cache_.last_block_used_, n);
+ return AllocFromBlock(thread_cache().last_block_used_, n);
}
// Check whether we own the last accessed block on this arena.
// This fast path optimizes the case where a single thread uses multiple
// arenas.
- void* me = &thread_cache_;
+ void* me = &thread_cache();
Block* b = reinterpret_cast<Block*>(google::protobuf::internal::Acquire_Load(&hint_));
if (!b || b->owner != me || b->avail() < n) {
// If the next block to allocate from is the first block, try to claim it
@@ -169,7 +176,7 @@ void* Arena::AllocFromBlock(Block* b, size_t n) {
}
void* Arena::SlowAlloc(size_t n) {
- void* me = &thread_cache_;
+ void* me = &thread_cache();
Block* b = FindBlock(me); // Find block owned by me.
// See if allocation fits in my latest block.
if (b != NULL && b->avail() >= n) {
diff --git a/src/google/protobuf/arena.h b/src/google/protobuf/arena.h
index 519e3569..d0cb163c 100644
--- a/src/google/protobuf/arena.h
+++ b/src/google/protobuf/arena.h
@@ -312,7 +312,12 @@ class LIBPROTOBUF_EXPORT Arena {
static const size_t kHeaderSize = sizeof(Block);
static google::protobuf::internal::SequenceNumber lifecycle_id_generator_;
- static __thread ThreadCache thread_cache_;
+#ifdef PROTOBUF_USE_DLLS
+ static ThreadCache& thread_cache();
+#else
+ static GOOGLE_THREAD_LOCAL ThreadCache thread_cache_;
+ static ThreadCache& thread_cache() { return thread_cache_; }
+#endif
// SFINAE for skipping addition to delete list for a Type. This is mainly to
// skip proto2/proto1 message objects with cc_enable_arenas=true from being
@@ -434,8 +439,8 @@ class LIBPROTOBUF_EXPORT Arena {
void CleanupList();
inline void SetThreadCacheBlock(Block* block) {
- thread_cache_.last_block_used_ = block;
- thread_cache_.last_lifecycle_id_seen = lifecycle_id_;
+ thread_cache().last_block_used_ = block;
+ thread_cache().last_lifecycle_id_seen = lifecycle_id_;
}
int64 lifecycle_id_; // Unique for each arena. Changes on Reset().
diff --git a/src/google/protobuf/arena_unittest.cc b/src/google/protobuf/arena_unittest.cc
index 76a4274f..9d3d3e3e 100644
--- a/src/google/protobuf/arena_unittest.cc
+++ b/src/google/protobuf/arena_unittest.cc
@@ -128,7 +128,7 @@ TEST(ArenaTest, InitialBlockTooSmall) {
// initial block.
std::vector<char> arena_block(64);
ArenaOptions options;
- options.initial_block = arena_block.data();
+ options.initial_block = &arena_block[0];
options.initial_block_size = arena_block.size();
Arena arena(options);
@@ -137,7 +137,7 @@ TEST(ArenaTest, InitialBlockTooSmall) {
// Ensure that the arena allocator did not return memory pointing into the
// initial block of memory.
- uintptr_t arena_start = reinterpret_cast<uintptr_t>(arena_block.data());
+ uintptr_t arena_start = reinterpret_cast<uintptr_t>(&arena_block[0]);
uintptr_t arena_end = arena_start + arena_block.size();
EXPECT_FALSE(allocation >= arena_start && allocation < arena_end);
@@ -771,7 +771,7 @@ TEST(ArenaTest, RepeatedFieldOnArena) {
// Preallocate an initial arena block to avoid mallocs during hooked region.
std::vector<char> arena_block(1024 * 1024);
ArenaOptions options;
- options.initial_block = arena_block.data();
+ options.initial_block = &arena_block[0];
options.initial_block_size = arena_block.size();
Arena arena(options);
@@ -898,7 +898,7 @@ TEST(ArenaTest, NoHeapAllocationsTest) {
// Allocate a large initial block to avoid mallocs during hooked test.
std::vector<char> arena_block(128 * 1024);
ArenaOptions options;
- options.initial_block = arena_block.data();
+ options.initial_block = &arena_block[0];
options.initial_block_size = arena_block.size();
Arena arena(options);
@@ -918,7 +918,7 @@ TEST(ArenaTest, NoHeapAllocationsTest) {
TEST(ArenaTest, MessageLiteOnArena) {
std::vector<char> arena_block(128 * 1024);
ArenaOptions options;
- options.initial_block = arena_block.data();
+ options.initial_block = &arena_block[0];
options.initial_block_size = arena_block.size();
Arena arena(options);
const google::protobuf::MessageLite* prototype = dynamic_cast<
@@ -977,7 +977,7 @@ TEST(ArenaTest, SpaceUsed) {
// Test with initial block.
std::vector<char> arena_block(1024);
- options.initial_block = arena_block.data();
+ options.initial_block = &arena_block[0];
options.initial_block_size = arena_block.size();
Arena arena_2(options);
EXPECT_EQ(1024, arena_2.SpaceUsed());
diff --git a/src/google/protobuf/arenastring.h b/src/google/protobuf/arenastring.h
index 50f13837..d829ed91 100755
--- a/src/google/protobuf/arenastring.h
+++ b/src/google/protobuf/arenastring.h
@@ -31,7 +31,6 @@
#ifndef GOOGLE_PROTOBUF_ARENASTRING_H__
#define GOOGLE_PROTOBUF_ARENASTRING_H__
-#include <stdint.h>
#include <string>
#include <google/protobuf/stubs/common.h>
@@ -54,7 +53,7 @@ namespace google {
namespace protobuf {
namespace internal {
-struct ArenaStringPtr {
+struct LIBPROTOBUF_EXPORT ArenaStringPtr {
inline void Set(const ::std::string* default_value,
const ::std::string& value, ::google::protobuf::Arena* arena) {
if (ptr_ == default_value) {
diff --git a/src/google/protobuf/compiler/cpp/cpp_message.cc b/src/google/protobuf/compiler/cpp/cpp_message.cc
index 212bc3e9..e71d35fa 100644
--- a/src/google/protobuf/compiler/cpp/cpp_message.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_message.cc
@@ -1226,7 +1226,7 @@ GenerateDescriptorDeclarations(io::Printer* printer) {
for (int j = 0; j < descriptor_->oneof_decl(i)->field_count(); j++) {
const FieldDescriptor* field = descriptor_->oneof_decl(i)->field(j);
printer->Print(" ");
- if (IsStringOrMessage(field)) {
+ if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
printer->Print("const ");
}
field_generators_.get(field).GeneratePrivateMembers(printer);
diff --git a/src/google/protobuf/compiler/cpp/cpp_unittest.cc b/src/google/protobuf/compiler/cpp/cpp_unittest.cc
index 20fcfa62..2a04b293 100644
--- a/src/google/protobuf/compiler/cpp/cpp_unittest.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_unittest.cc
@@ -153,6 +153,7 @@ TEST(GeneratedMessageTest, Defaults) {
&message.optional_import_message());
}
+#ifndef PROTOBUF_USE_DLLS
TEST(GeneratedMessageTest, Int32StringConversion) {
EXPECT_EQ("971", Int32ToString(971));
EXPECT_EQ("(~0x7fffffff)", Int32ToString(kint32min));
@@ -165,6 +166,7 @@ TEST(GeneratedMessageTest, Int64StringConversion) {
EXPECT_EQ("GOOGLE_LONGLONG(~0x7fffffffffffffff)", Int64ToString(kint64min));
EXPECT_EQ("GOOGLE_LONGLONG(9223372036854775807)", Int64ToString(kint64max));
}
+#endif // !PROTOBUF_USE_DLLS
TEST(GeneratedMessageTest, FloatingPointDefaults) {
const unittest::TestExtremeDefaultValues& extreme_default =
diff --git a/src/google/protobuf/compiler/plugin.pb.h b/src/google/protobuf/compiler/plugin.pb.h
index 35a0a899..ad017005 100644
--- a/src/google/protobuf/compiler/plugin.pb.h
+++ b/src/google/protobuf/compiler/plugin.pb.h
@@ -8,12 +8,12 @@
#include <google/protobuf/stubs/common.h>
-#if GOOGLE_PROTOBUF_VERSION < 2006000
+#if GOOGLE_PROTOBUF_VERSION < 3000000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 2006002 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
+#if 3000000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/descriptor.cc b/src/google/protobuf/descriptor.cc
index 19d49cab..b8dd198d 100644
--- a/src/google/protobuf/descriptor.cc
+++ b/src/google/protobuf/descriptor.cc
@@ -345,6 +345,10 @@ typedef hash_map<string, const SourceCodeInfo_Location*> LocationsByPathMap;
set<string>* allowed_proto3_extendees_ = NULL;
GOOGLE_PROTOBUF_DECLARE_ONCE(allowed_proto3_extendees_init_);
+void DeleteAllowedProto3Extendee() {
+ delete allowed_proto3_extendees_;
+}
+
void InitAllowedProto3Extendee() {
allowed_proto3_extendees_ = new set<string>;
allowed_proto3_extendees_->insert("google.protobuf.FileOptions");
@@ -354,6 +358,7 @@ void InitAllowedProto3Extendee() {
allowed_proto3_extendees_->insert("google.protobuf.EnumValueOptions");
allowed_proto3_extendees_->insert("google.protobuf.ServiceOptions");
allowed_proto3_extendees_->insert("google.protobuf.MethodOptions");
+ google::protobuf::internal::OnShutdown(&DeleteAllowedProto3Extendee);
}
// Checks whether the extendee type is allowed in proto3.
diff --git a/src/google/protobuf/descriptor.pb.h b/src/google/protobuf/descriptor.pb.h
index 6bb5c6a6..cda25982 100644
--- a/src/google/protobuf/descriptor.pb.h
+++ b/src/google/protobuf/descriptor.pb.h
@@ -8,12 +8,12 @@
#include <google/protobuf/stubs/common.h>
-#if GOOGLE_PROTOBUF_VERSION < 2006000
+#if GOOGLE_PROTOBUF_VERSION < 3000000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 2006002 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
+#if 3000000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/map.h b/src/google/protobuf/map.h
index f6ae3e52..6d8a9d03 100644
--- a/src/google/protobuf/map.h
+++ b/src/google/protobuf/map.h
@@ -110,7 +110,7 @@ class Map {
~Map() { clear(); }
// Iterators
- class LIBPROTOBUF_EXPORT const_iterator
+ class const_iterator
: public std::iterator<std::forward_iterator_tag, value_type, ptrdiff_t,
const value_type*, const value_type&> {
typedef typename hash_map<Key, value_type*>::const_iterator InnerIt;
@@ -139,7 +139,7 @@ class Map {
InnerIt it_;
};
- class LIBPROTOBUF_EXPORT iterator : public std::iterator<std::forward_iterator_tag, value_type> {
+ class iterator : public std::iterator<std::forward_iterator_tag, value_type> {
typedef typename hash_map<Key, value_type*>::iterator InnerIt;
public:
@@ -302,7 +302,7 @@ class Map {
template <typename K, typename V, FieldDescriptor::Type KeyProto,
FieldDescriptor::Type ValueProto, int default_enum>
- friend class LIBPROTOBUF_EXPORT internal::MapField;
+ friend class internal::MapField;
};
} // namespace protobuf
diff --git a/src/google/protobuf/map_entry.h b/src/google/protobuf/map_entry.h
index 6971c763..217b15f6 100644
--- a/src/google/protobuf/map_entry.h
+++ b/src/google/protobuf/map_entry.h
@@ -43,6 +43,10 @@ class Arena;
namespace protobuf {
namespace internal {
+// Register all MapEntry default instances so we can delete them in
+// ShutdownProtobufLibrary().
+void LIBPROTOBUF_EXPORT RegisterMapEntryDefaultInstance(MessageLite* default_instance);
+
// This is the common base class for MapEntry. It is used by MapFieldBase in
// reflection api, in which the static type of key and value is unknown.
class LIBPROTOBUF_EXPORT MapEntryBase : public Message {
@@ -80,7 +84,7 @@ class LIBPROTOBUF_EXPORT MapEntryBase : public Message {
// Moreover, default_enum_value is used to initialize enum field in proto2.
template <typename Key, typename Value, FieldDescriptor::Type KeyProtoType,
FieldDescriptor::Type ValueProtoType, int default_enum_value>
-class LIBPROTOBUF_EXPORT MapEntry : public MapEntryBase {
+class MapEntry : public MapEntryBase {
// Handlers for key/value's proto field type. Used to infer internal layout
// and provide parsing/serialization support.
typedef MapProtoTypeHandler<KeyProtoType> KeyProtoHandler;
@@ -317,6 +321,7 @@ class LIBPROTOBUF_EXPORT MapEntry : public MapEntryBase {
entry->reflection_ = reflection;
entry->default_instance_ = entry;
entry->InitAsDefaultInstance();
+ RegisterMapEntryDefaultInstance(entry);
return entry;
}
@@ -358,7 +363,7 @@ class LIBPROTOBUF_EXPORT MapEntry : public MapEntryBase {
template <typename KeyNested, typename ValueNested,
FieldDescriptor::Type KeyProtoNested,
FieldDescriptor::Type ValueProtoNested, int default_enum>
- class LIBPROTOBUF_EXPORT MapEntryWrapper
+ class MapEntryWrapper
: public MapEntry<KeyNested, ValueNested, KeyProtoNested,
ValueProtoNested, default_enum> {
typedef MapEntry<KeyNested, ValueNested, KeyProtoNested, ValueProtoNested,
@@ -389,7 +394,7 @@ class LIBPROTOBUF_EXPORT MapEntry : public MapEntryBase {
template <typename KeyNested, typename ValueNested,
FieldDescriptor::Type KeyProtoNested,
FieldDescriptor::Type ValueProtoNested, int default_enum>
- class LIBPROTOBUF_EXPORT MapEnumEntryWrapper
+ class MapEnumEntryWrapper
: public MapEntry<KeyNested, ValueNested, KeyProtoNested,
ValueProtoNested, default_enum> {
typedef MapEntry<KeyNested, ValueNested, KeyProtoNested, ValueProtoNested,
@@ -428,7 +433,7 @@ class LIBPROTOBUF_EXPORT MapEntry : public MapEntryBase {
template <typename K, typename V,
FieldDescriptor::Type KType,
FieldDescriptor::Type VType, int default_enum>
- friend class LIBPROTOBUF_EXPORT internal::MapField;
+ friend class internal::MapField;
friend class LIBPROTOBUF_EXPORT internal::GeneratedMessageReflection;
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MapEntry);
diff --git a/src/google/protobuf/map_field.cc b/src/google/protobuf/map_field.cc
index 74431628..b535ec28 100644
--- a/src/google/protobuf/map_field.cc
+++ b/src/google/protobuf/map_field.cc
@@ -30,10 +30,37 @@
#include <google/protobuf/map_field.h>
+#include <vector>
+
namespace google {
namespace protobuf {
namespace internal {
+ProtobufOnceType map_entry_default_instances_once_;
+Mutex* map_entry_default_instances_mutex_;
+vector<MessageLite*>* map_entry_default_instances_;
+
+void DeleteMapEntryDefaultInstances() {
+ for (int i = 0; i < map_entry_default_instances_->size(); ++i) {
+ delete map_entry_default_instances_->at(i);
+ }
+ delete map_entry_default_instances_mutex_;
+ delete map_entry_default_instances_;
+}
+
+void InitMapEntryDefaultInstances() {
+ map_entry_default_instances_mutex_ = new Mutex();
+ map_entry_default_instances_ = new vector<MessageLite*>();
+ OnShutdown(&DeleteMapEntryDefaultInstances);
+}
+
+void RegisterMapEntryDefaultInstance(MessageLite* default_instance) {
+ GoogleOnceInit(&map_entry_default_instances_once_,
+ &InitMapEntryDefaultInstances);
+ MutexLock lock(map_entry_default_instances_mutex_);
+ map_entry_default_instances_->push_back(default_instance);
+}
+
MapFieldBase::~MapFieldBase() {
if (repeated_field_ != NULL) delete repeated_field_;
}
diff --git a/src/google/protobuf/map_field.h b/src/google/protobuf/map_field.h
index 0fad1351..8516d74e 100644
--- a/src/google/protobuf/map_field.h
+++ b/src/google/protobuf/map_field.h
@@ -137,7 +137,7 @@ class LIBPROTOBUF_EXPORT MapFieldBase {
template<typename Key, typename T,
FieldDescriptor::Type KeyProto,
FieldDescriptor::Type ValueProto, int default_enum_value = 0>
-class LIBPROTOBUF_EXPORT MapField : public MapFieldBase {
+class MapField : public MapFieldBase {
// Handlers for key/value's proto field type.
typedef MapProtoTypeHandler<KeyProto> KeyProtoHandler;
typedef MapProtoTypeHandler<ValueProto> ValueProtoHandler;
diff --git a/src/google/protobuf/map_field_test.cc b/src/google/protobuf/map_field_test.cc
index 98551839..045f8f2c 100644
--- a/src/google/protobuf/map_field_test.cc
+++ b/src/google/protobuf/map_field_test.cc
@@ -430,41 +430,6 @@ TEST_P(MapFieldStateTest, MutableMapField) {
}
}
-class MapFieldBaseStateStub : public MapFieldBaseStub {
- public:
- MapFieldBaseStateStub(Mutex* mutex, int* clean_counter,
- int* completed_counter)
- : mutex_(mutex),
- clean_counter_(clean_counter),
- completed_counter_(completed_counter) {}
- ~MapFieldBaseStateStub() {}
-
- protected:
- void SyncRepeatedFieldWithMapNoLock() const { Clean(); }
- void SyncMapWithRepeatedFieldNoLock() const { Clean(); }
-
- private:
- void Clean() const {
- {
- MutexLock lock(mutex_);
- ++(*clean_counter_);
- }
- struct timespec tm;
- tm.tv_sec = 0;
- tm.tv_nsec = 100000000; // 100ms
- nanosleep(&tm, NULL);
- {
- MutexLock lock(mutex_);
- // No other thread should have completed while this one was initializing.
- EXPECT_EQ(0, *completed_counter_);
- }
- }
- Mutex* mutex_;
- int* clean_counter_;
- int* completed_counter_;
-};
-
-
} // namespace internal
} // namespace protobuf
} // namespace google
diff --git a/src/google/protobuf/map_test.cc b/src/google/protobuf/map_test.cc
index c680ccb2..9db67523 100644
--- a/src/google/protobuf/map_test.cc
+++ b/src/google/protobuf/map_test.cc
@@ -190,6 +190,7 @@ TEST_F(MapImplTest, MutableAt) {
ExpectSingleElement(key, value2);
}
+#ifdef PROTOBUF_HAS_DEATH_TEST
TEST_F(MapImplTest, MutableAtNonExistDeathTest) {
EXPECT_DEATH(map_.at(0), "");
}
@@ -197,6 +198,7 @@ TEST_F(MapImplTest, MutableAtNonExistDeathTest) {
TEST_F(MapImplTest, ImmutableAtNonExistDeathTest) {
EXPECT_DEATH(const_map_.at(0), "");
}
+#endif // PROTOBUF_HAS_DEATH_TEST
TEST_F(MapImplTest, CountNonExist) {
EXPECT_EQ(0, map_.count(0));
diff --git a/src/google/protobuf/map_test_util.cc b/src/google/protobuf/map_test_util.cc
index b27c8f19..eb7ea511 100644
--- a/src/google/protobuf/map_test_util.cc
+++ b/src/google/protobuf/map_test_util.cc
@@ -1020,7 +1020,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_int32_int32_key_);
int32 val = sub_message->GetReflection()->GetInt32(
*sub_message, map_int32_int32_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1034,7 +1034,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_int64_int64_key_);
int64 val = sub_message->GetReflection()->GetInt64(
*sub_message, map_int64_int64_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1048,7 +1048,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_uint32_uint32_key_);
uint32 val = sub_message->GetReflection()->GetUInt32(
*sub_message, map_uint32_uint32_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1062,7 +1062,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_uint64_uint64_key_);
uint64 val = sub_message->GetReflection()->GetUInt64(
*sub_message, map_uint64_uint64_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1076,7 +1076,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_sint32_sint32_key_);
int32 val = sub_message->GetReflection()->GetInt32(
*sub_message, map_sint32_sint32_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1090,7 +1090,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_sint64_sint64_key_);
int64 val = sub_message->GetReflection()->GetInt64(
*sub_message, map_sint64_sint64_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1104,7 +1104,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_fixed32_fixed32_key_);
uint32 val = sub_message->GetReflection()->GetUInt32(
*sub_message, map_fixed32_fixed32_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1118,7 +1118,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_fixed64_fixed64_key_);
uint64 val = sub_message->GetReflection()->GetUInt64(
*sub_message, map_fixed64_fixed64_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1132,7 +1132,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_sfixed32_sfixed32_key_);
int32 val = sub_message->GetReflection()->GetInt32(
*sub_message, map_sfixed32_sfixed32_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1146,7 +1146,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_sfixed64_sfixed64_key_);
int64 val = sub_message->GetReflection()->GetInt64(
*sub_message, map_sfixed64_sfixed64_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1160,7 +1160,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_int32_float_key_);
float val = sub_message->GetReflection()->GetFloat(
*sub_message, map_int32_float_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1174,7 +1174,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_int32_double_key_);
double val = sub_message->GetReflection()->GetDouble(
*sub_message, map_int32_double_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1188,7 +1188,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_bool_bool_key_);
bool val = sub_message->GetReflection()->GetBool(
*sub_message, map_bool_bool_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1202,7 +1202,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_string_string_key_);
string val = sub_message->GetReflection()->GetString(
*sub_message, map_string_string_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1216,7 +1216,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_int32_bytes_key_);
string val = sub_message->GetReflection()->GetString(
*sub_message, map_int32_bytes_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1230,7 +1230,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_int32_enum_key_);
const EnumValueDescriptor* val = sub_message->GetReflection()->GetEnum(
*sub_message, map_int32_enum_val_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
{
@@ -1246,7 +1246,7 @@ void MapTestUtil::MapReflectionTester::ExpectMapFieldsSetViaReflection(
*sub_message, map_int32_foreign_message_val_);
int32 val = foreign_message.GetReflection()->GetInt32(
foreign_message, foreign_c_);
- EXPECT_EQ(map.at(key), val);
+ EXPECT_EQ(map[key], val);
}
}
}
diff --git a/src/google/protobuf/message.h b/src/google/protobuf/message.h
index 1d8f2499..a200bc92 100644
--- a/src/google/protobuf/message.h
+++ b/src/google/protobuf/message.h
@@ -967,6 +967,7 @@ const RepeatedField<TYPE>& Reflection::GetRepeatedField<TYPE>( \
const Message& message, const FieldDescriptor* field) const; \
\
template<> \
+LIBPROTOBUF_EXPORT \
RepeatedField<TYPE>* Reflection::MutableRepeatedField<TYPE>( \
Message* message, const FieldDescriptor* field) const;
diff --git a/src/google/protobuf/preserve_unknown_enum_test.cc b/src/google/protobuf/preserve_unknown_enum_test.cc
index 33e9ea10..816e52ca 100644
--- a/src/google/protobuf/preserve_unknown_enum_test.cc
+++ b/src/google/protobuf/preserve_unknown_enum_test.cc
@@ -200,6 +200,7 @@ TEST(PreserveUnknownEnumTest, Proto2CatchesUnknownValues) {
EXPECT_TRUE(enum_value != NULL);
r->AddEnum(&message, repeated_field, enum_value);
+#ifdef PROTOBUF_HAS_DEATH_TEST
// Enum-field integer-based setters GOOGLE_DCHECK-fail on invalid values, in order to
// remain consistent with proto2 generated code.
EXPECT_DEBUG_DEATH({
@@ -214,6 +215,7 @@ TEST(PreserveUnknownEnumTest, Proto2CatchesUnknownValues) {
r->AddEnumValue(&message, repeated_field, 4242);
r->GetRepeatedEnum(message, repeated_field, 1);
}, "AddEnumValue accepts only valid integer values");
+#endif // PROTOBUF_HAS_DEATH_TEST
}
TEST(PreserveUnknownEnumTest, SupportsUnknownEnumValuesAPI) {
diff --git a/src/google/protobuf/repeated_field.h b/src/google/protobuf/repeated_field.h
index e14dcc62..4798eeda 100644
--- a/src/google/protobuf/repeated_field.h
+++ b/src/google/protobuf/repeated_field.h
@@ -236,10 +236,11 @@ class RepeatedField {
Arena* arena;
Element elements[1];
};
- // Why not sizeof(Rep) - sizeof(Element)? Because this is not accurate w.r.t.
- // trailing padding on the struct -- e.g. if Element is int, this would yield
- // 12 on x86-64, not 8 as we want.
- static const size_t kRepHeaderSize = sizeof(Arena*);
+ // We can not use sizeof(Rep) - sizeof(Element) due to the trailing padding on
+ // the struct. We can not use sizeof(Arena*) as well because there might be
+ // a "gap" after the field arena and before the field elements (e.g., when
+ // Element is double and pointer is 32bit).
+ static const size_t kRepHeaderSize;
// Contains arena ptr and the elements array. We also keep the invariant that
// if rep_ is NULL, then arena is NULL.
Rep* rep_;
@@ -263,6 +264,10 @@ class RepeatedField {
}
};
+template<typename Element>
+const size_t RepeatedField<Element>::kRepHeaderSize =
+ reinterpret_cast<size_t>(&reinterpret_cast<Rep*>(16)->elements[0]) - 16;
+
namespace internal {
template <typename It> class RepeatedPtrIterator;
template <typename It, typename VoidPtr> class RepeatedPtrOverPtrsIterator;
diff --git a/src/google/protobuf/repeated_field_reflection.h b/src/google/protobuf/repeated_field_reflection.h
index 42f7be20..44d14d5b 100644
--- a/src/google/protobuf/repeated_field_reflection.h
+++ b/src/google/protobuf/repeated_field_reflection.h
@@ -38,6 +38,8 @@
#include <google/protobuf/stubs/shared_ptr.h>
#endif
+#include <google/protobuf/generated_enum_reflection.h>
+
namespace google {
namespace protobuf {
namespace internal {
@@ -273,7 +275,7 @@ struct RefTypeTraits<
template<typename T>
struct RefTypeTraits<
- T, typename internal::enable_if<internal::is_enum<T>::value>::type> {
+ T, typename internal::enable_if<is_proto_enum<T>::value>::type> {
typedef RepeatedFieldRefIterator<T> iterator;
typedef RepeatedFieldAccessor AccessorType;
// We use int32 for repeated enums in RepeatedFieldAccessor.
diff --git a/src/google/protobuf/repeated_field_reflection_unittest.cc b/src/google/protobuf/repeated_field_reflection_unittest.cc
index ae43dfab..8b821806 100644
--- a/src/google/protobuf/repeated_field_reflection_unittest.cc
+++ b/src/google/protobuf/repeated_field_reflection_unittest.cc
@@ -196,8 +196,7 @@ void TestRepeatedFieldRefIterator(
int index = 0;
for (typename Ref::const_iterator it = handle.begin();
it != handle.end(); ++it) {
- ValueType value = static_cast<ValueType>(*it);
- EXPECT_EQ((message.*GetFunc)(index), value);
+ EXPECT_EQ((message.*GetFunc)(index), *it);
++index;
}
EXPECT_EQ(handle.size(), index);
@@ -410,6 +409,7 @@ TEST(RepeatedFieldReflectionTest, RepeatedFieldRefForRegularFields) {
EXPECT_TRUE(rf_message.empty());
EXPECT_TRUE(mrf_message.empty());
+#ifdef PROTOBUF_HAS_DEATH_TEST
// Make sure types are checked correctly at runtime.
const FieldDescriptor* fd_optional_int32 =
desc->FindFieldByName("optional_int32");
@@ -419,6 +419,7 @@ TEST(RepeatedFieldReflectionTest, RepeatedFieldRefForRegularFields) {
message, fd_repeated_int32), "");
EXPECT_DEATH(refl->GetRepeatedFieldRef<TestAllTypes>(
message, fd_repeated_foreign_message), "");
+#endif // PROTOBUF_HAS_DEATH_TEST
}
TEST(RepeatedFieldReflectionTest, RepeatedFieldRefForEnums) {
diff --git a/src/google/protobuf/repeated_field_unittest.cc b/src/google/protobuf/repeated_field_unittest.cc
index 9942af50..15c0c93e 100644
--- a/src/google/protobuf/repeated_field_unittest.cc
+++ b/src/google/protobuf/repeated_field_unittest.cc
@@ -92,8 +92,8 @@ TEST(RepeatedField, Small) {
EXPECT_TRUE(field.empty());
EXPECT_EQ(field.size(), 0);
- // Additional 8 bytes are for 'struct Rep' header.
- int expected_usage = 4 * sizeof(int) + 8;
+ // Additional bytes are for 'struct Rep' header.
+ int expected_usage = 4 * sizeof(int) + sizeof(Arena*);
EXPECT_EQ(field.SpaceUsedExcludingSelf(), expected_usage);
}
diff --git a/src/google/protobuf/stubs/common.h b/src/google/protobuf/stubs/common.h
index c0cfd414..c3f735a2 100644
--- a/src/google/protobuf/stubs/common.h
+++ b/src/google/protobuf/stubs/common.h
@@ -113,24 +113,24 @@ namespace internal {
// The current version, represented as a single integer to make comparison
// easier: major * 10^6 + minor * 10^3 + micro
-#define GOOGLE_PROTOBUF_VERSION 2006002
+#define GOOGLE_PROTOBUF_VERSION 3000000
// The minimum library version which works with the current version of the
// headers.
-#define GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION 2006000
+#define GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION 3000000
// The minimum header version which works with the current version of
// the library. This constant should only be used by protoc's C++ code
// generator.
-static const int kMinHeaderVersionForLibrary = 2006000;
+static const int kMinHeaderVersionForLibrary = 3000000;
// The minimum protoc version which works with the current version of the
// headers.
-#define GOOGLE_PROTOBUF_MIN_PROTOC_VERSION 2006000
+#define GOOGLE_PROTOBUF_MIN_PROTOC_VERSION 3000000
// The minimum header version which works with the current version of
// protoc. This constant should only be used in VerifyVersion().
-static const int kMinHeaderVersionForProtoc = 2006000;
+static const int kMinHeaderVersionForProtoc = 3000000;
// Verifies that the headers and libraries are compatible. Use the macro
// below to call this.
@@ -314,6 +314,12 @@ inline void GOOGLE_UNALIGNED_STORE64(void *p, uint64 v) {
}
#endif
+#if defined(_MSC_VER)
+#define GOOGLE_THREAD_LOCAL __declspec(thread)
+#else
+#define GOOGLE_THREAD_LOCAL __thread
+#endif
+
// ===================================================================
// from google3/base/basictypes.h
diff --git a/src/google/protobuf/stubs/fastmem.h b/src/google/protobuf/stubs/fastmem.h
index e553f142..763a6e60 100644
--- a/src/google/protobuf/stubs/fastmem.h
+++ b/src/google/protobuf/stubs/fastmem.h
@@ -46,7 +46,6 @@
#define GOOGLE_PROTOBUF_STUBS_FASTMEM_H_
#include <stddef.h>
-#include <stdint.h>
#include <stdio.h>
#include <string.h>
diff --git a/src/google/protobuf/stubs/type_traits.h b/src/google/protobuf/stubs/type_traits.h
index f5365c38..b58cae3f 100644
--- a/src/google/protobuf/stubs/type_traits.h
+++ b/src/google/protobuf/stubs/type_traits.h
@@ -103,7 +103,7 @@ template <class T> struct remove_reference;
template <class T> struct add_reference;
template <class T> struct remove_pointer;
template <class T, class U> struct is_same;
-#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3)
+#if !(defined(__GNUC__) && __GNUC__ <= 3)
template <class From, class To> struct is_convertible;
#endif
@@ -322,7 +322,7 @@ template<typename T, typename U> struct is_same : public false_type { };
template<typename T> struct is_same<T, T> : public true_type { };
// Specified by TR1 [4.6] Relationships between types
-#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3)
+#if !(defined(__GNUC__) && __GNUC__ <= 3)
namespace type_traits_internal {
// This class is an implementation detail for is_convertible, and you
@@ -339,6 +339,9 @@ struct ConvertHelper {
static small_ Test(To);
static big_ Test(...);
static From Create();
+ enum {
+ value = sizeof(Test(Create())) == sizeof(small_)
+ };
};
} // namespace type_traits_internal
@@ -346,9 +349,7 @@ struct ConvertHelper {
template <typename From, typename To>
struct is_convertible
: integral_constant<bool,
- sizeof(type_traits_internal::ConvertHelper<From, To>::Test(
- type_traits_internal::ConvertHelper<From, To>::Create()))
- == sizeof(small_)> {
+ type_traits_internal::ConvertHelper<From, To>::value> {
};
#endif
diff --git a/src/google/protobuf/stubs/type_traits_unittest.cc b/src/google/protobuf/stubs/type_traits_unittest.cc
index b42b9e83..49c10ace 100644
--- a/src/google/protobuf/stubs/type_traits_unittest.cc
+++ b/src/google/protobuf/stubs/type_traits_unittest.cc
@@ -610,7 +610,7 @@ TEST(TypeTraitsTest, TestIsSame) {
}
TEST(TypeTraitsTest, TestConvertible) {
-#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3)
+#if !(defined(__GNUC__) && __GNUC__ <= 3)
EXPECT_TRUE((is_convertible<int, int>::value));
EXPECT_TRUE((is_convertible<int, long>::value));
EXPECT_TRUE((is_convertible<long, int>::value));
diff --git a/src/google/protobuf/unknown_field_set_unittest.cc b/src/google/protobuf/unknown_field_set_unittest.cc
index 6bba8fc7..9b02f0b0 100644
--- a/src/google/protobuf/unknown_field_set_unittest.cc
+++ b/src/google/protobuf/unknown_field_set_unittest.cc
@@ -485,7 +485,7 @@ TEST_F(UnknownFieldSetTest, UnknownEnumValue) {
TEST_F(UnknownFieldSetTest, SpaceUsedExcludingSelf) {
UnknownFieldSet empty;
empty.AddVarint(1, 0);
- EXPECT_EQ(/* vector<UnknownField> */ 24 + /* sizeof(UnknownField) */ 16,
+ EXPECT_EQ(sizeof(vector<UnknownField>) + sizeof(UnknownField),
empty.SpaceUsedExcludingSelf());
}
diff --git a/vsprojects/extract_includes.bat b/vsprojects/extract_includes.bat
index beab8c4a..587c1a8a 100755
--- a/vsprojects/extract_includes.bat
+++ b/vsprojects/extract_includes.bat
@@ -7,44 +7,72 @@ md include\google\protobuf\compiler
md include\google\protobuf\compiler\cpp
md include\google\protobuf\compiler\java
md include\google\protobuf\compiler\python
-copy ..\src\google\protobuf\stubs\atomicops.h include\google\protobuf\stubs\atomicops.h
-copy ..\src\google\protobuf\stubs\atomicops_internals_x86_msvc.h include\google\protobuf\stubs\atomicops_internals_x86_msvc.h
-copy ..\src\google\protobuf\stubs\common.h include\google\protobuf\stubs\common.h
-copy ..\src\google\protobuf\stubs\once.h include\google\protobuf\stubs\once.h
-copy ..\src\google\protobuf\stubs\platform_macros.h include\google\protobuf\stubs\platform_macros.h
-copy ..\src\google\protobuf\stubs\template_util.h include\google\protobuf\stubs\template_util.h
-copy ..\src\google\protobuf\stubs\type_traits.h include\google\protobuf\stubs\type_traits.h
+copy ..\src\google\protobuf\arena.h include\google\protobuf\arena.h
+copy ..\src\google\protobuf\arenastring.h include\google\protobuf\arenastring.h
+copy ..\src\google\protobuf\compiler\code_generator.h include\google\protobuf\compiler\code_generator.h
+copy ..\src\google\protobuf\compiler\command_line_interface.h include\google\protobuf\compiler\command_line_interface.h
+copy ..\src\google\protobuf\compiler\cpp\cpp_generator.h include\google\protobuf\compiler\cpp\cpp_generator.h
+copy ..\src\google\protobuf\compiler\importer.h include\google\protobuf\compiler\importer.h
+copy ..\src\google\protobuf\compiler\java\java_generator.h include\google\protobuf\compiler\java\java_generator.h
+copy ..\src\google\protobuf\compiler\parser.h include\google\protobuf\compiler\parser.h
+copy ..\src\google\protobuf\compiler\plugin.h include\google\protobuf\compiler\plugin.h
+copy ..\src\google\protobuf\compiler\plugin.pb.h include\google\protobuf\compiler\plugin.pb.h
+copy ..\src\google\protobuf\compiler\python\python_generator.h include\google\protobuf\compiler\python\python_generator.h
+copy ..\src\google\protobuf\descriptor_database.h include\google\protobuf\descriptor_database.h
copy ..\src\google\protobuf\descriptor.h include\google\protobuf\descriptor.h
copy ..\src\google\protobuf\descriptor.pb.h include\google\protobuf\descriptor.pb.h
-copy ..\src\google\protobuf\descriptor_database.h include\google\protobuf\descriptor_database.h
copy ..\src\google\protobuf\dynamic_message.h include\google\protobuf\dynamic_message.h
copy ..\src\google\protobuf\extension_set.h include\google\protobuf\extension_set.h
copy ..\src\google\protobuf\generated_enum_reflection.h include\google\protobuf\generated_enum_reflection.h
-copy ..\src\google\protobuf\generated_message_util.h include\google\protobuf\generated_message_util.h
copy ..\src\google\protobuf\generated_message_reflection.h include\google\protobuf\generated_message_reflection.h
+copy ..\src\google\protobuf\generated_message_util.h include\google\protobuf\generated_message_util.h
+copy ..\src\google\protobuf\io\coded_stream.h include\google\protobuf\io\coded_stream.h
+copy ..\src\google\protobuf\io\gzip_stream.h include\google\protobuf\io\gzip_stream.h
+copy ..\src\google\protobuf\io\printer.h include\google\protobuf\io\printer.h
+copy ..\src\google\protobuf\io\strtod.h include\google\protobuf\io\strtod.h
+copy ..\src\google\protobuf\io\tokenizer.h include\google\protobuf\io\tokenizer.h
+copy ..\src\google\protobuf\io\zero_copy_stream.h include\google\protobuf\io\zero_copy_stream.h
+copy ..\src\google\protobuf\io\zero_copy_stream_impl.h include\google\protobuf\io\zero_copy_stream_impl.h
+copy ..\src\google\protobuf\io\zero_copy_stream_impl_lite.h include\google\protobuf\io\zero_copy_stream_impl_lite.h
+copy ..\src\google\protobuf\map_entry.h include\google\protobuf\map_entry.h
+copy ..\src\google\protobuf\map_field.h include\google\protobuf\map_field.h
+copy ..\src\google\protobuf\map_field_inl.h include\google\protobuf\map_field_inl.h
+copy ..\src\google\protobuf\map.h include\google\protobuf\map.h
+copy ..\src\google\protobuf\map_type_handler.h include\google\protobuf\map_type_handler.h
copy ..\src\google\protobuf\message.h include\google\protobuf\message.h
copy ..\src\google\protobuf\message_lite.h include\google\protobuf\message_lite.h
+copy ..\src\google\protobuf\metadata.h include\google\protobuf\metadata.h
+copy ..\src\google\protobuf\reflection.h include\google\protobuf\reflection.h
copy ..\src\google\protobuf\reflection_ops.h include\google\protobuf\reflection_ops.h
copy ..\src\google\protobuf\repeated_field.h include\google\protobuf\repeated_field.h
+copy ..\src\google\protobuf\repeated_field_reflection.h include\google\protobuf\repeated_field_reflection.h
copy ..\src\google\protobuf\service.h include\google\protobuf\service.h
+copy ..\src\google\protobuf\stubs\atomicops.h include\google\protobuf\stubs\atomicops.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_aix.h include\google\protobuf\stubs\atomicops_internals_aix.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_arm64_gcc.h include\google\protobuf\stubs\atomicops_internals_arm64_gcc.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_arm_gcc.h include\google\protobuf\stubs\atomicops_internals_arm_gcc.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_arm_qnx.h include\google\protobuf\stubs\atomicops_internals_arm_qnx.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_atomicword_compat.h include\google\protobuf\stubs\atomicops_internals_atomicword_compat.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_generic_gcc.h include\google\protobuf\stubs\atomicops_internals_generic_gcc.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_macosx.h include\google\protobuf\stubs\atomicops_internals_macosx.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_mips_gcc.h include\google\protobuf\stubs\atomicops_internals_mips_gcc.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_pnacl.h include\google\protobuf\stubs\atomicops_internals_pnacl.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_solaris.h include\google\protobuf\stubs\atomicops_internals_solaris.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_tsan.h include\google\protobuf\stubs\atomicops_internals_tsan.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_x86_gcc.h include\google\protobuf\stubs\atomicops_internals_x86_gcc.h
+copy ..\src\google\protobuf\stubs\atomicops_internals_x86_msvc.h include\google\protobuf\stubs\atomicops_internals_x86_msvc.h
+copy ..\src\google\protobuf\stubs\atomic_sequence_num.h include\google\protobuf\stubs\atomic_sequence_num.h
+copy ..\src\google\protobuf\stubs\casts.h include\google\protobuf\stubs\casts.h
+copy ..\src\google\protobuf\stubs\common.h include\google\protobuf\stubs\common.h
+copy ..\src\google\protobuf\stubs\fastmem.h include\google\protobuf\stubs\fastmem.h
+copy ..\src\google\protobuf\stubs\once.h include\google\protobuf\stubs\once.h
+copy ..\src\google\protobuf\stubs\platform_macros.h include\google\protobuf\stubs\platform_macros.h
+copy ..\src\google\protobuf\stubs\singleton.h include\google\protobuf\stubs\singleton.h
+copy ..\src\google\protobuf\stubs\stl_util.h include\google\protobuf\stubs\stl_util.h
+copy ..\src\google\protobuf\stubs\template_util.h include\google\protobuf\stubs\template_util.h
+copy ..\src\google\protobuf\stubs\type_traits.h include\google\protobuf\stubs\type_traits.h
copy ..\src\google\protobuf\text_format.h include\google\protobuf\text_format.h
copy ..\src\google\protobuf\unknown_field_set.h include\google\protobuf\unknown_field_set.h
copy ..\src\google\protobuf\wire_format.h include\google\protobuf\wire_format.h
copy ..\src\google\protobuf\wire_format_lite.h include\google\protobuf\wire_format_lite.h
copy ..\src\google\protobuf\wire_format_lite_inl.h include\google\protobuf\wire_format_lite_inl.h
-copy ..\src\google\protobuf\io\coded_stream.h include\google\protobuf\io\coded_stream.h
-copy ..\src\google\protobuf\io\gzip_stream.h include\google\protobuf\io\gzip_stream.h
-copy ..\src\google\protobuf\io\printer.h include\google\protobuf\io\printer.h
-copy ..\src\google\protobuf\io\strtod.h include\google\protobuf\io\strtod.h
-copy ..\src\google\protobuf\io\tokenizer.h include\google\protobuf\io\tokenizer.h
-copy ..\src\google\protobuf\io\zero_copy_stream.h include\google\protobuf\io\zero_copy_stream.h
-copy ..\src\google\protobuf\io\zero_copy_stream_impl.h include\google\protobuf\io\zero_copy_stream_impl.h
-copy ..\src\google\protobuf\io\zero_copy_stream_impl_lite.h include\google\protobuf\io\zero_copy_stream_impl_lite.h
-copy ..\src\google\protobuf\compiler\code_generator.h include\google\protobuf\compiler\code_generator.h
-copy ..\src\google\protobuf\compiler\command_line_interface.h include\google\protobuf\compiler\command_line_interface.h
-copy ..\src\google\protobuf\compiler\importer.h include\google\protobuf\compiler\importer.h
-copy ..\src\google\protobuf\compiler\parser.h include\google\protobuf\compiler\parser.h
-copy ..\src\google\protobuf\compiler\cpp\cpp_generator.h include\google\protobuf\compiler\cpp\cpp_generator.h
-copy ..\src\google\protobuf\compiler\java\java_generator.h include\google\protobuf\compiler\java\java_generator.h
-copy ..\src\google\protobuf\compiler\python\python_generator.h include\google\protobuf\compiler\python\python_generator.h
-copy ..\src\google\protobuf\compiler\plugin.h include\google\protobuf\compiler\plugin.h
diff --git a/vsprojects/libprotobuf-lite.vcproj b/vsprojects/libprotobuf-lite.vcproj
index 06b15988..09eca4d8 100644
--- a/vsprojects/libprotobuf-lite.vcproj
+++ b/vsprojects/libprotobuf-lite.vcproj
@@ -18,7 +18,7 @@
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
- IntermediateDirectory="Debug"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="4"
>
<Tool
@@ -81,7 +81,7 @@
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
- IntermediateDirectory="Release"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="4"
>
<Tool
@@ -248,7 +248,11 @@
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
- RelativePath="..\src\google\protobuf\io\coded_stream.cc"
+ RelativePath="..\src\google\protobuf\stubs\atomicops_internals_x86_gcc.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\stubs\atomicops_internals_x86_msvc.cc"
>
</File>
<File
@@ -256,23 +260,31 @@
>
</File>
<File
- RelativePath="..\src\google\protobuf\extension_set.cc"
+ RelativePath="..\src\google\protobuf\stubs\once.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\generated_message_util.cc"
+ RelativePath="..\src\google\protobuf\stubs\stringprintf.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\message_lite.cc"
+ RelativePath="..\src\google\protobuf\arena.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\once.cc"
+ RelativePath="..\src\google\protobuf\arenastring.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\atomicops_internals_x86_msvc.cc"
+ RelativePath="..\src\google\protobuf\extension_set.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\generated_message_util.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\message_lite.cc"
>
</File>
<File
@@ -284,15 +296,15 @@
>
</File>
<File
- RelativePath="..\src\google\protobuf\io\zero_copy_stream.cc"
+ RelativePath="..\src\google\protobuf\io\coded_stream.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\io\zero_copy_stream_impl_lite.cc"
+ RelativePath="..\src\google\protobuf\io\zero_copy_stream.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\stringprintf.cc"
+ RelativePath="..\src\google\protobuf\io\zero_copy_stream_impl_lite.cc"
>
</File>
</Filter>
diff --git a/vsprojects/libprotobuf.vcproj b/vsprojects/libprotobuf.vcproj
index 1a488f7d..095d3948 100644
--- a/vsprojects/libprotobuf.vcproj
+++ b/vsprojects/libprotobuf.vcproj
@@ -18,7 +18,7 @@
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
- IntermediateDirectory="Debug"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="4"
>
<Tool
@@ -81,7 +81,7 @@
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
- IntermediateDirectory="Release"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="4"
>
<Tool
@@ -328,7 +328,11 @@
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
- RelativePath="..\src\google\protobuf\io\coded_stream.cc"
+ RelativePath="..\src\google\protobuf\stubs\atomicops_internals_x86_gcc.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\stubs\atomicops_internals_x86_msvc.cc"
>
</File>
<File
@@ -336,19 +340,19 @@
>
</File>
<File
- RelativePath="..\src\google\protobuf\descriptor.cc"
+ RelativePath="..\src\google\protobuf\stubs\once.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\descriptor.pb.cc"
+ RelativePath="..\src\google\protobuf\stubs\stringprintf.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\descriptor_database.cc"
+ RelativePath="..\src\google\protobuf\arena.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\dynamic_message.cc"
+ RelativePath="..\src\google\protobuf\arenastring.cc"
>
</File>
<File
@@ -356,83 +360,99 @@
>
</File>
<File
- RelativePath="..\src\google\protobuf\extension_set_heavy.cc"
+ RelativePath="..\src\google\protobuf\generated_message_util.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\generated_message_reflection.cc"
+ RelativePath="..\src\google\protobuf\map_field.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\generated_message_util.cc"
+ RelativePath="..\src\google\protobuf\message_lite.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\io\gzip_stream.cc"
+ RelativePath="..\src\google\protobuf\repeated_field.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\io\strtod.cc"
+ RelativePath="..\src\google\protobuf\wire_format_lite.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\compiler\importer.cc"
+ RelativePath="..\src\google\protobuf\io\coded_stream.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\message.cc"
+ RelativePath="..\src\google\protobuf\io\zero_copy_stream.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\message_lite.cc"
+ RelativePath="..\src\google\protobuf\io\zero_copy_stream_impl_lite.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\once.cc"
+ RelativePath="..\src\google\protobuf\stubs\strutil.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\atomicops_internals_x86_msvc.cc"
+ RelativePath="..\src\google\protobuf\stubs\strutil.h"
>
</File>
<File
- RelativePath="..\src\google\protobuf\compiler\parser.cc"
+ RelativePath="..\src\google\protobuf\stubs\substitute.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\io\printer.cc"
+ RelativePath="..\src\google\protobuf\stubs\substitute.h"
>
</File>
<File
- RelativePath="..\src\google\protobuf\reflection_ops.cc"
+ RelativePath="..\src\google\protobuf\stubs\structurally_valid.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\repeated_field.cc"
+ RelativePath="..\src\google\protobuf\descriptor.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\service.cc"
+ RelativePath="..\src\google\protobuf\descriptor_database.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\structurally_valid.cc"
+ RelativePath="..\src\google\protobuf\descriptor.pb.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\strutil.cc"
+ RelativePath="..\src\google\protobuf\dynamic_message.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\substitute.cc"
+ RelativePath="..\src\google\protobuf\extension_set_heavy.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\text_format.cc"
+ RelativePath="..\src\google\protobuf\generated_message_reflection.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\io\tokenizer.cc"
+ RelativePath="..\src\google\protobuf\message.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\reflection_internal.h"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\reflection_ops.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\service.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\text_format.cc"
>
</File>
<File
@@ -444,11 +464,19 @@
>
</File>
<File
- RelativePath="..\src\google\protobuf\wire_format_lite.cc"
+ RelativePath="..\src\google\protobuf\io\gzip_stream.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\io\zero_copy_stream.cc"
+ RelativePath="..\src\google\protobuf\io\printer.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\io\strtod.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\io\tokenizer.cc"
>
</File>
<File
@@ -456,11 +484,11 @@
>
</File>
<File
- RelativePath="..\src\google\protobuf\io\zero_copy_stream_impl_lite.cc"
+ RelativePath="..\src\google\protobuf\compiler\importer.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\stringprintf.cc"
+ RelativePath="..\src\google\protobuf\compiler\parser.cc"
>
</File>
</Filter>
diff --git a/vsprojects/libprotoc.vcproj b/vsprojects/libprotoc.vcproj
index ccbc0b36..45a5936f 100644
--- a/vsprojects/libprotoc.vcproj
+++ b/vsprojects/libprotoc.vcproj
@@ -18,7 +18,7 @@
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
- IntermediateDirectory="Debug"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="4"
>
<Tool
@@ -81,7 +81,7 @@
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
- IntermediateDirectory="Release"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="4"
>
<Tool
@@ -324,22 +324,6 @@
>
</File>
<File
- RelativePath="..\src\google\protobuf\compiler\subprocess.cc"
- >
- </File>
- <File
- RelativePath="..\src\google\protobuf\compiler\zip_writer.cc"
- >
- </File>
- <File
- RelativePath="..\src\google\protobuf\compiler\plugin.cc"
- >
- </File>
- <File
- RelativePath="..\src\google\protobuf\compiler\plugin.pb.cc"
- >
- </File>
- <File
RelativePath="..\src\google\protobuf\compiler\cpp\cpp_enum.cc"
>
</File>
@@ -368,6 +352,10 @@
>
</File>
<File
+ RelativePath="..\src\google\protobuf\compiler\cpp\cpp_map_field.cc"
+ >
+ </File>
+ <File
RelativePath="..\src\google\protobuf\compiler\cpp\cpp_message.cc"
>
</File>
@@ -392,6 +380,10 @@
>
</File>
<File
+ RelativePath="..\src\google\protobuf\compiler\java\java_doc_comment.cc"
+ >
+ </File>
+ <File
RelativePath="..\src\google\protobuf\compiler\java\java_enum.cc"
>
</File>
@@ -428,6 +420,10 @@
>
</File>
<File
+ RelativePath="..\src\google\protobuf\compiler\java\java_map_field.cc"
+ >
+ </File>
+ <File
RelativePath="..\src\google\protobuf\compiler\java\java_message.cc"
>
</File>
@@ -456,9 +452,65 @@
>
</File>
<File
+ RelativePath="..\src\google\protobuf\compiler\javanano\javanano_enum.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\javanano\javanano_enum_field.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\javanano\javanano_extension.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\javanano\javanano_field.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\javanano\javanano_file.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\javanano\javanano_generator.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\javanano\javanano_helpers.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\javanano\javanano_message.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\javanano\javanano_message_field.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\javanano\javanano_primitive_field.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\plugin.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\plugin.pb.cc"
+ >
+ </File>
+ <File
RelativePath="..\src\google\protobuf\compiler\python\python_generator.cc"
>
</File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\subprocess.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\zip_writer.cc"
+ >
+ </File>
</Filter>
</Files>
<Globals>
diff --git a/vsprojects/lite-test.vcproj b/vsprojects/lite-test.vcproj
index 0314b36d..bb338092 100644
--- a/vsprojects/lite-test.vcproj
+++ b/vsprojects/lite-test.vcproj
@@ -19,7 +19,7 @@
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
- IntermediateDirectory="Debug"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="1"
>
<Tool
@@ -96,7 +96,7 @@
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
- IntermediateDirectory="Release"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="1"
>
<Tool
diff --git a/vsprojects/protoc.vcproj b/vsprojects/protoc.vcproj
index 17e8474e..4359e238 100644
--- a/vsprojects/protoc.vcproj
+++ b/vsprojects/protoc.vcproj
@@ -18,7 +18,7 @@
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
- IntermediateDirectory="Debug"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="1"
>
<Tool
@@ -91,7 +91,7 @@
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
- IntermediateDirectory="Release"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="1"
>
<Tool
diff --git a/vsprojects/test_plugin.vcproj b/vsprojects/test_plugin.vcproj
index 2dcf2ad6..549f9503 100755
--- a/vsprojects/test_plugin.vcproj
+++ b/vsprojects/test_plugin.vcproj
@@ -19,7 +19,7 @@
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
- IntermediateDirectory="Debug"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="1"
>
<Tool
@@ -96,7 +96,7 @@
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
- IntermediateDirectory="Release"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="1"
>
<Tool
diff --git a/vsprojects/tests.vcproj b/vsprojects/tests.vcproj
index fb815b5a..23c81f0e 100644
--- a/vsprojects/tests.vcproj
+++ b/vsprojects/tests.vcproj
@@ -19,7 +19,7 @@
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
- IntermediateDirectory="Debug"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="1"
>
<Tool
@@ -96,7 +96,7 @@
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
- IntermediateDirectory="Release"
+ IntermediateDirectory="$(OutDir)\$(ProjectName)"
ConfigurationType="1"
>
<Tool
@@ -247,23 +247,23 @@
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
- RelativePath="..\src\google\protobuf\io\coded_stream_unittest.cc"
+ RelativePath="..\src\google\protobuf\arenastring_unittest.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\compiler\command_line_interface_unittest.cc"
+ RelativePath="..\src\google\protobuf\arena_unittest.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\compiler\mock_code_generator.cc"
+ RelativePath="..\src\google\protobuf\compiler\command_line_interface_unittest.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\common_unittest.cc"
+ RelativePath="..\src\google\protobuf\compiler\cpp\cpp_bootstrap_unittest.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\compiler\cpp\cpp_bootstrap_unittest.cc"
+ RelativePath="..\src\google\protobuf\compiler\cpp\cpp_plugin_unittest.cc"
>
</File>
<File
@@ -271,23 +271,23 @@
>
</File>
<File
- RelativePath=".\google\protobuf\compiler\cpp\cpp_test_bad_identifiers.pb.cc"
+ RelativePath="..\src\google\protobuf\compiler\importer_unittest.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\compiler\cpp\cpp_unittest.cc"
+ RelativePath="..\src\google\protobuf\compiler\java\java_doc_comment_unittest.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\compiler\cpp\cpp_plugin_unittest.cc"
+ RelativePath="..\src\google\protobuf\compiler\java\java_plugin_unittest.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\compiler\java\java_plugin_unittest.cc"
+ RelativePath="..\src\google\protobuf\compiler\mock_code_generator.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\compiler\java\java_doc_comment_unittest.cc"
+ RelativePath="..\src\google\protobuf\compiler\parser_unittest.cc"
>
</File>
<File
@@ -303,6 +303,10 @@
>
</File>
<File
+ RelativePath="..\src\google\protobuf\drop_unknown_fields_test.cc"
+ >
+ </File>
+ <File
RelativePath="..\src\google\protobuf\dynamic_message_unittest.cc"
>
</File>
@@ -311,19 +315,35 @@
>
</File>
<File
- RelativePath="..\src\google\protobuf\testing\file.cc"
+ RelativePath="..\src\google\protobuf\generated_message_reflection_unittest.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\generated_message_reflection_unittest.cc"
+ RelativePath="..\src\google\protobuf\io\coded_stream_unittest.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\testing\googletest.cc"
+ RelativePath="..\src\google\protobuf\io\printer_unittest.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\compiler\importer_unittest.cc"
+ RelativePath="..\src\google\protobuf\io\tokenizer_unittest.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\io\zero_copy_stream_unittest.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\map_field_test.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\map_test.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\map_test_util.cc"
>
</File>
<File
@@ -331,15 +351,15 @@
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\once_unittest.cc"
+ RelativePath="..\src\google\protobuf\no_field_presence_test.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\compiler\parser_unittest.cc"
+ RelativePath="..\src\google\protobuf\preserve_unknown_enum_test.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\io\printer_unittest.cc"
+ RelativePath="..\src\google\protobuf\proto3_arena_unittest.cc"
>
</File>
<File
@@ -347,15 +367,19 @@
>
</File>
<File
+ RelativePath="..\src\google\protobuf\repeated_field_reflection_unittest.cc"
+ >
+ </File>
+ <File
RelativePath="..\src\google\protobuf\repeated_field_unittest.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\repeated_field_reflection_unittest.cc"
+ RelativePath="..\src\google\protobuf\stubs\common_unittest.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\structurally_valid_unittest.cc"
+ RelativePath="..\src\google\protobuf\stubs\once_unittest.cc"
>
</File>
<File
@@ -363,6 +387,14 @@
>
</File>
<File
+ RelativePath="..\src\google\protobuf\stubs\structurally_valid_unittest.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\stubs\strutil_unittest.cc"
+ >
+ </File>
+ <File
RelativePath="..\src\google\protobuf\stubs\template_util_unittest.cc"
>
</File>
@@ -371,7 +403,11 @@
>
</File>
<File
- RelativePath="..\src\google\protobuf\stubs\strutil_unittest.cc"
+ RelativePath="..\src\google\protobuf\testing\file.cc"
+ >
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\testing\googletest.cc"
>
</File>
<File
@@ -383,11 +419,31 @@
>
</File>
<File
- RelativePath="..\src\google\protobuf\io\tokenizer_unittest.cc"
+ RelativePath="..\src\google\protobuf\unknown_field_set_unittest.cc"
>
</File>
<File
- RelativePath=".\google\protobuf\unittest.pb.cc"
+ RelativePath="..\src\google\protobuf\wire_format_unittest.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google\protobuf\compiler\cpp\cpp_test_bad_identifiers.pb.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google\protobuf\map_lite_unittest.pb.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google\protobuf\map_proto2_unittest.pb.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google\protobuf\map_unittest.pb.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google\protobuf\unittest_arena.pb.cc"
>
</File>
<File
@@ -395,14 +451,30 @@
>
</File>
<File
+ RelativePath=".\google\protobuf\unittest_drop_unknown_fields.pb.cc"
+ >
+ </File>
+ <File
RelativePath=".\google\protobuf\unittest_embed_optimize_for.pb.cc"
>
</File>
<File
+ RelativePath=".\google\protobuf\unittest_empty.pb.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google\protobuf\unittest_import_lite.pb.cc"
+ >
+ </File>
+ <File
RelativePath=".\google\protobuf\unittest_import.pb.cc"
>
</File>
<File
+ RelativePath=".\google\protobuf\unittest_import_public_lite.pb.cc"
+ >
+ </File>
+ <File
RelativePath=".\google\protobuf\unittest_import_public.pb.cc"
>
</File>
@@ -411,11 +483,23 @@
>
</File>
<File
+ RelativePath=".\google\protobuf\unittest_lite.pb.cc"
+ >
+ </File>
+ <File
RelativePath=".\google\protobuf\unittest_mset.pb.cc"
>
</File>
<File
- RelativePath=".\google\protobuf\unittest_optimize_for.pb.cc"
+ RelativePath=".\google\protobuf\unittest_no_arena_import.pb.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google\protobuf\unittest_no_arena.pb.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google\protobuf\unittest_no_field_presence.pb.cc"
>
</File>
<File
@@ -423,29 +507,33 @@
>
</File>
<File
- RelativePath="..\src\google\protobuf\unknown_field_set_unittest.cc"
+ RelativePath=".\google\protobuf\unittest_optimize_for.pb.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\wire_format_unittest.cc"
+ RelativePath=".\google\protobuf\unittest.pb.cc"
>
</File>
<File
- RelativePath="..\src\google\protobuf\io\zero_copy_stream_unittest.cc"
+ RelativePath=".\google\protobuf\unittest_preserve_unknown_enum.pb.cc"
+ >
+ </File>
+ <File
+ RelativePath=".\google\protobuf\unittest_proto3_arena.pb.cc"
>
</File>
</Filter>
<File
- RelativePath="..\src\google\protobuf\compiler\cpp\cpp_test_bad_identifiers.proto"
+ RelativePath="..\src\google\protobuf\map_lite_unittest.proto"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
- Description="Generating cpp_test_bad_identifiers.pb.{h,cc}..."
- CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto&#x0D;&#x0A;"
- Outputs="google\protobuf\compiler\cpp\cpp_test_bad_identifiers.pb.h;google\protobuf\compiler\cpp\cpp_test_bad_identifiers.pb.cc"
+ Description="Generating map_lite_unittest.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/map_lite_unittest.proto"
+ Outputs="google\protobuf\map_lite_unittest.pb.h;google\protobuf\map_lite_unittest.pb.cc"
/>
</FileConfiguration>
<FileConfiguration
@@ -453,9 +541,57 @@
>
<Tool
Name="VCCustomBuildTool"
- Description="Generating cpp_test_bad_identifiers.pb.{h,cc}..."
- CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto&#x0D;&#x0A;"
- Outputs="google\protobuf\compiler\cpp\cpp_test_bad_identifiers.pb.h;google\protobuf\compiler\cpp\cpp_test_bad_identifiers.pb.cc"
+ Description="Generating map_lite_unittest.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/map_lite_unittest.proto"
+ Outputs="google\protobuf\map_lite_unittest.pb.h;google\protobuf\map_lite_unittest.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\map_proto2_unittest.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating map_proto2_unittest.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/map_proto2_unittest.proto"
+ Outputs="google\protobuf\map_proto2_unittest.pb.h;google\protobuf\map_proto2_unittest.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating map_proto2_unittest.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/map_proto2_unittest.proto"
+ Outputs="google\protobuf\map_proto2_unittest.pb.h;google\protobuf\map_proto2_unittest.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\map_unittest.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating map_unittest.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/map_unittest.proto"
+ Outputs="google\protobuf\map_unittest.pb.h;google\protobuf\map_unittest.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating map_unittest.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/map_unittest.proto"
+ Outputs="google\protobuf\map_unittest.pb.h;google\protobuf\map_unittest.pb.cc"
/>
</FileConfiguration>
</File>
@@ -468,7 +604,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest.pb.{h,cc}..."
- CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest.proto&#x0D;&#x0A;"
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest.proto"
Outputs="google\protobuf\unittest.pb.h;google\protobuf\unittest.pb.cc"
/>
</FileConfiguration>
@@ -478,12 +614,36 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest.pb.{h,cc}..."
- CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest.proto&#x0D;&#x0A;"
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest.proto"
Outputs="google\protobuf\unittest.pb.h;google\protobuf\unittest.pb.cc"
/>
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\google\protobuf\unittest_arena.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_arena.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_arena.proto"
+ Outputs="google\protobuf\unittest_arena.pb.h;google\protobuf\unittest_arena.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_arena.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_arena.proto"
+ Outputs="google\protobuf\unittest_arena.pb.h;google\protobuf\unittest_arena.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\src\google\protobuf\unittest_custom_options.proto"
>
<FileConfiguration
@@ -492,7 +652,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_custom_options.pb.{h,cc}..."
- CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_custom_options.proto&#x0D;&#x0A;"
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_custom_options.proto"
Outputs="google\protobuf\unittest_custom_options.pb.h;google\protobuf\unittest_custom_options.pb.cc"
/>
</FileConfiguration>
@@ -502,12 +662,36 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_custom_options.pb.{h,cc}..."
- CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_custom_options.proto&#x0D;&#x0A;"
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_custom_options.proto"
Outputs="google\protobuf\unittest_custom_options.pb.h;google\protobuf\unittest_custom_options.pb.cc"
/>
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\google\protobuf\unittest_drop_unknown_fields.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_drop_unknown_fields.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_drop_unknown_fields.proto"
+ Outputs="google\protobuf\unittest_drop_unknown_fields.pb.h;google\protobuf\unittest_drop_unknown_fields.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_drop_unknown_fields.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_drop_unknown_fields.proto"
+ Outputs="google\protobuf\unittest_drop_unknown_fields.pb.h;google\protobuf\unittest_drop_unknown_fields.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\src\google\protobuf\unittest_embed_optimize_for.proto"
>
<FileConfiguration
@@ -516,7 +700,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_embed_optimize_for.pb.{h,cc}..."
- CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_embed_optimize_for.proto&#x0D;&#x0A;"
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_embed_optimize_for.proto"
Outputs="google\protobuf\unittest_embed_optimize_for.pb.h;google\protobuf\unittest_embed_optimize_for.pb.cc"
/>
</FileConfiguration>
@@ -526,12 +710,60 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_embed_optimize_for.pb.{h,cc}..."
- CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_embed_optimize_for.proto&#x0D;&#x0A;"
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_embed_optimize_for.proto"
Outputs="google\protobuf\unittest_embed_optimize_for.pb.h;google\protobuf\unittest_embed_optimize_for.pb.cc"
/>
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\google\protobuf\unittest_empty.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_empty.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_empty.proto"
+ Outputs="google\protobuf\unittest_empty.pb.h;google\protobuf\unittest_empty.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_empty.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_empty.proto"
+ Outputs="google\protobuf\unittest_empty.pb.h;google\protobuf\unittest_empty.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\unittest_import_lite.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_import_lite.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_import_lite.proto"
+ Outputs="google\protobuf\unittest_import_lite.pb.h;google\protobuf\unittest_import_lite.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_import_lite.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_import_lite.proto"
+ Outputs="google\protobuf\unittest_import_lite.pb.h;google\protobuf\unittest_import_lite.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\src\google\protobuf\unittest_import.proto"
>
<FileConfiguration
@@ -540,7 +772,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_import.pb.{h,cc}..."
- CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_import.proto&#x0D;&#x0A;"
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_import.proto"
Outputs="google\protobuf\unittest_import.pb.h;google\protobuf\unittest_import.pb.cc"
/>
</FileConfiguration>
@@ -550,12 +782,36 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_import.pb.{h,cc}..."
- CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_import.proto&#x0D;&#x0A;"
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_import.proto"
Outputs="google\protobuf\unittest_import.pb.h;google\protobuf\unittest_import.pb.cc"
/>
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\google\protobuf\unittest_import_public_lite.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_import_public_lite.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_import_public_lite.proto"
+ Outputs="google\protobuf\unittest_import_public_lite.pb.h;google\protobuf\unittest_import_public_lite.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_import_public_lite.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_import_public_lite.proto"
+ Outputs="google\protobuf\unittest_import_public_lite.pb.h;google\protobuf\unittest_import_public_lite.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\src\google\protobuf\unittest_import_public.proto"
>
<FileConfiguration
@@ -564,7 +820,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_import_public.pb.{h,cc}..."
- CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_import_public.proto&#x0D;&#x0A;"
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_import_public.proto"
Outputs="google\protobuf\unittest_import_public.pb.h;google\protobuf\unittest_import_public.pb.cc"
/>
</FileConfiguration>
@@ -574,7 +830,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_import_public.pb.{h,cc}..."
- CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_import_public.proto&#x0D;&#x0A;"
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_import_public.proto"
Outputs="google\protobuf\unittest_import_public.pb.h;google\protobuf\unittest_import_public.pb.cc"
/>
</FileConfiguration>
@@ -588,7 +844,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_lite_imports_nonlite.pb.{h,cc}..."
- CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_lite_imports_nonlite.proto&#x0D;&#x0A;"
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_lite_imports_nonlite.proto"
Outputs="google\protobuf\unittest_lite_imports_nonlite.pb.h;google\protobuf\unittest_lite_imports_nonlite.pb.cc"
/>
</FileConfiguration>
@@ -598,12 +854,36 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_lite_imports_nonlite.pb.{h,cc}..."
- CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_lite_imports_nonlite.proto&#x0D;&#x0A;"
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_lite_imports_nonlite.proto"
Outputs="google\protobuf\unittest_lite_imports_nonlite.pb.h;google\protobuf\unittest_lite_imports_nonlite.pb.cc"
/>
</FileConfiguration>
</File>
<File
+ RelativePath="..\src\google\protobuf\unittest_lite.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_lite.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_lite.proto"
+ Outputs="google\protobuf\unittest_lite.pb.h;google\protobuf\unittest_lite.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_lite.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_lite.proto"
+ Outputs="google\protobuf\unittest_lite.pb.h;google\protobuf\unittest_lite.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\src\google\protobuf\unittest_mset.proto"
>
<FileConfiguration
@@ -612,7 +892,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_mset.pb.{h,cc}..."
- CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_mset.proto&#x0D;&#x0A;"
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_mset.proto"
Outputs="google\protobuf\unittest_mset.pb.h;google\protobuf\unittest_mset.pb.cc"
/>
</FileConfiguration>
@@ -622,22 +902,22 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_mset.pb.{h,cc}..."
- CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_mset.proto&#x0D;&#x0A;"
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_mset.proto"
Outputs="google\protobuf\unittest_mset.pb.h;google\protobuf\unittest_mset.pb.cc"
/>
</FileConfiguration>
</File>
<File
- RelativePath="..\src\google\protobuf\unittest_optimize_for.proto"
+ RelativePath="..\src\google\protobuf\unittest_no_arena_import.proto"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
- Description="Generating unittest_optimize_for.pb.{h,cc}..."
- CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_optimize_for.proto&#x0D;&#x0A;"
- Outputs="google\protobuf\unittest_optimize_for.pb.h;google\protobuf\unittest_optimize_for.pb.cc"
+ Description="Generating unittest_no_arena_import.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_no_arena_import.proto"
+ Outputs="google\protobuf\unittest_no_arena_import.pb.h;google\protobuf\unittest_no_arena_import.pb.cc"
/>
</FileConfiguration>
<FileConfiguration
@@ -645,9 +925,57 @@
>
<Tool
Name="VCCustomBuildTool"
- Description="Generating unittest_optimize_for.pb.{h,cc}..."
- CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_optimize_for.proto&#x0D;&#x0A;"
- Outputs="google\protobuf\unittest_optimize_for.pb.h;google\protobuf\unittest_optimize_for.pb.cc"
+ Description="Generating unittest_no_arena_import.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_no_arena_import.proto"
+ Outputs="google\protobuf\unittest_no_arena_import.pb.h;google\protobuf\unittest_no_arena_import.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\unittest_no_arena.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_no_arena.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_no_arena.proto"
+ Outputs="google\protobuf\unittest_no_arena.pb.h;google\protobuf\unittest_no_arena.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_no_arena.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_no_arena.proto"
+ Outputs="google\protobuf\unittest_no_arena.pb.h;google\protobuf\unittest_no_arena.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\unittest_no_field_presence.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_no_field_presence.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_no_field_presence.proto"
+ Outputs="google\protobuf\unittest_no_field_presence.pb.h;google\protobuf\unittest_no_field_presence.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_no_field_presence.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_no_field_presence.proto"
+ Outputs="google\protobuf\unittest_no_field_presence.pb.h;google\protobuf\unittest_no_field_presence.pb.cc"
/>
</FileConfiguration>
</File>
@@ -660,7 +988,7 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_no_generic_services.pb.{h,cc}..."
- CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_no_generic_services.proto&#x0D;&#x0A;"
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_no_generic_services.proto"
Outputs="google\protobuf\unittest_no_generic_services.pb.h;google\protobuf\unittest_no_generic_services.pb.cc"
/>
</FileConfiguration>
@@ -670,11 +998,107 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating unittest_no_generic_services.pb.{h,cc}..."
- CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_no_generic_services.proto&#x0D;&#x0A;"
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_no_generic_services.proto"
Outputs="google\protobuf\unittest_no_generic_services.pb.h;google\protobuf\unittest_no_generic_services.pb.cc"
/>
</FileConfiguration>
</File>
+ <File
+ RelativePath="..\src\google\protobuf\unittest_optimize_for.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_optimize_for.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_optimize_for.proto"
+ Outputs="google\protobuf\unittest_optimize_for.pb.h;google\protobuf\unittest_optimize_for.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_optimize_for.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_optimize_for.proto"
+ Outputs="google\protobuf\unittest_optimize_for.pb.h;google\protobuf\unittest_optimize_for.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\unittest_preserve_unknown_enum.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_preserve_unknown_enum.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_preserve_unknown_enum.proto"
+ Outputs="google\protobuf\unittest_preserve_unknown_enum.pb.h;google\protobuf\unittest_preserve_unknown_enum.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_preserve_unknown_enum.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_preserve_unknown_enum.proto"
+ Outputs="google\protobuf\unittest_preserve_unknown_enum.pb.h;google\protobuf\unittest_preserve_unknown_enum.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\unittest_proto3_arena.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_proto3_arena.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_proto3_arena.proto"
+ Outputs="google\protobuf\unittest_proto3_arena.pb.h;google\protobuf\unittest_proto3_arena.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating unittest_proto3_arena.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/unittest_proto3_arena.proto"
+ Outputs="google\protobuf\unittest_proto3_arena.pb.h;google\protobuf\unittest_proto3_arena.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\src\google\protobuf\compiler\cpp\cpp_test_bad_identifiers.proto"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating cpp_test_bad_identifiers.pb.{h,cc}..."
+ CommandLine="Debug\protoc -I../src --cpp_out=. ../src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto"
+ Outputs="google\protobuf\compiler\cpp\cpp_test_bad_identifiers.pb.h;google\protobuf\compiler\cpp\cpp_test_bad_identifiers.pb.cc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Generating cpp_test_bad_identifiers.pb.{h,cc}..."
+ CommandLine="Release\protoc -I../src --cpp_out=. ../src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto"
+ Outputs="google\protobuf\compiler\cpp\cpp_test_bad_identifiers.pb.h;google\protobuf\compiler\cpp\cpp_test_bad_identifiers.pb.cc"
+ />
+ </FileConfiguration>
+ </File>
</Files>
<Globals>
</Globals>