Overview
Comment: | objfw-new: Automatically generate dealloc |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
8465dcaa25511e87287aadbf99a542c9 |
User & Date: | js on 2022-08-08 19:00:24 |
Other Links: | manifest | tags |
Context
2022-08-10
| ||
21:38 | objfw-new: Add short options check-in: 03227c8a54 user: js tags: trunk | |
2022-08-08
| ||
19:00 | objfw-new: Automatically generate dealloc check-in: 8465dcaa25 user: js tags: trunk | |
18:53 | objfw-new: Add support for property attributes check-in: 41bf4fe57b user: js tags: trunk | |
Changes
Modified utils/objfw-new/NewClass.m from [4b98e4d222] to [c4e1442a79].
︙ | ︙ | |||
29 30 31 32 33 34 35 36 37 38 39 40 41 42 | void newClass(OFString *name, OFString *superclass, OFMutableArray *properties) { OFString *headerPath = [name stringByAppendingPathExtension: @"h"]; OFString *implPath = [name stringByAppendingPathExtension: @"m"]; OFFile *headerFile = nil, *implFile = nil; @try { headerFile = [OFFile fileWithPath: headerPath mode: @"wx"]; implFile = [OFFile fileWithPath: implPath mode: @"wx"]; } @catch (OFOpenItemFailedException *e) { if (e.errNo != EEXIST) @throw e; | > | 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | void newClass(OFString *name, OFString *superclass, OFMutableArray *properties) { OFString *headerPath = [name stringByAppendingPathExtension: @"h"]; OFString *implPath = [name stringByAppendingPathExtension: @"m"]; OFFile *headerFile = nil, *implFile = nil; bool needsDealloc = false; @try { headerFile = [OFFile fileWithPath: headerPath mode: @"wx"]; implFile = [OFFile fileWithPath: implPath mode: @"wx"]; } @catch (OFOpenItemFailedException *e) { if (e.errNo != EEXIST) @throw e; |
︙ | ︙ | |||
84 85 86 87 88 89 90 91 92 93 94 95 96 97 | [headerFile writeString: @"("]; for (OFString *attribute in property.attributes) { if ([attribute isEqual: @"nullable"]) continue; if (!first) [headerFile writeString: @", "]; [headerFile writeString: attribute]; first = false; } | > > > > | 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | [headerFile writeString: @"("]; for (OFString *attribute in property.attributes) { if ([attribute isEqual: @"nullable"]) continue; if ([attribute isEqual: @"retain"] || [attribute isEqual: @"copy"]) needsDealloc = true; if (!first) [headerFile writeString: @", "]; [headerFile writeString: attribute]; first = false; } |
︙ | ︙ | |||
110 111 112 113 114 115 116 117 118 119 120 121 122 | @"\n" @"@implementation %@\n", headerPath, name]; for (Property *property in properties) [implFile writeFormat: @"@synthesize %@ = _%@;\n", property.name, property.name]; [implFile writeString: @"@end\n"]; [headerFile close]; [implFile close]; } | > > > > > > > > > > > > > > > > | 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | @"\n" @"@implementation %@\n", headerPath, name]; for (Property *property in properties) [implFile writeFormat: @"@synthesize %@ = _%@;\n", property.name, property.name]; if (needsDealloc) { [implFile writeString: @"\n" @"- (void)dealloc\n" @"{\n"]; for (Property *property in properties) if ([property.attributes containsObject: @"retain"] || [property.attributes containsObject: @"copy"]) [implFile writeFormat: @"\t[_%@ release];\n", property.name]; [implFile writeString: @"\n" @"\t[super dealloc];\n" @"}\n"]; } [implFile writeString: @"@end\n"]; [headerFile close]; [implFile close]; } |