Skip to content

Commit

Permalink
Add referenced object loaders to GITCommit, GITTag and GITTreeItem
Browse files Browse the repository at this point in the history
  • Loading branch information
geoffgarside committed Jan 17, 2010
1 parent c9af5c5 commit b1d3135
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 30 deletions.
51 changes: 26 additions & 25 deletions Source/GITCommit.m
Expand Up @@ -14,6 +14,7 @@
#import "GITActor.h"
#import "GITError.h"
#import "GITActor+Parsing.h"
#import "GITRepo.h"


// { (char*).startPattern, (NSUI).patternLen, (NSI).startLen, (NSUI).matchLen, (char).endChar}
Expand Down Expand Up @@ -109,34 +110,34 @@ - (void)dealloc {
}

// Lazy object loaders
// - (GITTree *)tree {
// if ( !tree && self.treeSha1 )
// self.tree =
// return tree;
// }
//
- (GITTree *)tree {
if ( !tree && self.treeSha1 )
self.tree = (GITTree *)[self.repo objectWithSha1:self.treeSha1 error:NULL];
return tree;
}

- (NSString *)parentSha1 {
return [self.parentShas lastObject];
}
//
// - (GITCommit *)parent {
// return [self.parents lastObject];
// }
//
// - (NSArray *)parents {
// if ( !parents && self.parentShas ) {
// NSMutableArray *newParents = [[NSMutableArray alloc] initWithCapacity:[self.parentShas count]];
// for ( NSString *parentSha1 in self.parentShas ) {
// GITCommit *parent =
// [newParents addObject:parent];
// }
//
// self.parents = newParents;
// [newParents release];
// }
//
// return parents;
// }

- (GITCommit *)parent {
return [self.parents lastObject];
}

- (NSArray *)parents {
if ( !parents && self.parentShas ) {
NSMutableArray *newParents = [[NSMutableArray alloc] initWithCapacity:[self.parentShas count]];
for ( GITObjectHash *parentSha1 in self.parentShas ) {
GITCommit *parent = (GITCommit *)[self.repo objectWithSha1:parentSha1 error:NULL];
[newParents addObject:parent];
}

self.parents = newParents;
[newParents release];
}

return parents;
}

// Lazily loaded properties
- (GITActor *)author {
Expand Down
12 changes: 12 additions & 0 deletions Source/GITTag.m
Expand Up @@ -100,6 +100,18 @@ - (void)dealloc {
[super dealloc];
}

// Lazy object loaders
- (GITObject *)target {
if ( !target ) {
self.target = [self.repo objectWithSha1:self.targetSha1 error:NULL];
if ( [self.target type] != self.targetType ) {
self.target = nil;
}
}

return nil;
}

// Lazily loaded properties
- (GITActor *)tagger {
if ( !tagger )
Expand Down
10 changes: 5 additions & 5 deletions Source/GITTreeItem.m
Expand Up @@ -32,10 +32,10 @@ - (id)initInTree: (GITTree *)tree withMode: (GITTreeItemMode)theMode name: (NSSt
return self;
}

// - (GITObject *)item {
// if ( !item )
// // self.item = [[[self parent] repo] object
// return item;
// }
- (GITObject *)item {
if ( !item )
self.item = [self.parent.repo objectWithSha1:self.sha1 error:NULL];
return item;
}

@end

0 comments on commit b1d3135

Please sign in to comment.