Merge pull request #5469 from haberman/objc
ObjC compiler changes to allow for easier import
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc b/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc
index c25b0c9..3d0b0d2 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc
@@ -48,9 +48,9 @@
#include <google/protobuf/io/printer.h>
#include <google/protobuf/io/zero_copy_stream_impl.h>
#include <google/protobuf/stubs/io_win32.h>
+#include <google/protobuf/stubs/port.h>
#include <google/protobuf/stubs/strutil.h>
-
// NOTE: src/google/protobuf/compiler/plugin.cc makes use of cerr for some
// error cases, so it seems to be ok to use as a back door for errors.
@@ -364,7 +364,7 @@
}
}
-void StringPieceTrimWhitespace(StringPiece* input) {
+void TrimWhitespace(StringPiece* input) {
while (!input->empty() && ascii_isspace(*input->data())) {
input->remove_prefix(1);
}
@@ -659,7 +659,7 @@
// Some compilers report reaching end of function even though all cases of
// the enum are handed in the switch.
GOOGLE_LOG(FATAL) << "Can't get here.";
- return NULL;
+ return string();
}
ObjectiveCType GetObjectiveCType(FieldDescriptor::Type field_type) {
@@ -787,7 +787,7 @@
// Some compilers report reaching end of function even though all cases of
// the enum are handed in the switch.
GOOGLE_LOG(FATAL) << "Can't get here.";
- return NULL;
+ return string();
}
@@ -859,7 +859,7 @@
// Some compilers report reaching end of function even though all cases of
// the enum are handed in the switch.
GOOGLE_LOG(FATAL) << "Can't get here.";
- return NULL;
+ return string();
}
bool HasNonZeroDefaultValue(const FieldDescriptor* field) {
@@ -1047,18 +1047,17 @@
const StringPiece& line, string* out_error) {
int offset = line.find('=');
if (offset == StringPiece::npos) {
- *out_error =
- string("Expected prefixes file line without equal sign: '") +
- line.ToString() + "'.";
+ *out_error = string("Expected prefixes file line without equal sign: '") +
+ string(line) + "'.";
return false;
}
- StringPiece package(line, 0, offset);
- StringPiece prefix(line, offset + 1, line.length() - offset - 1);
- StringPieceTrimWhitespace(&package);
- StringPieceTrimWhitespace(&prefix);
+ StringPiece package = line.substr(0, offset);
+ StringPiece prefix = line.substr(offset + 1);
+ TrimWhitespace(&package);
+ TrimWhitespace(&prefix);
// Don't really worry about error checking the package/prefix for
// being valid. Assume the file is validated when it is created/edited.
- (*prefix_map_)[package.ToString()] = prefix.ToString();
+ (*prefix_map_)[string(package)] = string(prefix);
return true;
}
@@ -1474,7 +1473,7 @@
bool Parser::ParseChunk(StringPiece chunk) {
if (!leftover_.empty()) {
- chunk.AppendToString(&leftover_);
+ leftover_ += string(chunk);
p_ = StringPiece(leftover_);
} else {
p_ = chunk;
@@ -1483,7 +1482,7 @@
if (p_.empty()) {
leftover_.clear();
} else {
- leftover_ = p_.ToString();
+ leftover_ = string(p_);
}
return result;
}
@@ -1506,7 +1505,7 @@
while (ReadLine(&p_, &line)) {
++line_;
RemoveComment(&line);
- StringPieceTrimWhitespace(&line);
+ TrimWhitespace(&line);
if (line.size() == 0) {
continue; // Blank line.
}
@@ -1693,12 +1692,12 @@
if (offset == StringPiece::npos) {
*out_error =
string("Framework/proto file mapping line without colon sign: '") +
- line.ToString() + "'.";
+ string(line) + "'.";
return false;
}
- StringPiece framework_name(line, 0, offset);
- StringPiece proto_file_list(line, offset + 1, line.length() - offset - 1);
- StringPieceTrimWhitespace(&framework_name);
+ StringPiece framework_name = line.substr(0, offset);
+ StringPiece proto_file_list = line.substr(offset + 1);
+ TrimWhitespace(&framework_name);
int start = 0;
while (start < proto_file_list.length()) {
@@ -1707,25 +1706,27 @@
offset = proto_file_list.length();
}
- StringPiece proto_file(proto_file_list, start, offset - start);
- StringPieceTrimWhitespace(&proto_file);
+ StringPiece proto_file = proto_file_list.substr(start, offset - start);
+ TrimWhitespace(&proto_file);
if (proto_file.size() != 0) {
std::map<string, string>::iterator existing_entry =
- map_->find(proto_file.ToString());
+ map_->find(string(proto_file));
if (existing_entry != map_->end()) {
- std::cerr << "warning: duplicate proto file reference, replacing framework entry for '"
- << proto_file.ToString() << "' with '" << framework_name.ToString()
- << "' (was '" << existing_entry->second << "')." << std::endl;
+ std::cerr << "warning: duplicate proto file reference, replacing "
+ "framework entry for '"
+ << string(proto_file) << "' with '" << string(framework_name)
+ << "' (was '" << existing_entry->second << "')." << std::endl;
std::cerr.flush();
}
if (proto_file.find(' ') != StringPiece::npos) {
- std::cerr << "note: framework mapping file had a proto file with a space in, hopefully that isn't a missing comma: '"
- << proto_file.ToString() << "'" << std::endl;
+ std::cerr << "note: framework mapping file had a proto file with a "
+ "space in, hopefully that isn't a missing comma: '"
+ << string(proto_file) << "'" << std::endl;
std::cerr.flush();
}
- (*map_)[proto_file.ToString()] = framework_name.ToString();
+ (*map_)[string(proto_file)] = string(framework_name);
}
start = offset + 1;
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_helpers.h b/src/google/protobuf/compiler/objectivec/objectivec_helpers.h
index e2f7024..98ec7db 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_helpers.h
+++ b/src/google/protobuf/compiler/objectivec/objectivec_helpers.h
@@ -62,7 +62,7 @@
string PROTOC_EXPORT StripProto(const string& filename);
// Remove white space from either end of a StringPiece.
-void PROTOC_EXPORT StringPieceTrimWhitespace(StringPiece* input);
+void PROTOC_EXPORT TrimWhitespace(StringPiece* input);
// Returns true if the name requires a ns_returns_not_retained attribute applied
// to it.