| 3829 | } |
| 3830 | |
| 3831 | sp<ResourceTable::Package> ResourceTable::getPackage(const String16& package) |
| 3832 | { |
| 3833 | sp<Package> p = mPackages.valueFor(package); |
| 3834 | if (p == NULL) { |
| 3835 | if (mIsAppPackage) { |
| 3836 | if (mHaveAppPackage) { |
| 3837 | fprintf(stderr, "Adding multiple application package resources; only one is allowed.\n" |
| 3838 | "Use -x to create extended resources.\n"); |
| 3839 | return NULL; |
| 3840 | } |
| 3841 | mHaveAppPackage = true; |
| 3842 | p = new Package(package, 127); |
| 3843 | } else { |
| 3844 | int extendedPackageId = mBundle->getExtendedPackageId(); |
| 3845 | if (extendedPackageId != 0) { |
| 3846 | if ((uint32_t)extendedPackageId < mNextPackageId) { |
| 3847 | fprintf(stderr, "Package ID %d already in use!\n", mNextPackageId); |
| 3848 | return NULL; |
| 3849 | } |
| 3850 | p = new Package(package, extendedPackageId); |
| 3851 | } else { |
| 3852 | p = new Package(package, mNextPackageId); |
| 3853 | } |
| 3854 | } |
| 3855 | //printf("*** NEW PACKAGE: \"%s\" id=%d\n", |
| 3856 | // String8(package).string(), p->getAssignedId()); |
| 3857 | mPackages.add(package, p); |
| 3858 | mOrderedPackages.add(p); |
| 3859 | mNextPackageId++; |
| 3860 | } |
| 3861 | return p; |
| 3862 | } |
| 3863 | |
| 3864 | sp<ResourceTable::Type> ResourceTable::getType(const String16& package, |
| 3865 | const String16& type, |