summaryrefslogtreecommitdiff
path: root/Cydia.mm
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2009-04-20 19:36:14 +0000
committerJay Freeman (saurik) <saurik@saurik.com>2010-09-30 07:13:13 +0000
commit0dd0c302eaae38ba052e3c44eef709436e3058db (patch)
tree7289df2a917fcd706163e5541aa50466004a0353 /Cydia.mm
parent843e75b8b18cd5eb0ce88b6f65ba37aa5b17a0f5 (diff)
Take advantage of Name/Tag optimizations.
Diffstat (limited to 'Cydia.mm')
-rw-r--r--Cydia.mm30
1 files changed, 19 insertions, 11 deletions
diff --git a/Cydia.mm b/Cydia.mm
index 1a9d8d0..c40a0d2 100644
--- a/Cydia.mm
+++ b/Cydia.mm
@@ -1138,11 +1138,15 @@ NSString *SizeString(double size) {
return [NSString stringWithFormat:@"%s%.1f %s", (negative ? "-" : ""), size, powers_[power]];
}
+static _finline CFStringRef CFCString(const char *value) {
+ return CFStringCreateWithBytesNoCopy(kCFAllocatorDefault, reinterpret_cast<const uint8_t *>(value), strlen(value), kCFStringEncodingUTF8, NO, kCFAllocatorNull);
+}
+
CFStringRef StripVersion(const char *version) {
const char *colon(strchr(version, ':'));
if (colon != NULL)
version = colon + 1;
- return CFStringCreateWithBytesNoCopy(kCFAllocatorDefault, reinterpret_cast<const uint8_t *>(version), strlen(version), kCFStringEncodingUTF8, NO, kCFAllocatorNull);
+ return CFCString(version);
}
NSString *LocalizeSection(NSString *section) {
@@ -1691,7 +1695,7 @@ typedef std::map< unsigned long, _H<Source> > SourceMap;
Address *author$_;
CYString support_;
- NSArray *tags_;
+ NSMutableArray *tags_;
NSString *role_;
NSArray *relationships_;
@@ -2007,7 +2011,7 @@ struct PackageNameOrdering :
_profile(Package$parse$Tagline)
const char *start, *end;
- if (parser->Find("Description", start, end)) {
+ if (parser->ShortDesc(start, end)) {
const char *stop(reinterpret_cast<const char *>(memchr(start, '\n', end - start)));
if (stop == NULL)
stop = end;
@@ -2057,6 +2061,7 @@ struct PackageNameOrdering :
_profile(Package$initWithVersion$Name)
id_.set(pool_, iterator_.Name());
+ name_.set(pool, iterator_.Display());
_end
if (!file_.end()) {
@@ -2068,15 +2073,18 @@ struct PackageNameOrdering :
_end
}
- /* XXX: get the damned Name */
-
_profile(Package$initWithVersion$Tags)
- if (tags_ != nil)
- for (NSString *tag in tags_)
- if ([tag hasPrefix:@"role::"]) {
- role_ = [[tag substringFromIndex:6] retain];
- break;
- }
+ pkgCache::TagIterator tag(iterator_.TagList());
+ if (!tag.end()) {
+ tags_ = [[NSMutableArray alloc] initWithCapacity:8];
+ do {
+ const char *name(tag.Name());
+ [tags_ addObject:(NSString *)CFCString(name)];
+ if (role_ == nil && strncmp(name, "role::", 6) == 0)
+ role_ = (NSString *) CFCString(name + 6);
+ ++tag;
+ } while (!tag.end());
+ }
_end
bool changed(false);