Fix compile issues under GCC 3.4.6
This commit is contained in:
parent
d2d50f9a73
commit
9c1c31ff16
@ -120,7 +120,7 @@ TEST(RepeatedFieldReflectionTest, RegularFields) {
|
||||
EXPECT_EQ(rf_double.Get(i), Func(i, 2));
|
||||
EXPECT_EQ(rpf_string.Get(i), StrFunc(i, 5));
|
||||
EXPECT_EQ(rpf_foreign_message.Get(i).c(), Func(i, 6));
|
||||
EXPECT_EQ(down_cast<const ForeignMessage&>(rpf_message.Get(i)).c(),
|
||||
EXPECT_EQ(down_cast<const ForeignMessage*>(&rpf_message.Get(i))->c(),
|
||||
Func(i, 6));
|
||||
|
||||
// Check gets through mutable objects.
|
||||
@ -128,7 +128,7 @@ TEST(RepeatedFieldReflectionTest, RegularFields) {
|
||||
EXPECT_EQ(mrf_double->Get(i), Func(i, 2));
|
||||
EXPECT_EQ(mrpf_string->Get(i), StrFunc(i, 5));
|
||||
EXPECT_EQ(mrpf_foreign_message->Get(i).c(), Func(i, 6));
|
||||
EXPECT_EQ(down_cast<const ForeignMessage&>(mrpf_message->Get(i)).c(),
|
||||
EXPECT_EQ(down_cast<const ForeignMessage*>(&mrpf_message->Get(i))->c(),
|
||||
Func(i, 6));
|
||||
|
||||
// Check sets through mutable objects.
|
||||
|
@ -341,12 +341,6 @@ inline To down_cast(From* f) { // so we only accept pointers
|
||||
return static_cast<To>(f);
|
||||
}
|
||||
|
||||
// Simplified down_cast for reference type.
|
||||
template<typename To, typename From>
|
||||
inline To down_cast(From& f) {
|
||||
return static_cast<To>(f);
|
||||
}
|
||||
|
||||
} // namespace internal
|
||||
|
||||
// We made these internal so that they would show up as such in the docs,
|
||||
|
@ -434,8 +434,8 @@ class TextFormat::Parser::ParserImpl {
|
||||
// If a parse info tree exists, add the location for the parsed
|
||||
// field.
|
||||
if (parse_info_tree_ != NULL) {
|
||||
parse_info_tree_->RecordLocation(field,
|
||||
ParseLocation(start_line, start_column));
|
||||
RecordLocation(parse_info_tree_, field,
|
||||
ParseLocation(start_line, start_column));
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -483,7 +483,7 @@ class TextFormat::Parser::ParserImpl {
|
||||
// for the nested message.
|
||||
ParseInfoTree* parent = parse_info_tree_;
|
||||
if (parent != NULL) {
|
||||
parse_info_tree_ = parent->CreateNested(field);
|
||||
parse_info_tree_ = CreateNested(parent, field);
|
||||
}
|
||||
|
||||
string delimeter;
|
||||
|
@ -339,9 +339,30 @@ class LIBPROTOBUF_EXPORT TextFormat {
|
||||
};
|
||||
|
||||
private:
|
||||
// Hack: ParseInfoTree declares TextFormat as a friend which should extend
|
||||
// the friendship to TextFormat::Parser::ParserImpl, but unfortunately some
|
||||
// old compilers (e.g. GCC 3.4.6) don't implement this correctly. We provide
|
||||
// helpers for ParserImpl to call methods of ParseInfoTree.
|
||||
static inline void RecordLocation(ParseInfoTree* info_tree,
|
||||
const FieldDescriptor* field,
|
||||
ParseLocation location);
|
||||
static inline ParseInfoTree* CreateNested(ParseInfoTree* info_tree,
|
||||
const FieldDescriptor* field);
|
||||
|
||||
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TextFormat);
|
||||
};
|
||||
|
||||
inline void TextFormat::RecordLocation(ParseInfoTree* info_tree,
|
||||
const FieldDescriptor* field,
|
||||
ParseLocation location) {
|
||||
info_tree->RecordLocation(field, location);
|
||||
}
|
||||
|
||||
inline TextFormat::ParseInfoTree* TextFormat::CreateNested(
|
||||
ParseInfoTree* info_tree, const FieldDescriptor* field) {
|
||||
return info_tree->CreateNested(field);
|
||||
}
|
||||
|
||||
} // namespace protobuf
|
||||
|
||||
} // namespace google
|
||||
|
Loading…
Reference in New Issue
Block a user