/Test/objectivec_implementation.m
http://github.com/fishman/ctags · Objective C · 125 lines · 100 code · 24 blank · 1 comment · 5 complexity · fbc1034d42a6250ee755ba275e373e54 MD5 · raw file
- @implementation FileTree
- - (FileSize)getDiskSize
- {
- return diskSize;
- }
- - (id)initWithName:(NSString*)treeName
- atPlace:(FolderTree*)parentFolder
- {
- self = [super init];
- diskSize = 0;
- name = treeName;
- parent = parentFolder;
- [name retain];
- representation = nil;
- return self;
- }
- - (id)initWithName:(NSString*)treeName
- andSize:(FileSize)size
- atPlace:(FolderTree*)parentFolder
- {
- self = [super init];
- diskSize = size;
- name = treeName;
- parent = parentFolder;
- [name retain];
- representation = nil;
- return self;
- }
- - (void)dealloc
- {
- [name release];
- [representation release];
- [super dealloc];
- }
- - (LayoutTree*)createLayoutTree
- {
- return nil;
- }
- @end
- @implementation FolderTree
- - (id)initWithName:(NSString*)treeName
- atPlace:(FolderTree*)parentFolder
- {
- self = [super initWithName:treeName
- atPlace:parentFolder];
- children = [[NSMutableArray alloc] init];
- return self;
- }
- - (void)dealloc
- {
- [children release];
- [super dealloc];
- }
- + (void) createFileList: (NSString*)root atPlace:(FolderTree*)parentFolder
- {
- NSFileManager *localFileManager = [[NSFileManager alloc] init];
- NSURL *rootUrl = [NSURL fileURLWithPath:root];
- NSDirectoryEnumerator *dirEnumerator = [localFileManager enumeratorAtURL:rootUrl
-
- includingPropertiesForKeys:[NSArray arrayWithObjects:
- NSURLNameKey,
- NSURLIsDirectoryKey,
- nil]
-
- options:NSDirectoryEnumerationSkipsHiddenFiles
-
- errorHandler:nil];
-
- for (NSURL *theURL in dirEnumerator)
- {
- [theURL getResourceValue:&fileName
- forKey:NSURLNameKey
- error:NULL];
-
- // Ignore files under the _extras directory
- if ([isDirectory boolValue]==YES)
- {
- [folder populateChildList:root];
- }
- else if ([isDirectory boolValue]==NO)
- {
- [parentFolder addChild:f];
- }
- }
- }
- - (void) populateChildList:(NSString*)root
- {
- NSString *thisRoot = [[root stringByAppendingString:@"/"]
- stringByAppendingString:name];
-
- [FolderTree createFileList:thisRoot
- atPlace:self];
-
- for ( FileTree *f in children )
- diskSize += [f getDiskSize];
- }
- - (FolderTree*)addChild:(FileTree*)subTree
- {
- [children addObject:subTree];
- return self;
- }
- - (LayoutTree*)createLayoutTree
- {
- return
- [[LayoutTree alloc] initWithFileList:children
- andTotalSize:diskSize];
- }
- @end