/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

  1. @implementation FileTree
  2. - (FileSize)getDiskSize
  3. {
  4. return diskSize;
  5. }
  6. - (id)initWithName:(NSString*)treeName
  7. atPlace:(FolderTree*)parentFolder
  8. {
  9. self = [super init];
  10. diskSize = 0;
  11. name = treeName;
  12. parent = parentFolder;
  13. [name retain];
  14. representation = nil;
  15. return self;
  16. }
  17. - (id)initWithName:(NSString*)treeName
  18. andSize:(FileSize)size
  19. atPlace:(FolderTree*)parentFolder
  20. {
  21. self = [super init];
  22. diskSize = size;
  23. name = treeName;
  24. parent = parentFolder;
  25. [name retain];
  26. representation = nil;
  27. return self;
  28. }
  29. - (void)dealloc
  30. {
  31. [name release];
  32. [representation release];
  33. [super dealloc];
  34. }
  35. - (LayoutTree*)createLayoutTree
  36. {
  37. return nil;
  38. }
  39. @end
  40. @implementation FolderTree
  41. - (id)initWithName:(NSString*)treeName
  42. atPlace:(FolderTree*)parentFolder
  43. {
  44. self = [super initWithName:treeName
  45. atPlace:parentFolder];
  46. children = [[NSMutableArray alloc] init];
  47. return self;
  48. }
  49. - (void)dealloc
  50. {
  51. [children release];
  52. [super dealloc];
  53. }
  54. + (void) createFileList: (NSString*)root atPlace:(FolderTree*)parentFolder
  55. {
  56. NSFileManager *localFileManager = [[NSFileManager alloc] init];
  57. NSURL *rootUrl = [NSURL fileURLWithPath:root];
  58. NSDirectoryEnumerator *dirEnumerator = [localFileManager enumeratorAtURL:rootUrl
  59. includingPropertiesForKeys:[NSArray arrayWithObjects:
  60. NSURLNameKey,
  61. NSURLIsDirectoryKey,
  62. nil]
  63. options:NSDirectoryEnumerationSkipsHiddenFiles
  64. errorHandler:nil];
  65. for (NSURL *theURL in dirEnumerator)
  66. {
  67. [theURL getResourceValue:&fileName
  68. forKey:NSURLNameKey
  69. error:NULL];
  70. // Ignore files under the _extras directory
  71. if ([isDirectory boolValue]==YES)
  72. {
  73. [folder populateChildList:root];
  74. }
  75. else if ([isDirectory boolValue]==NO)
  76. {
  77. [parentFolder addChild:f];
  78. }
  79. }
  80. }
  81. - (void) populateChildList:(NSString*)root
  82. {
  83. NSString *thisRoot = [[root stringByAppendingString:@"/"]
  84. stringByAppendingString:name];
  85. [FolderTree createFileList:thisRoot
  86. atPlace:self];
  87. for ( FileTree *f in children )
  88. diskSize += [f getDiskSize];
  89. }
  90. - (FolderTree*)addChild:(FileTree*)subTree
  91. {
  92. [children addObject:subTree];
  93. return self;
  94. }
  95. - (LayoutTree*)createLayoutTree
  96. {
  97. return
  98. [[LayoutTree alloc] initWithFileList:children
  99. andTotalSize:diskSize];
  100. }
  101. @end