| 712 | } |
| 713 | |
| 714 | std::map<Path, std::map<std::string, LayerDisplay>> LayerManager::BuildLayerStoreList() const { |
| 715 | std::map<Path, std::map<std::string, LayerDisplay>> result; |
| 716 | |
| 717 | for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { |
| 718 | const Layer *layer = &this->available_layers[i]; |
| 719 | if (layer == nullptr) { |
| 720 | continue; |
| 721 | } |
| 722 | /* |
| 723 | if (layer->descriptor.removed) { |
| 724 | continue; |
| 725 | } |
| 726 | */ |
| 727 | LayerDisplay layer_display; |
| 728 | layer_display.id.manifest_path = layer->manifest_path; |
| 729 | layer_display.id.key = layer->key; |
| 730 | layer_display.id.api_version = layer->api_version; |
| 731 | layer_display.descriptor = layer->descriptor; |
| 732 | |
| 733 | auto it = result.find(layer->manifest_path); |
| 734 | if (it == result.end()) { |
| 735 | std::map<std::string, LayerDisplay> entry; |
| 736 | entry.insert(std::make_pair(layer->key, layer_display)); |
| 737 | result.insert(std::make_pair(layer->manifest_path, entry)); |
| 738 | } else { |
| 739 | auto jt = it->second.find(layer->key); |
| 740 | if (jt == it->second.end()) { |
| 741 | it->second.insert(std::make_pair(layer->key, layer_display)); |
| 742 | } else { |
| 743 | assert(0); |
| 744 | } |
| 745 | } |
| 746 | } |
| 747 | |
| 748 | for (auto it = this->layer_init.begin(), end = this->layer_init.end(); it != end; ++it) { |
| 749 | auto jt = result.find(it->first); |
| 750 | if (jt == result.end()) { |
| 751 | const std::vector<LayerDisplay> &display = it->second; |
| 752 | std::map<std::string, LayerDisplay> entry; |
| 753 | |
| 754 | for (std::size_t i = 0, n = display.size(); i < n; ++i) { |
| 755 | entry.insert(std::make_pair(display[i].id.key, display[i])); |
| 756 | } |
| 757 | |
| 758 | result.insert(std::make_pair(it->first, entry)); |
| 759 | } |
| 760 | } |
| 761 | |
| 762 | return result; |
| 763 | } |
| 764 | |
| 765 | std::set<LayerDisplay> LayerManager::BuildLayerDisplayList() const { |
| 766 | std::set<LayerDisplay> result; |