Fix bugs on windows.

This commit is contained in:
Bo Yang 2015-05-24 22:28:04 -07:00
parent 3ff9592561
commit cf603a9dfa
11 changed files with 64 additions and 41 deletions

View File

@ -43,7 +43,7 @@ namespace protobuf {
namespace internal {
// Helper class used to implement google::protobuf::Any.
class AnyMetadata {
class LIBPROTOBUF_EXPORT AnyMetadata {
typedef ArenaStringPtr UrlType;
typedef ArenaStringPtr ValueType;
public:

View File

@ -1232,8 +1232,11 @@ TEST(ArenaTest, ArenaHooksSanity) {
EXPECT_EQ(1, ArenaHooksTestUtil::num_init);
EXPECT_EQ(0, ArenaHooksTestUtil::num_allocations);
::google::protobuf::Arena::Create<uint64>(&arena);
#ifdef _WIN32
EXPECT_EQ(2, ArenaHooksTestUtil::num_allocations);
#else
EXPECT_EQ(1, ArenaHooksTestUtil::num_allocations);
#endif
arena.Reset();
arena.Reset();
EXPECT_EQ(2, ArenaHooksTestUtil::num_reset);

View File

@ -973,6 +973,9 @@ TEST_F(CommandLineInterfaceTest, WriteTransitiveDescriptorSetWithSourceInfo) {
EXPECT_TRUE(descriptor_set.file(1).has_source_code_info());
}
#ifdef _WIN32
// TODO(teboring): Figure out how to write test on windows.
#else
TEST_F(CommandLineInterfaceTest, WriteDependencyManifestFileGivenTwoInputs) {
CreateTempFile("foo.proto",
"syntax = \"proto2\";\n"
@ -1042,6 +1045,7 @@ TEST_F(CommandLineInterfaceTest, WriteDependencyManifestFileForAbsolutePath) {
"$tmpdir/bar.proto.MockCodeGenerator.test_generator: "
"$tmpdir/foo.proto\\\n $tmpdir/bar.proto");
}
#endif // !_WIN32
// -------------------------------------------------------------------

View File

@ -150,7 +150,7 @@ bool FilterClass(const string& name);
// Generate decode data needed for ObjC's GPBDecodeTextFormatName() to transform
// the input into the the expected output.
class TextFormatDecodeData {
class LIBPROTOC_EXPORT TextFormatDecodeData {
public:
TextFormatDecodeData() {}

View File

@ -111,6 +111,8 @@ TEST(ObjCHelper, TextFormatDecodeData_DecodeDataForString_ByteCodes) {
EXPECT_EQ(expected, result);
}
// Death tests do not work on Windows as of yet.
#ifdef PROTOBUF_HAS_DEATH_TEST
TEST(ObjCHelperDeathTest, TextFormatDecodeData_DecodeDataForString_Failures) {
// Empty inputs.
@ -136,6 +138,7 @@ TEST(ObjCHelperDeathTest, TextFormatDecodeData_DecodeDataForString_Failures) {
::testing::KilledBySignal(SIGABRT),
"error: got a null char in a string for making TextFormat data, input:");
}
#endif // PROTOBUF_HAS_DEATH_TEST
TEST(ObjCHelper, TextFormatDecodeData_RawStrings) {
TextFormatDecodeData decode_data;
@ -198,6 +201,9 @@ TEST(ObjCHelper, TextFormatDecodeData_ByteCodes) {
EXPECT_EQ(expected, decode_data.Data());
}
// Death tests do not work on Windows as of yet.
#ifdef PROTOBUF_HAS_DEATH_TEST
TEST(ObjCHelperDeathTest, TextFormatDecodeData_Failures) {
TextFormatDecodeData decode_data;
@ -234,6 +240,7 @@ TEST(ObjCHelperDeathTest, TextFormatDecodeData_Failures) {
::testing::KilledBySignal(SIGABRT),
"error: duplicate key \\(2\\) making TextFormat data, input:");
}
#endif // PROTOBUF_HAS_DEATH_TEST
} // namespace
} // namespace objectivec

View File

@ -199,7 +199,7 @@ class Map {
typedef MapAllocator<std::pair<const Key, MapPair<Key, T>*> > Allocator;
// 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*, hash<Key>, equal_to<Key>,
@ -229,7 +229,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*, hasher, equal_to<Key>,
Allocator>::iterator InnerIt;
@ -428,7 +428,7 @@ class Map {
internal::WireFormatLite::FieldType key_wire_type,
internal::WireFormatLite::FieldType value_wire_type,
int default_enum_value>
friend class LIBPROTOBUF_EXPORT internal::MapFieldLite;
friend class internal::MapFieldLite;
};
} // namespace protobuf

View File

@ -97,7 +97,7 @@ template <typename Key, typename Value,
WireFormatLite::FieldType kKeyFieldType,
WireFormatLite::FieldType kValueFieldType,
int default_enum_value>
class LIBPROTOBUF_EXPORT MapEntry : public MapEntryBase {
class MapEntry : public MapEntryBase {
// Handlers for key/value wire type. Provide utilities to parse/serialize
// key/value.
typedef MapWireFieldTypeHandler<kKeyFieldType> KeyWireHandler;
@ -274,8 +274,8 @@ class LIBPROTOBUF_EXPORT MapEntry : public MapEntryBase {
typedef void DestructorSkippable_;
template <typename K, typename V, WireFormatLite::FieldType k_wire_type,
WireFormatLite::FieldType, int default_enum>
friend class LIBPROTOBUF_EXPORT internal::MapField;
friend class LIBPROTOBUF_EXPORT internal::GeneratedMessageReflection;
friend class internal::MapField;
friend class internal::GeneratedMessageReflection;
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MapEntry);
};

View File

@ -60,7 +60,7 @@ template <typename Key, typename Value,
WireFormatLite::FieldType kKeyFieldType,
WireFormatLite::FieldType kValueFieldType,
int default_enum_value>
class LIBPROTOBUF_EXPORT MapEntryLite : public MessageLite {
class MapEntryLite : public MessageLite {
// Handlers for key/value wire type. Provide utilities to parse/serialize
// key/value.
typedef MapWireFieldTypeHandler<kKeyFieldType> KeyWireHandler;
@ -302,7 +302,7 @@ class LIBPROTOBUF_EXPORT MapEntryLite : public MessageLite {
// only takes references of given key and value.
template <typename K, typename V, WireFormatLite::FieldType k_wire_type,
WireFormatLite::FieldType v_wire_type, int default_enum>
class LIBPROTOBUF_EXPORT MapEntryWrapper
class MapEntryWrapper
: public MapEntryLite<K, V, k_wire_type, v_wire_type, default_enum> {
typedef MapEntryLite<K, V, k_wire_type, v_wire_type, default_enum> Base;
typedef typename Base::KeyCppType KeyCppType;
@ -336,7 +336,7 @@ class LIBPROTOBUF_EXPORT MapEntryLite : public MessageLite {
// the temporary.
template <typename K, typename V, WireFormatLite::FieldType k_wire_type,
WireFormatLite::FieldType v_wire_type, int default_enum>
class LIBPROTOBUF_EXPORT MapEnumEntryWrapper
class MapEnumEntryWrapper
: public MapEntryLite<K, V, k_wire_type, v_wire_type, default_enum> {
typedef MapEntryLite<K, V, k_wire_type, v_wire_type, default_enum> Base;
typedef typename Base::KeyCppType KeyCppType;
@ -357,7 +357,7 @@ class LIBPROTOBUF_EXPORT MapEntryLite : public MessageLite {
const KeyCppType& key_;
const ValCppType value_;
friend class LIBPROTOBUF_EXPORT google::protobuf::Arena;
friend class google::protobuf::Arena;
typedef void DestructorSkippable_;
};
@ -396,10 +396,10 @@ class LIBPROTOBUF_EXPORT MapEntryLite : public MessageLite {
typedef void DestructorSkippable_;
template <typename K, typename V, WireFormatLite::FieldType,
WireFormatLite::FieldType, int>
friend class LIBPROTOBUF_EXPORT internal::MapEntry;
friend class internal::MapEntry;
template <typename K, typename V, WireFormatLite::FieldType,
WireFormatLite::FieldType, int>
friend class LIBPROTOBUF_EXPORT internal::MapFieldLite;
friend class internal::MapFieldLite;
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MapEntryLite);
};

View File

@ -146,7 +146,7 @@ template <typename Key, typename T,
WireFormatLite::FieldType kKeyFieldType,
WireFormatLite::FieldType kValueFieldType,
int default_enum_value = 0>
class LIBPROTOBUF_EXPORT MapField : public MapFieldBase,
class MapField : public MapFieldBase,
public MapFieldLite<Key, T, kKeyFieldType, kValueFieldType,
default_enum_value> {
// Handlers for key/value wire type. Provide utilities to parse/serialize

View File

@ -45,7 +45,7 @@ template <typename Key, typename T,
WireFormatLite::FieldType key_wire_type,
WireFormatLite::FieldType value_wire_type,
int default_enum_value = 0>
class LIBPROTOBUF_EXPORT MapFieldLite {
class MapFieldLite {
// Define message type for internal repeated field.
typedef MapEntryLite<Key, T, key_wire_type, value_wire_type,
default_enum_value> EntryType;

View File

@ -534,7 +534,7 @@ struct Hex {
}
};
struct AlphaNum {
struct LIBPROTOBUF_EXPORT AlphaNum {
const char *piece_data_; // move these to string_ref eventually
size_t piece_size_; // move these to string_ref eventually
@ -610,23 +610,30 @@ using strings::AlphaNum;
// be a reference into str.
// ----------------------------------------------------------------------
string StrCat(const AlphaNum &a, const AlphaNum &b);
string StrCat(const AlphaNum &a, const AlphaNum &b, const AlphaNum &c);
string StrCat(const AlphaNum &a, const AlphaNum &b, const AlphaNum &c,
const AlphaNum &d);
string StrCat(const AlphaNum &a, const AlphaNum &b, const AlphaNum &c,
const AlphaNum &d, const AlphaNum &e);
string StrCat(const AlphaNum &a, const AlphaNum &b, const AlphaNum &c,
const AlphaNum &d, const AlphaNum &e, const AlphaNum &f);
string StrCat(const AlphaNum &a, const AlphaNum &b, const AlphaNum &c,
const AlphaNum &d, const AlphaNum &e, const AlphaNum &f,
const AlphaNum &g);
string StrCat(const AlphaNum &a, const AlphaNum &b, const AlphaNum &c,
const AlphaNum &d, const AlphaNum &e, const AlphaNum &f,
const AlphaNum &g, const AlphaNum &h);
string StrCat(const AlphaNum &a, const AlphaNum &b, const AlphaNum &c,
const AlphaNum &d, const AlphaNum &e, const AlphaNum &f,
const AlphaNum &g, const AlphaNum &h, const AlphaNum &i);
LIBPROTOBUF_EXPORT string StrCat(const AlphaNum& a, const AlphaNum& b);
LIBPROTOBUF_EXPORT string StrCat(const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c);
LIBPROTOBUF_EXPORT string StrCat(const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c, const AlphaNum& d);
LIBPROTOBUF_EXPORT string StrCat(const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c, const AlphaNum& d,
const AlphaNum& e);
LIBPROTOBUF_EXPORT string StrCat(const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c, const AlphaNum& d,
const AlphaNum& e, const AlphaNum& f);
LIBPROTOBUF_EXPORT string StrCat(const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c, const AlphaNum& d,
const AlphaNum& e, const AlphaNum& f,
const AlphaNum& g);
LIBPROTOBUF_EXPORT string StrCat(const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c, const AlphaNum& d,
const AlphaNum& e, const AlphaNum& f,
const AlphaNum& g, const AlphaNum& h);
LIBPROTOBUF_EXPORT string StrCat(const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c, const AlphaNum& d,
const AlphaNum& e, const AlphaNum& f,
const AlphaNum& g, const AlphaNum& h,
const AlphaNum& i);
inline string StrCat(const AlphaNum& a) { return string(a.data(), a.size()); }
@ -651,12 +658,14 @@ inline string StrCat(const AlphaNum& a) { return string(a.data(), a.size()); }
// worked around as consecutive calls to StrAppend are quite efficient.
// ----------------------------------------------------------------------
void StrAppend(string* dest, const AlphaNum& a);
void StrAppend(string* dest, const AlphaNum& a, const AlphaNum& b);
void StrAppend(string* dest, const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c);
void StrAppend(string* dest, const AlphaNum& a, const AlphaNum& b,
const AlphaNum& c, const AlphaNum& d);
LIBPROTOBUF_EXPORT void StrAppend(string* dest, const AlphaNum& a);
LIBPROTOBUF_EXPORT void StrAppend(string* dest, const AlphaNum& a,
const AlphaNum& b);
LIBPROTOBUF_EXPORT void StrAppend(string* dest, const AlphaNum& a,
const AlphaNum& b, const AlphaNum& c);
LIBPROTOBUF_EXPORT void StrAppend(string* dest, const AlphaNum& a,
const AlphaNum& b, const AlphaNum& c,
const AlphaNum& d);
// ----------------------------------------------------------------------
// Join()