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