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];
}
|