91447d88f2
Support 3 letter language codes, script codes & variants. The bulk of the changes are related to the implementation of command line filtering of locales etc. The previous code assumed that the value of each "axis" (locale, density, size etc.) could be represented by a 4 byte type. This is no longer the case. This change introduces a new class, AaptLocaleValue which holds a (normalized) locale parsed from a directory name or a filter string. This class takes responsibility for parsing locales as well as writing them to ResTable_config structures, which is their representation in the resource table. This includes minor changes at the java / JNI level for AssetManager. We now call locale.toLanguageTag() to give the native layer a well formed BCP-47 tag. I've removed some duplicated parsing code in AssetManager.cpp and replaced them with functions on ResTable_config. The native getLocales function has been changed to return well formed BCP-47 locales as well, so that the corresponding java function can use Locale.forLanguageTag to construct a Locale object out of it. Finally, this change introduces default and copy constructors for ResTable_config to prevent having to memset() the associated memory to 0 on every stack allocation. Change-Id: I899a56a9a182ee6be52b9389d1ae59266f5482e9
30 lines
623 B
C++
30 lines
623 B
C++
//
|
|
// Copyright 2012 The Android Open Source Project
|
|
//
|
|
// Manage a resource ID cache.
|
|
|
|
#ifndef RESOURCE_ID_CACHE_H
|
|
#define RESOURCE_ID_CACHE_H
|
|
|
|
namespace android {
|
|
|
|
class ResourceIdCache {
|
|
public:
|
|
static uint32_t lookup(const android::String16& package,
|
|
const android::String16& type,
|
|
const android::String16& name,
|
|
bool onlyPublic);
|
|
|
|
static uint32_t store(const android::String16& package,
|
|
const android::String16& type,
|
|
const android::String16& name,
|
|
bool onlyPublic,
|
|
uint32_t resId);
|
|
|
|
static void dump(void);
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|