Unverified Commit 98f0447a authored by Joshua Haberman's avatar Joshua Haberman Committed by GitHub

Merge pull request #6274 from haberman/objc

Removed all use of STLDelete*() in ObjC and C# Generators.
parents 43307d4d f98b3401
...@@ -77,23 +77,19 @@ class MockErrorCollector : public MultiFileErrorCollector { ...@@ -77,23 +77,19 @@ class MockErrorCollector : public MultiFileErrorCollector {
class MockGeneratorContext : public GeneratorContext { class MockGeneratorContext : public GeneratorContext {
public: public:
MockGeneratorContext() {}
~MockGeneratorContext() {
STLDeleteValues(&files_);
}
void ExpectFileMatches(const string& virtual_filename, void ExpectFileMatches(const string& virtual_filename,
const string& physical_filename) { const string& physical_filename) {
string* expected_contents = FindPtrOrNull(files_, virtual_filename); auto it = files_.find(virtual_filename);
ASSERT_TRUE(expected_contents != NULL) ASSERT_TRUE(it != files_.end())
<< "Generator failed to generate file: " << virtual_filename; << "Generator failed to generate file: " << virtual_filename;
string expected_contents = *it->second;
string actual_contents; string actual_contents;
GOOGLE_CHECK_OK( GOOGLE_CHECK_OK(
File::GetContentsAsText(TestSourceDir() + "/" + physical_filename, File::GetContentsAsText(TestSourceDir() + "/" + physical_filename,
&actual_contents, true)) &actual_contents, true))
<< "Unable to get " << physical_filename; << "Unable to get " << physical_filename;
EXPECT_TRUE(actual_contents == *expected_contents) EXPECT_TRUE(actual_contents == expected_contents)
<< physical_filename << " needs to be regenerated. Please run " << physical_filename << " needs to be regenerated. Please run "
"generate_descriptor_proto.sh. Then add this file " "generate_descriptor_proto.sh. Then add this file "
"to your CL."; "to your CL.";
...@@ -102,15 +98,13 @@ class MockGeneratorContext : public GeneratorContext { ...@@ -102,15 +98,13 @@ class MockGeneratorContext : public GeneratorContext {
// implements GeneratorContext -------------------------------------- // implements GeneratorContext --------------------------------------
virtual io::ZeroCopyOutputStream* Open(const string& filename) { virtual io::ZeroCopyOutputStream* Open(const string& filename) {
string** map_slot = &files_[filename]; auto& map_slot = files_[filename];
delete *map_slot; map_slot.reset(new std::string);
*map_slot = new string; return new io::StringOutputStream(map_slot.get());
return new io::StringOutputStream(*map_slot);
} }
private: private:
std::map<string, string*> files_; std::map<std::string, std::unique_ptr<std::string>> files_;
}; };
class GenerateAndTest { class GenerateAndTest {
......
...@@ -192,27 +192,21 @@ FileGenerator::FileGenerator(const FileDescriptor *file, const Options& options) ...@@ -192,27 +192,21 @@ FileGenerator::FileGenerator(const FileDescriptor *file, const Options& options)
options_(options) { options_(options) {
for (int i = 0; i < file_->enum_type_count(); i++) { for (int i = 0; i < file_->enum_type_count(); i++) {
EnumGenerator *generator = new EnumGenerator(file_->enum_type(i)); EnumGenerator *generator = new EnumGenerator(file_->enum_type(i));
enum_generators_.push_back(generator); enum_generators_.emplace_back(generator);
} }
for (int i = 0; i < file_->message_type_count(); i++) { for (int i = 0; i < file_->message_type_count(); i++) {
MessageGenerator *generator = MessageGenerator *generator =
new MessageGenerator(root_class_name_, file_->message_type(i), options_); new MessageGenerator(root_class_name_, file_->message_type(i), options_);
message_generators_.push_back(generator); message_generators_.emplace_back(generator);
} }
for (int i = 0; i < file_->extension_count(); i++) { for (int i = 0; i < file_->extension_count(); i++) {
ExtensionGenerator *generator = ExtensionGenerator *generator =
new ExtensionGenerator(root_class_name_, file_->extension(i)); new ExtensionGenerator(root_class_name_, file_->extension(i));
extension_generators_.push_back(generator); extension_generators_.emplace_back(generator);
} }
} }
FileGenerator::~FileGenerator() { FileGenerator::~FileGenerator() {}
STLDeleteContainerPointers(enum_generators_.begin(), enum_generators_.end());
STLDeleteContainerPointers(message_generators_.begin(),
message_generators_.end());
STLDeleteContainerPointers(extension_generators_.begin(),
extension_generators_.end());
}
void FileGenerator::GenerateHeader(io::Printer *printer) { void FileGenerator::GenerateHeader(io::Printer *printer) {
std::set<string> headers; std::set<string> headers;
...@@ -270,9 +264,8 @@ void FileGenerator::GenerateHeader(io::Printer *printer) { ...@@ -270,9 +264,8 @@ void FileGenerator::GenerateHeader(io::Printer *printer) {
"\n"); "\n");
std::set<string> fwd_decls; std::set<string> fwd_decls;
for (std::vector<MessageGenerator *>::iterator iter = message_generators_.begin(); for (const auto& generator : message_generators_) {
iter != message_generators_.end(); ++iter) { generator->DetermineForwardDeclarations(&fwd_decls);
(*iter)->DetermineForwardDeclarations(&fwd_decls);
} }
for (std::set<string>::const_iterator i(fwd_decls.begin()); for (std::set<string>::const_iterator i(fwd_decls.begin());
i != fwd_decls.end(); ++i) { i != fwd_decls.end(); ++i) {
...@@ -287,14 +280,12 @@ void FileGenerator::GenerateHeader(io::Printer *printer) { ...@@ -287,14 +280,12 @@ void FileGenerator::GenerateHeader(io::Printer *printer) {
"\n"); "\n");
// need to write out all enums first // need to write out all enums first
for (std::vector<EnumGenerator *>::iterator iter = enum_generators_.begin(); for (const auto& generator : enum_generators_) {
iter != enum_generators_.end(); ++iter) { generator->GenerateHeader(printer);
(*iter)->GenerateHeader(printer);
} }
for (std::vector<MessageGenerator *>::iterator iter = message_generators_.begin(); for (const auto& generator : message_generators_) {
iter != message_generators_.end(); ++iter) { generator->GenerateEnumHeader(printer);
(*iter)->GenerateEnumHeader(printer);
} }
// For extensions to chain together, the Root gets created even if there // For extensions to chain together, the Root gets created even if there
...@@ -323,18 +314,15 @@ void FileGenerator::GenerateHeader(io::Printer *printer) { ...@@ -323,18 +314,15 @@ void FileGenerator::GenerateHeader(io::Printer *printer) {
"@interface $root_class_name$ (DynamicMethods)\n", "@interface $root_class_name$ (DynamicMethods)\n",
"root_class_name", root_class_name_); "root_class_name", root_class_name_);
for (std::vector<ExtensionGenerator *>::iterator iter = for (const auto& generator : extension_generators_) {
extension_generators_.begin(); generator->GenerateMembersHeader(printer);
iter != extension_generators_.end(); ++iter) {
(*iter)->GenerateMembersHeader(printer);
} }
printer->Print("@end\n\n"); printer->Print("@end\n\n");
} // extension_generators_.size() > 0 } // extension_generators_.size() > 0
for (std::vector<MessageGenerator *>::iterator iter = message_generators_.begin(); for (const auto& generator : message_generators_) {
iter != message_generators_.end(); ++iter) { generator->GenerateMessageHeader(printer);
(*iter)->GenerateMessageHeader(printer);
} }
printer->Print( printer->Print(
...@@ -403,9 +391,8 @@ void FileGenerator::GenerateSource(io::Printer *printer) { ...@@ -403,9 +391,8 @@ void FileGenerator::GenerateSource(io::Printer *printer) {
} }
bool includes_oneof = false; bool includes_oneof = false;
for (std::vector<MessageGenerator *>::iterator iter = message_generators_.begin(); for (const auto& generator : message_generators_) {
iter != message_generators_.end(); ++iter) { if (generator->IncludesOneOfDefinition()) {
if ((*iter)->IncludesOneOfDefinition()) {
includes_oneof = true; includes_oneof = true;
break; break;
} }
...@@ -456,15 +443,11 @@ void FileGenerator::GenerateSource(io::Printer *printer) { ...@@ -456,15 +443,11 @@ void FileGenerator::GenerateSource(io::Printer *printer) {
printer->Print( printer->Print(
"static GPBExtensionDescription descriptions[] = {\n"); "static GPBExtensionDescription descriptions[] = {\n");
printer->Indent(); printer->Indent();
for (std::vector<ExtensionGenerator *>::iterator iter = for (const auto& generator : extension_generators_) {
extension_generators_.begin(); generator->GenerateStaticVariablesInitialization(printer);
iter != extension_generators_.end(); ++iter) {
(*iter)->GenerateStaticVariablesInitialization(printer);
} }
for (std::vector<MessageGenerator *>::iterator iter = for (const auto& generator : message_generators_) {
message_generators_.begin(); generator->GenerateStaticVariablesInitialization(printer);
iter != message_generators_.end(); ++iter) {
(*iter)->GenerateStaticVariablesInitialization(printer);
} }
printer->Outdent(); printer->Outdent();
printer->Print( printer->Print(
...@@ -561,13 +544,11 @@ void FileGenerator::GenerateSource(io::Printer *printer) { ...@@ -561,13 +544,11 @@ void FileGenerator::GenerateSource(io::Printer *printer) {
"\n"); "\n");
} }
for (std::vector<EnumGenerator *>::iterator iter = enum_generators_.begin(); for (const auto& generator : enum_generators_) {
iter != enum_generators_.end(); ++iter) { generator->GenerateSource(printer);
(*iter)->GenerateSource(printer);
} }
for (std::vector<MessageGenerator *>::iterator iter = message_generators_.begin(); for (const auto& generator : message_generators_) {
iter != message_generators_.end(); ++iter) { generator->GenerateSource(printer);
(*iter)->GenerateSource(printer);
} }
printer->Print( printer->Print(
......
...@@ -65,9 +65,9 @@ class FileGenerator { ...@@ -65,9 +65,9 @@ class FileGenerator {
string root_class_name_; string root_class_name_;
bool is_bundled_proto_; bool is_bundled_proto_;
std::vector<EnumGenerator*> enum_generators_; std::vector<std::unique_ptr<EnumGenerator>> enum_generators_;
std::vector<MessageGenerator*> message_generators_; std::vector<std::unique_ptr<MessageGenerator>> message_generators_;
std::vector<ExtensionGenerator*> extension_generators_; std::vector<std::unique_ptr<ExtensionGenerator>> extension_generators_;
const Options options_; const Options options_;
......
...@@ -85,10 +85,10 @@ class MessageGenerator { ...@@ -85,10 +85,10 @@ class MessageGenerator {
FieldGeneratorMap field_generators_; FieldGeneratorMap field_generators_;
const string class_name_; const string class_name_;
const string deprecated_attribute_; const string deprecated_attribute_;
std::vector<ExtensionGenerator*> extension_generators_; std::vector<std::unique_ptr<ExtensionGenerator>> extension_generators_;
std::vector<EnumGenerator*> enum_generators_; std::vector<std::unique_ptr<EnumGenerator>> enum_generators_;
std::vector<MessageGenerator*> nested_message_generators_; std::vector<std::unique_ptr<MessageGenerator>> nested_message_generators_;
std::vector<OneofGenerator*> oneof_generators_; std::vector<std::unique_ptr<OneofGenerator>> oneof_generators_;
}; };
} // namespace objectivec } // namespace objectivec
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment