IdAssigner.h revision cacb28f2d60858106e2819cc7d95a65e8bda890b
198aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski/* 298aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * Copyright (C) 2015 The Android Open Source Project 398aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * 498aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 598aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * you may not use this file except in compliance with the License. 698aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * You may obtain a copy of the License at 798aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * 898aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 998aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * 1098aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * Unless required by applicable law or agreed to in writing, software 1198aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 1298aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1398aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * See the License for the specific language governing permissions and 1498aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski * limitations under the License. 1598aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski */ 1698aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski 171ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski#ifndef AAPT_COMPILE_IDASSIGNER_H 181ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski#define AAPT_COMPILE_IDASSIGNER_H 1998aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski 20bf0bd0f9ac1ffa0231cff0f6591dede48b3c6d52Adam Lesinski#include "Resource.h" 211ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski#include "process/IResourceTableConsumer.h" 2298aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski 23bf0bd0f9ac1ffa0231cff0f6591dede48b3c6d52Adam Lesinski#include <android-base/macros.h> 24bf0bd0f9ac1ffa0231cff0f6591dede48b3c6d52Adam Lesinski#include <unordered_map> 25bf0bd0f9ac1ffa0231cff0f6591dede48b3c6d52Adam Lesinski 2698aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinskinamespace aapt { 2798aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski 281ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski/** 29cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski * Assigns IDs to each resource in the table, respecting existing IDs and 30cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski * filling in gaps 311ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski * in between fixed ID assignments. 321ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski */ 33bf0bd0f9ac1ffa0231cff0f6591dede48b3c6d52Adam Lesinskiclass IdAssigner : public IResourceTableConsumer { 34cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski public: 35cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski IdAssigner() = default; 36cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski explicit IdAssigner(const std::unordered_map<ResourceName, ResourceId>* map) 37cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski : mAssignedIdMap(map) {} 38bf0bd0f9ac1ffa0231cff0f6591dede48b3c6d52Adam Lesinski 39cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski bool consume(IAaptContext* context, ResourceTable* table) override; 40bf0bd0f9ac1ffa0231cff0f6591dede48b3c6d52Adam Lesinski 41cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski private: 42cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski const std::unordered_map<ResourceName, ResourceId>* mAssignedIdMap = nullptr; 4398aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski}; 4498aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski 45cacb28f2d60858106e2819cc7d95a65e8bda890bAdam Lesinski} // namespace aapt 4698aa3ad6e46e3b0270785c8b3f9798e37e8af140Adam Lesinski 471ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski#endif /* AAPT_COMPILE_IDASSIGNER_H */ 48