|
@@ -59,7 +59,6 @@ namespace objectivec {
|
|
|
FileGenerator::FileGenerator(const FileDescriptor *file, const Options& options)
|
|
|
: file_(file),
|
|
|
root_class_name_(FileClassName(file)),
|
|
|
- is_public_dep_(false),
|
|
|
options_(options) {
|
|
|
for (int i = 0; i < file_->enum_type_count(); i++) {
|
|
|
EnumGenerator *generator = new EnumGenerator(file_->enum_type(i));
|
|
@@ -78,8 +77,6 @@ FileGenerator::FileGenerator(const FileDescriptor *file, const Options& options)
|
|
|
}
|
|
|
|
|
|
FileGenerator::~FileGenerator() {
|
|
|
- STLDeleteContainerPointers(dependency_generators_.begin(),
|
|
|
- dependency_generators_.end());
|
|
|
STLDeleteContainerPointers(enum_generators_.begin(), enum_generators_.end());
|
|
|
STLDeleteContainerPointers(message_generators_.begin(),
|
|
|
message_generators_.end());
|
|
@@ -105,14 +102,9 @@ void FileGenerator::GenerateHeader(io::Printer *printer) {
|
|
|
ImportWriter import_writer(
|
|
|
options_.generate_for_named_framework,
|
|
|
options_.named_framework_to_proto_path_mappings_path);
|
|
|
- const vector<FileGenerator *> &dependency_generators = DependencyGenerators();
|
|
|
const string header_extension(kHeaderExtension);
|
|
|
- for (vector<FileGenerator *>::const_iterator iter =
|
|
|
- dependency_generators.begin();
|
|
|
- iter != dependency_generators.end(); ++iter) {
|
|
|
- if ((*iter)->IsPublicDependency()) {
|
|
|
- import_writer.AddFile((*iter)->file_, header_extension);
|
|
|
- }
|
|
|
+ for (int i = 0; i < file_->public_dependency_count(); i++) {
|
|
|
+ import_writer.AddFile(file_->public_dependency(i), header_extension);
|
|
|
}
|
|
|
import_writer.Print(printer);
|
|
|
}
|
|
@@ -223,13 +215,15 @@ void FileGenerator::GenerateSource(io::Printer *printer) {
|
|
|
|
|
|
// #import the headers for anything that a plain dependency of this proto
|
|
|
// file (that means they were just an include, not a "public" include).
|
|
|
- const vector<FileGenerator *> &dependency_generators =
|
|
|
- DependencyGenerators();
|
|
|
- for (vector<FileGenerator *>::const_iterator iter =
|
|
|
- dependency_generators.begin();
|
|
|
- iter != dependency_generators.end(); ++iter) {
|
|
|
- if (!(*iter)->IsPublicDependency()) {
|
|
|
- import_writer.AddFile((*iter)->file_, header_extension);
|
|
|
+ set<string> public_import_names;
|
|
|
+ for (int i = 0; i < file_->public_dependency_count(); i++) {
|
|
|
+ public_import_names.insert(file_->public_dependency(i)->name());
|
|
|
+ }
|
|
|
+ for (int i = 0; i < file_->dependency_count(); i++) {
|
|
|
+ const FileDescriptor *dep = file_->dependency(i);
|
|
|
+ bool public_import = (public_import_names.count(dep->name()) != 0);
|
|
|
+ if (!public_import) {
|
|
|
+ import_writer.AddFile(dep, header_extension);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -321,14 +315,11 @@ void FileGenerator::GenerateSource(io::Printer *printer) {
|
|
|
"}\n");
|
|
|
}
|
|
|
|
|
|
- const vector<FileGenerator *> &dependency_generators =
|
|
|
- DependencyGenerators();
|
|
|
- for (vector<FileGenerator *>::const_iterator iter =
|
|
|
- dependency_generators.begin();
|
|
|
- iter != dependency_generators.end(); ++iter) {
|
|
|
+ for (int i = 0; i < file_->dependency_count(); i++) {
|
|
|
+ const string root_class_name(FileClassName(file_->dependency(i)));
|
|
|
printer->Print(
|
|
|
"[registry addExtensions:[$dependency$ extensionRegistry]];\n",
|
|
|
- "dependency", (*iter)->RootClassName());
|
|
|
+ "dependency", root_class_name);
|
|
|
}
|
|
|
|
|
|
printer->Outdent();
|
|
@@ -393,24 +384,6 @@ void FileGenerator::GenerateSource(io::Printer *printer) {
|
|
|
"// @@protoc_insertion_point(global_scope)\n");
|
|
|
}
|
|
|
|
|
|
-const vector<FileGenerator *> &FileGenerator::DependencyGenerators() {
|
|
|
- if (file_->dependency_count() != dependency_generators_.size()) {
|
|
|
- set<string> public_import_names;
|
|
|
- for (int i = 0; i < file_->public_dependency_count(); i++) {
|
|
|
- public_import_names.insert(file_->public_dependency(i)->name());
|
|
|
- }
|
|
|
- for (int i = 0; i < file_->dependency_count(); i++) {
|
|
|
- FileGenerator *generator =
|
|
|
- new FileGenerator(file_->dependency(i), options_);
|
|
|
- const string& name = file_->dependency(i)->name();
|
|
|
- bool public_import = (public_import_names.count(name) != 0);
|
|
|
- generator->SetIsPublicDependency(public_import);
|
|
|
- dependency_generators_.push_back(generator);
|
|
|
- }
|
|
|
- }
|
|
|
- return dependency_generators_;
|
|
|
-}
|
|
|
-
|
|
|
// Helper to print the import of the runtime support at the top of generated
|
|
|
// files. This currently only supports the runtime coming from a framework
|
|
|
// as defined by the official CocoaPod.
|