1/* -*- objc -*- */ 2#if 0 3// This is ABOUT of Units facility. 4// ABC 5/* ABC */ 6/* ABC 7 */ 8/* ABC 9 * 10 */ 11#include <stdio.h> 12#include "stdio.h" 13#include <a/stdio.h> 14#include "a/stdio.h" 15#include "a_stdio.h" 16#endif 17 18int main(int argc, char** argv) 19{ 20 return __pid; 21} 22#endif 23@implementation MyClass 24 25+ (void)myClassMethod:(int)arg1 with:(id)arg2; 26- (void)myInstanceMethod:(int)arg1 with:(id)arg2; 27 28@end 29 30@implementation FileTree 31- (FileSize)getDiskSize 32{ 33 return diskSize; 34} 35 36- (id)initWithName:(NSString*)treeName 37 atPlace:(FolderTree*)parentFolder 38{ 39 self = [super init]; 40 41 diskSize = 0; 42 name = treeName; 43 parent = parentFolder; 44 [name retain]; 45 representation = nil; 46 47 return self; 48} 49 50- (id)initWithName:(NSString*)treeName 51 andSize:(FileSize)size 52 atPlace:(FolderTree*)parentFolder 53{ 54 self = [super init]; 55 56 diskSize = size; 57 name = treeName; 58 parent = parentFolder; 59 [name retain]; 60 representation = nil; 61 62 return self; 63} 64 65- (void)dealloc 66{ 67 [name release]; 68 [representation release]; 69 [super dealloc]; 70} 71 72- (LayoutTree*)createLayoutTree 73{ 74 return nil; 75} 76@end 77 78@implementation FolderTree 79- (id)initWithName:(NSString*)treeName 80 atPlace:(FolderTree*)parentFolder 81{ 82 self = [super initWithName:treeName 83 atPlace:parentFolder]; 84 85 children = [[NSMutableArray alloc] init]; 86 return self; 87} 88 89- (void)dealloc 90{ 91 [children release]; 92 [super dealloc]; 93} 94 95+ (void) createFileList: (NSString*)root atPlace:(FolderTree*)parentFolder 96{ 97 NSFileManager *localFileManager = [[NSFileManager alloc] init]; 98 NSURL *rootUrl = [NSURL fileURLWithPath:root]; 99 NSDirectoryEnumerator *dirEnumerator = [localFileManager enumeratorAtURL:rootUrl 100 101 includingPropertiesForKeys:[NSArray arrayWithObjects: 102 NSURLNameKey, 103 NSURLIsDirectoryKey, 104 nil] 105 106 options:NSDirectoryEnumerationSkipsHiddenFiles 107 108 errorHandler:nil]; 109 110 for (NSURL *theURL in dirEnumerator) 111 { 112 [theURL getResourceValue:&fileName 113 forKey:NSURLNameKey 114 error:NULL]; 115 116 // Ignore files under the _extras directory 117 if ([isDirectory boolValue]==YES) 118 { 119 [folder populateChildList:root]; 120 } 121 else if ([isDirectory boolValue]==NO) 122 { 123 [parentFolder addChild:f]; 124 } 125 } 126} 127 128- (void) populateChildList:(NSString*)root 129{ 130 NSString *thisRoot = [[root stringByAppendingString:@"/"] 131 stringByAppendingString:name]; 132 133 [FolderTree createFileList:thisRoot 134 atPlace:self]; 135 136 for ( FileTree *f in children ) 137 diskSize += [f getDiskSize]; 138} 139 140- (FolderTree*)addChild:(FileTree*)subTree 141{ 142 [children addObject:subTree]; 143 return self; 144} 145 146- (LayoutTree*)createLayoutTree 147{ 148 return 149 [[LayoutTree alloc] initWithFileList:children 150 andTotalSize:diskSize]; 151} 152@end 153