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