Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(319)

Side by Side Diff: tools/gn/xcode_object.cc

Issue 2252293003: Re-write many calls to WrapUnique() with MakeUnique() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/gn/parser.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "tools/gn/xcode_object.h" 5 #include "tools/gn/xcode_object.h"
6 6
7 #include <iomanip> 7 #include <iomanip>
8 #include <sstream> 8 #include <sstream>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 // PBXTarget ------------------------------------------------------------------ 310 // PBXTarget ------------------------------------------------------------------
311 311
312 PBXTarget::PBXTarget(const std::string& name, 312 PBXTarget::PBXTarget(const std::string& name,
313 const std::string& shell_script, 313 const std::string& shell_script,
314 const std::string& config_name, 314 const std::string& config_name,
315 const PBXAttributes& attributes) 315 const PBXAttributes& attributes)
316 : configurations_(new XCConfigurationList(config_name, attributes, this)), 316 : configurations_(new XCConfigurationList(config_name, attributes, this)),
317 name_(name) { 317 name_(name) {
318 if (!shell_script.empty()) { 318 if (!shell_script.empty()) {
319 build_phases_.push_back( 319 build_phases_.push_back(
320 base::WrapUnique(new PBXShellScriptBuildPhase(name, shell_script))); 320 base::MakeUnique<PBXShellScriptBuildPhase>(name, shell_script));
321 } 321 }
322 } 322 }
323 323
324 PBXTarget::~PBXTarget() {} 324 PBXTarget::~PBXTarget() {}
325 325
326 std::string PBXTarget::Name() const { 326 std::string PBXTarget::Name() const {
327 return name_; 327 return name_;
328 } 328 }
329 329
330 void PBXTarget::Visit(PBXObjectVisitor& visitor) { 330 void PBXTarget::Visit(PBXObjectVisitor& visitor) {
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 PBXObject* PBXGroup::AddChild(std::unique_ptr<PBXObject> child) { 468 PBXObject* PBXGroup::AddChild(std::unique_ptr<PBXObject> child) {
469 DCHECK(child); 469 DCHECK(child);
470 children_.push_back(std::move(child)); 470 children_.push_back(std::move(child));
471 return children_.back().get(); 471 return children_.back().get();
472 } 472 }
473 473
474 PBXFileReference* PBXGroup::AddSourceFile(const std::string& source_path) { 474 PBXFileReference* PBXGroup::AddSourceFile(const std::string& source_path) {
475 DCHECK(!source_path.empty()); 475 DCHECK(!source_path.empty());
476 std::string::size_type sep = source_path.find("/"); 476 std::string::size_type sep = source_path.find("/");
477 if (sep == std::string::npos) { 477 if (sep == std::string::npos) {
478 children_.push_back(base::WrapUnique( 478 children_.push_back(base::MakeUnique<PBXFileReference>(
479 new PBXFileReference(std::string(), source_path, std::string()))); 479 std::string(), source_path, std::string()));
480 return static_cast<PBXFileReference*>(children_.back().get()); 480 return static_cast<PBXFileReference*>(children_.back().get());
481 } 481 }
482 482
483 PBXGroup* group = nullptr; 483 PBXGroup* group = nullptr;
484 base::StringPiece component(source_path.data(), sep); 484 base::StringPiece component(source_path.data(), sep);
485 for (const auto& child : children_) { 485 for (const auto& child : children_) {
486 if (child->Class() != PBXGroupClass) 486 if (child->Class() != PBXGroupClass)
487 continue; 487 continue;
488 488
489 PBXGroup* child_as_group = static_cast<PBXGroup*>(child.get()); 489 PBXGroup* child_as_group = static_cast<PBXGroup*>(child.get());
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 556
557 build_phases_.push_back(base::WrapUnique(new PBXFrameworksBuildPhase)); 557 build_phases_.push_back(base::WrapUnique(new PBXFrameworksBuildPhase));
558 } 558 }
559 559
560 PBXNativeTarget::~PBXNativeTarget() {} 560 PBXNativeTarget::~PBXNativeTarget() {}
561 561
562 void PBXNativeTarget::AddFileForIndexing( 562 void PBXNativeTarget::AddFileForIndexing(
563 const PBXFileReference* file_reference) { 563 const PBXFileReference* file_reference) {
564 DCHECK(file_reference); 564 DCHECK(file_reference);
565 source_build_phase_->AddBuildFile( 565 source_build_phase_->AddBuildFile(
566 base::WrapUnique(new PBXBuildFile(file_reference, source_build_phase_))); 566 base::MakeUnique<PBXBuildFile>(file_reference, source_build_phase_));
567 } 567 }
568 568
569 PBXObjectClass PBXNativeTarget::Class() const { 569 PBXObjectClass PBXNativeTarget::Class() const {
570 return PBXNativeTargetClass; 570 return PBXNativeTargetClass;
571 } 571 }
572 572
573 void PBXNativeTarget::Print(std::ostream& out, unsigned indent) const { 573 void PBXNativeTarget::Print(std::ostream& out, unsigned indent) const {
574 const std::string indent_str(indent, '\t'); 574 const std::string indent_str(indent, '\t');
575 const IndentRules rules = {false, indent + 1}; 575 const IndentRules rules = {false, indent + 1};
576 out << indent_str << Reference() << " = {\n"; 576 out << indent_str << Reference() << " = {\n";
(...skipping 12 matching lines...) Expand all
589 // PBXProject ----------------------------------------------------------------- 589 // PBXProject -----------------------------------------------------------------
590 590
591 PBXProject::PBXProject(const std::string& name, 591 PBXProject::PBXProject(const std::string& name,
592 const std::string& config_name, 592 const std::string& config_name,
593 const std::string& source_path, 593 const std::string& source_path,
594 const PBXAttributes& attributes) 594 const PBXAttributes& attributes)
595 : name_(name), config_name_(config_name), target_for_indexing_(nullptr) { 595 : name_(name), config_name_(config_name), target_for_indexing_(nullptr) {
596 attributes_["BuildIndependentTargetsInParallel"] = "YES"; 596 attributes_["BuildIndependentTargetsInParallel"] = "YES";
597 597
598 main_group_.reset(new PBXGroup); 598 main_group_.reset(new PBXGroup);
599 sources_ = static_cast<PBXGroup*>(main_group_->AddChild( 599 sources_ = static_cast<PBXGroup*>(
600 base::WrapUnique(new PBXGroup(source_path, "Source")))); 600 main_group_->AddChild(base::MakeUnique<PBXGroup>(source_path, "Source")));
601 products_ = static_cast<PBXGroup*>(main_group_->AddChild( 601 products_ = static_cast<PBXGroup*>(main_group_->AddChild(
602 base::WrapUnique(new PBXGroup(std::string(), "Product")))); 602 base::MakeUnique<PBXGroup>(std::string(), "Product")));
603 main_group_->AddChild(base::WrapUnique(new PBXGroup(std::string(), "Build"))); 603 main_group_->AddChild(base::MakeUnique<PBXGroup>(std::string(), "Build"));
604 604
605 configurations_.reset(new XCConfigurationList(config_name, attributes, this)); 605 configurations_.reset(new XCConfigurationList(config_name, attributes, this));
606 } 606 }
607 607
608 PBXProject::~PBXProject() {} 608 PBXProject::~PBXProject() {}
609 609
610 void PBXProject::AddSourceFile(const std::string& source_path) { 610 void PBXProject::AddSourceFile(const std::string& source_path) {
611 PBXFileReference* file_reference = sources_->AddSourceFile(source_path); 611 PBXFileReference* file_reference = sources_->AddSourceFile(source_path);
612 base::StringPiece ext = FindExtension(&source_path); 612 base::StringPiece ext = FindExtension(&source_path);
613 if (!IsSourceFileForIndexing(ext)) 613 if (!IsSourceFileForIndexing(ext))
614 return; 614 return;
615 615
616 if (!target_for_indexing_) { 616 if (!target_for_indexing_) {
617 PBXAttributes attributes; 617 PBXAttributes attributes;
618 attributes["EXECUTABLE_PREFIX"] = ""; 618 attributes["EXECUTABLE_PREFIX"] = "";
619 attributes["HEADER_SEARCH_PATHS"] = sources_->path(); 619 attributes["HEADER_SEARCH_PATHS"] = sources_->path();
620 attributes["PRODUCT_NAME"] = name_; 620 attributes["PRODUCT_NAME"] = name_;
621 621
622 PBXFileReference* product_reference = static_cast<PBXFileReference*>( 622 PBXFileReference* product_reference = static_cast<PBXFileReference*>(
623 products_->AddChild(base::WrapUnique(new PBXFileReference( 623 products_->AddChild(base::MakeUnique<PBXFileReference>(
624 std::string(), name_, "compiled.mach-o.executable")))); 624 std::string(), name_, "compiled.mach-o.executable")));
625 625
626 const char product_type[] = "com.apple.product-type.tool"; 626 const char product_type[] = "com.apple.product-type.tool";
627 targets_.push_back(base::WrapUnique( 627 targets_.push_back(base::MakeUnique<PBXNativeTarget>(
628 new PBXNativeTarget(name_, std::string(), config_name_, attributes, 628 name_, std::string(), config_name_, attributes, product_type, name_,
629 product_type, name_, product_reference))); 629 product_reference));
630 target_for_indexing_ = static_cast<PBXNativeTarget*>(targets_.back().get()); 630 target_for_indexing_ = static_cast<PBXNativeTarget*>(targets_.back().get());
631 } 631 }
632 632
633 DCHECK(target_for_indexing_); 633 DCHECK(target_for_indexing_);
634 target_for_indexing_->AddFileForIndexing(file_reference); 634 target_for_indexing_->AddFileForIndexing(file_reference);
635 } 635 }
636 636
637 void PBXProject::AddAggregateTarget(const std::string& name, 637 void PBXProject::AddAggregateTarget(const std::string& name,
638 const std::string& shell_script) { 638 const std::string& shell_script) {
639 PBXAttributes attributes; 639 PBXAttributes attributes;
640 attributes["CODE_SIGNING_REQUIRED"] = "NO"; 640 attributes["CODE_SIGNING_REQUIRED"] = "NO";
641 attributes["CONFIGURATION_BUILD_DIR"] = "."; 641 attributes["CONFIGURATION_BUILD_DIR"] = ".";
642 attributes["PRODUCT_NAME"] = name; 642 attributes["PRODUCT_NAME"] = name;
643 643
644 targets_.push_back(base::WrapUnique( 644 targets_.push_back(base::MakeUnique<PBXAggregateTarget>(
645 new PBXAggregateTarget(name, shell_script, config_name_, attributes))); 645 name, shell_script, config_name_, attributes));
646 } 646 }
647 647
648 void PBXProject::AddNativeTarget(const std::string& name, 648 void PBXProject::AddNativeTarget(const std::string& name,
649 const std::string& type, 649 const std::string& type,
650 const std::string& output_name, 650 const std::string& output_name,
651 const std::string& output_type, 651 const std::string& output_type,
652 const std::string& shell_script) { 652 const std::string& shell_script) {
653 base::StringPiece ext = FindExtension(&output_name); 653 base::StringPiece ext = FindExtension(&output_name);
654 PBXFileReference* product = 654 PBXFileReference* product = static_cast<PBXFileReference*>(
655 static_cast<PBXFileReference*>(products_->AddChild(base::WrapUnique( 655 products_->AddChild(base::MakeUnique<PBXFileReference>(
656 new PBXFileReference(std::string(), output_name, 656 std::string(), output_name,
657 type.empty() ? GetSourceType(ext) : type)))); 657 type.empty() ? GetSourceType(ext) : type)));
658 658
659 size_t ext_offset = FindExtensionOffset(output_name); 659 size_t ext_offset = FindExtensionOffset(output_name);
660 std::string product_name = ext_offset != std::string::npos 660 std::string product_name = ext_offset != std::string::npos
661 ? output_name.substr(0, ext_offset - 1) 661 ? output_name.substr(0, ext_offset - 1)
662 : output_name; 662 : output_name;
663 663
664 PBXAttributes attributes; 664 PBXAttributes attributes;
665 attributes["CODE_SIGNING_REQUIRED"] = "NO"; 665 attributes["CODE_SIGNING_REQUIRED"] = "NO";
666 attributes["CONFIGURATION_BUILD_DIR"] = "."; 666 attributes["CONFIGURATION_BUILD_DIR"] = ".";
667 attributes["PRODUCT_NAME"] = product_name; 667 attributes["PRODUCT_NAME"] = product_name;
668 668
669 targets_.push_back(base::WrapUnique( 669 targets_.push_back(base::MakeUnique<PBXNativeTarget>(
670 new PBXNativeTarget(name, shell_script, config_name_, attributes, 670 name, shell_script, config_name_, attributes, output_type, product_name,
671 output_type, product_name, product))); 671 product));
672 } 672 }
673 673
674 void PBXProject::SetProjectDirPath(const std::string& project_dir_path) { 674 void PBXProject::SetProjectDirPath(const std::string& project_dir_path) {
675 DCHECK(!project_dir_path.empty()); 675 DCHECK(!project_dir_path.empty());
676 project_dir_path_.assign(project_dir_path); 676 project_dir_path_.assign(project_dir_path);
677 } 677 }
678 678
679 void PBXProject::SetProjectRoot(const std::string& project_root) { 679 void PBXProject::SetProjectRoot(const std::string& project_root) {
680 DCHECK(!project_root.empty()); 680 DCHECK(!project_root.empty());
681 project_root_.assign(project_root); 681 project_root_.assign(project_root);
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 } 824 }
825 825
826 // XCConfigurationList -------------------------------------------------------- 826 // XCConfigurationList --------------------------------------------------------
827 827
828 XCConfigurationList::XCConfigurationList(const std::string& name, 828 XCConfigurationList::XCConfigurationList(const std::string& name,
829 const PBXAttributes& attributes, 829 const PBXAttributes& attributes,
830 const PBXObject* owner_reference) 830 const PBXObject* owner_reference)
831 : owner_reference_(owner_reference) { 831 : owner_reference_(owner_reference) {
832 DCHECK(owner_reference_); 832 DCHECK(owner_reference_);
833 configurations_.push_back( 833 configurations_.push_back(
834 base::WrapUnique(new XCBuildConfiguration(name, attributes))); 834 base::MakeUnique<XCBuildConfiguration>(name, attributes));
835 } 835 }
836 836
837 XCConfigurationList::~XCConfigurationList() {} 837 XCConfigurationList::~XCConfigurationList() {}
838 838
839 PBXObjectClass XCConfigurationList::Class() const { 839 PBXObjectClass XCConfigurationList::Class() const {
840 return XCConfigurationListClass; 840 return XCConfigurationListClass;
841 } 841 }
842 842
843 std::string XCConfigurationList::Name() const { 843 std::string XCConfigurationList::Name() const {
844 std::stringstream buffer; 844 std::stringstream buffer;
(...skipping 14 matching lines...) Expand all
859 const std::string indent_str(indent, '\t'); 859 const std::string indent_str(indent, '\t');
860 const IndentRules rules = {false, indent + 1}; 860 const IndentRules rules = {false, indent + 1};
861 out << indent_str << Reference() << " = {\n"; 861 out << indent_str << Reference() << " = {\n";
862 PrintProperty(out, rules, "isa", ToString(Class())); 862 PrintProperty(out, rules, "isa", ToString(Class()));
863 PrintProperty(out, rules, "buildConfigurations", configurations_); 863 PrintProperty(out, rules, "buildConfigurations", configurations_);
864 PrintProperty(out, rules, "defaultConfigurationIsVisible", 1u); 864 PrintProperty(out, rules, "defaultConfigurationIsVisible", 1u);
865 PrintProperty(out, rules, "defaultConfigurationName", 865 PrintProperty(out, rules, "defaultConfigurationName",
866 configurations_[0]->Name()); 866 configurations_[0]->Name());
867 out << indent_str << "};\n"; 867 out << indent_str << "};\n";
868 } 868 }
OLDNEW
« no previous file with comments | « tools/gn/parser.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698