| 2531 | } |
| 2532 | |
| 2533 | status_t ResourceTable::addSymbols(const sp<AaptSymbols>& outSymbols) { |
| 2534 | const size_t N = mOrderedPackages.size(); |
| 2535 | size_t pi; |
| 2536 | |
| 2537 | for (pi=0; pi<N; pi++) { |
| 2538 | sp<Package> p = mOrderedPackages.itemAt(pi); |
| 2539 | if (p->getTypes().size() == 0) { |
| 2540 | // Empty, skip! |
| 2541 | continue; |
| 2542 | } |
| 2543 | |
| 2544 | const size_t N = p->getOrderedTypes().size(); |
| 2545 | size_t ti; |
| 2546 | |
| 2547 | for (ti=0; ti<N; ti++) { |
| 2548 | sp<Type> t = p->getOrderedTypes().itemAt(ti); |
| 2549 | if (t == NULL) { |
| 2550 | continue; |
| 2551 | } |
| 2552 | const size_t N = t->getOrderedConfigs().size(); |
| 2553 | sp<AaptSymbols> typeSymbols; |
| 2554 | typeSymbols = outSymbols->addNestedSymbol(String8(t->getName()), t->getPos()); |
| 2555 | for (size_t ci=0; ci<N; ci++) { |
| 2556 | sp<ConfigList> c = t->getOrderedConfigs().itemAt(ci); |
| 2557 | if (c == NULL) { |
| 2558 | continue; |
| 2559 | } |
| 2560 | uint32_t rid = getResId(p, t, ci); |
| 2561 | if (rid == 0) { |
| 2562 | return UNKNOWN_ERROR; |
| 2563 | } |
| 2564 | if (Res_GETPACKAGE(rid) == (size_t)(p->getAssignedId()-1)) { |
| 2565 | typeSymbols->addSymbol(String8(c->getName()), rid, c->getPos()); |
| 2566 | |
| 2567 | String16 comment(c->getComment()); |
| 2568 | typeSymbols->appendComment(String8(c->getName()), comment, c->getPos()); |
| 2569 | //printf("Type symbol [%08x] %s comment: %s\n", rid, |
| 2570 | // String8(c->getName()).string(), String8(comment).string()); |
| 2571 | comment = c->getTypeComment(); |
| 2572 | typeSymbols->appendTypeComment(String8(c->getName()), comment); |
| 2573 | } else { |
| 2574 | #if 0 |
| 2575 | printf("**** NO MATCH: 0x%08x vs 0x%08x\n", |
| 2576 | Res_GETPACKAGE(rid), p->getAssignedId()); |
| 2577 | #endif |
| 2578 | } |
| 2579 | } |
| 2580 | } |
| 2581 | } |
| 2582 | return NO_ERROR; |
| 2583 | } |
| 2584 | |
| 2585 | |
| 2586 | void |
no test coverage detected