Skip to content

Commit 9a89b12

Browse files
Merge commit '2d45af3564aeb0971258a4149e9c3b7646786f45'
2 parents c74f216 + 2d45af3 commit 9a89b12

36 files changed

Lines changed: 1326 additions & 752 deletions

ResourceObjC.xcodeproj/project.pbxproj

Lines changed: 13 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,11 @@
88

99
/* Begin PBXBuildFile section */
1010
02BE678EB0857B8BA94B0361 /* libPods-ResourceObjC.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F51E8BA7EF7330F748C967A7 /* libPods-ResourceObjC.a */; };
11-
06056E3B1ED6371A00DFCF79 /* GeneratorTemplate.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 06056E371ED6250A00DFCF79 /* GeneratorTemplate.h */; };
12-
06056E3C1ED6371A00DFCF79 /* GeneratorTemplate.m in CopyFiles */ = {isa = PBXBuildFile; fileRef = 06056E381ED6250A00DFCF79 /* GeneratorTemplate.m */; };
13-
06056E3E1ED6B0A500DFCF79 /* PropertyTemplate.m in CopyFiles */ = {isa = PBXBuildFile; fileRef = 06056E3D1ED6B09700DFCF79 /* PropertyTemplate.m */; };
14-
06056E411ED6E49400DFCF79 /* RTemplate.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 06056E3F1ED6E48700DFCF79 /* RTemplate.h */; };
15-
06056E421ED6E49400DFCF79 /* RTemplate.m in CopyFiles */ = {isa = PBXBuildFile; fileRef = 06056E401ED6E48700DFCF79 /* RTemplate.m */; };
1611
06056E471ED6ECCE00DFCF79 /* RGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 06056E461ED6ECCE00DFCF79 /* RGenerator.m */; };
17-
06056E4A1ED70ED300DFCF79 /* PropertyTemplate.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 06056E491ED70EC900DFCF79 /* PropertyTemplate.h */; };
18-
06056E4D1ED710FE00DFCF79 /* TemplatesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 06056E4C1ED710FE00DFCF79 /* TemplatesManager.m */; };
1912
06056E581ED7570500DFCF79 /* ImagesGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 06056E571ED7570500DFCF79 /* ImagesGenerator.m */; };
2013
0617A98A1ED9B46A007ECB92 /* StoryboardsGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0617A9891ED9B46A007ECB92 /* StoryboardsGenerator.m */; };
14+
0673D4E91EDCBFD900880207 /* GeneratedStructures.m in Sources */ = {isa = PBXBuildFile; fileRef = 0673D4E81EDCBFD900880207 /* GeneratedStructures.m */; };
15+
0673D4EC1EDE999600880207 /* SeguesGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0673D4EB1EDE999600880207 /* SeguesGenerator.m */; };
2116
06803EB11ED5BDEE0006208A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 06803EB01ED5BDEE0006208A /* main.m */; };
2217
06803EBA1ED5C53F0006208A /* ResourceFinder.m in Sources */ = {isa = PBXBuildFile; fileRef = 06803EB91ED5C53F0006208A /* ResourceFinder.m */; };
2318
06803EC91ED5EC630006208A /* StringsGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 06803EC81ED5EC630006208A /* StringsGenerator.m */; };
@@ -37,33 +32,23 @@
3732
dstSubfolderSpec = 7;
3833
files = (
3934
AD928D521EDC04CD00F2FF35 /* LICENSE in CopyFiles */,
40-
06056E4A1ED70ED300DFCF79 /* PropertyTemplate.h in CopyFiles */,
41-
06056E411ED6E49400DFCF79 /* RTemplate.h in CopyFiles */,
42-
06056E421ED6E49400DFCF79 /* RTemplate.m in CopyFiles */,
43-
06056E3E1ED6B0A500DFCF79 /* PropertyTemplate.m in CopyFiles */,
44-
06056E3B1ED6371A00DFCF79 /* GeneratorTemplate.h in CopyFiles */,
45-
06056E3C1ED6371A00DFCF79 /* GeneratorTemplate.m in CopyFiles */,
4635
);
4736
runOnlyForDeploymentPostprocessing = 0;
4837
};
4938
/* End PBXCopyFilesBuildPhase section */
5039

5140
/* Begin PBXFileReference section */
52-
06056E371ED6250A00DFCF79 /* GeneratorTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneratorTemplate.h; sourceTree = "<group>"; };
53-
06056E381ED6250A00DFCF79 /* GeneratorTemplate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratorTemplate.m; sourceTree = "<group>"; };
54-
06056E3D1ED6B09700DFCF79 /* PropertyTemplate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PropertyTemplate.m; sourceTree = "<group>"; };
55-
06056E3F1ED6E48700DFCF79 /* RTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RTemplate.h; sourceTree = "<group>"; };
56-
06056E401ED6E48700DFCF79 /* RTemplate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RTemplate.m; sourceTree = "<group>"; };
5741
06056E451ED6ECCE00DFCF79 /* RGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RGenerator.h; sourceTree = "<group>"; };
5842
06056E461ED6ECCE00DFCF79 /* RGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RGenerator.m; sourceTree = "<group>"; };
59-
06056E481ED7091D00DFCF79 /* Placeholders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Placeholders.h; path = ../Templates/Placeholders.h; sourceTree = "<group>"; };
60-
06056E491ED70EC900DFCF79 /* PropertyTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PropertyTemplate.h; sourceTree = "<group>"; };
61-
06056E4B1ED710FE00DFCF79 /* TemplatesManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemplatesManager.h; sourceTree = "<group>"; };
62-
06056E4C1ED710FE00DFCF79 /* TemplatesManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TemplatesManager.m; sourceTree = "<group>"; };
43+
06056E481ED7091D00DFCF79 /* Placeholders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Placeholders.h; sourceTree = "<group>"; };
6344
06056E561ED7570500DFCF79 /* ImagesGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImagesGenerator.h; sourceTree = "<group>"; };
6445
06056E571ED7570500DFCF79 /* ImagesGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImagesGenerator.m; sourceTree = "<group>"; };
6546
0617A9881ED9B46A007ECB92 /* StoryboardsGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StoryboardsGenerator.h; sourceTree = "<group>"; };
6647
0617A9891ED9B46A007ECB92 /* StoryboardsGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StoryboardsGenerator.m; sourceTree = "<group>"; };
48+
0673D4E71EDCBFD900880207 /* GeneratedStructures.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneratedStructures.h; sourceTree = "<group>"; };
49+
0673D4E81EDCBFD900880207 /* GeneratedStructures.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedStructures.m; sourceTree = "<group>"; };
50+
0673D4EA1EDE999600880207 /* SeguesGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SeguesGenerator.h; sourceTree = "<group>"; };
51+
0673D4EB1EDE999600880207 /* SeguesGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SeguesGenerator.m; sourceTree = "<group>"; };
6752
06803EAD1ED5BDED0006208A /* Robjc */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Robjc; sourceTree = BUILT_PRODUCTS_DIR; };
6853
06803EB01ED5BDEE0006208A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
6954
06803EB81ED5C53F0006208A /* ResourceFinder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceFinder.h; sourceTree = "<group>"; };
@@ -98,19 +83,6 @@
9883
/* End PBXFrameworksBuildPhase section */
9984

10085
/* Begin PBXGroup section */
101-
06056E361ED6105A00DFCF79 /* Templates */ = {
102-
isa = PBXGroup;
103-
children = (
104-
06056E371ED6250A00DFCF79 /* GeneratorTemplate.h */,
105-
06056E381ED6250A00DFCF79 /* GeneratorTemplate.m */,
106-
06056E491ED70EC900DFCF79 /* PropertyTemplate.h */,
107-
06056E3D1ED6B09700DFCF79 /* PropertyTemplate.m */,
108-
06056E3F1ED6E48700DFCF79 /* RTemplate.h */,
109-
06056E401ED6E48700DFCF79 /* RTemplate.m */,
110-
);
111-
path = Templates;
112-
sourceTree = "<group>";
113-
};
11486
06803EA41ED5BDED0006208A = {
11587
isa = PBXGroup;
11688
children = (
@@ -135,7 +107,6 @@
135107
children = (
136108
06803EB01ED5BDEE0006208A /* main.m */,
137109
06803EB71ED5C3CA0006208A /* Sources */,
138-
06056E361ED6105A00DFCF79 /* Templates */,
139110
);
140111
path = ResourceObjC;
141112
sourceTree = "<group>";
@@ -145,8 +116,6 @@
145116
children = (
146117
ADDA17921ED6E3EE00AA0C51 /* Utils */,
147118
06056E481ED7091D00DFCF79 /* Placeholders.h */,
148-
06056E4B1ED710FE00DFCF79 /* TemplatesManager.h */,
149-
06056E4C1ED710FE00DFCF79 /* TemplatesManager.m */,
150119
06803EB81ED5C53F0006208A /* ResourceFinder.h */,
151120
06803EB91ED5C53F0006208A /* ResourceFinder.m */,
152121
06803ECB1ED5EDE20006208A /* BaseGenerator.h */,
@@ -161,6 +130,10 @@
161130
ADD731DF1ED8C8A2006B0E51 /* ThemesGenerator.m */,
162131
0617A9881ED9B46A007ECB92 /* StoryboardsGenerator.h */,
163132
0617A9891ED9B46A007ECB92 /* StoryboardsGenerator.m */,
133+
0673D4EA1EDE999600880207 /* SeguesGenerator.h */,
134+
0673D4EB1EDE999600880207 /* SeguesGenerator.m */,
135+
0673D4E71EDCBFD900880207 /* GeneratedStructures.h */,
136+
0673D4E81EDCBFD900880207 /* GeneratedStructures.m */,
164137
);
165138
path = Sources;
166139
sourceTree = "<group>";
@@ -290,14 +263,15 @@
290263
0617A98A1ED9B46A007ECB92 /* StoryboardsGenerator.m in Sources */,
291264
06803ECD1ED5EDE20006208A /* BaseGenerator.m in Sources */,
292265
06056E471ED6ECCE00DFCF79 /* RGenerator.m in Sources */,
266+
0673D4E91EDCBFD900880207 /* GeneratedStructures.m in Sources */,
293267
ADDA17951ED6E40700AA0C51 /* Session.m in Sources */,
294268
06803EB11ED5BDEE0006208A /* main.m in Sources */,
295269
06803EC91ED5EC630006208A /* StringsGenerator.m in Sources */,
296270
ADDA17981ED6E75700AA0C51 /* CommonUtils.m in Sources */,
297271
06056E581ED7570500DFCF79 /* ImagesGenerator.m in Sources */,
272+
0673D4EC1EDE999600880207 /* SeguesGenerator.m in Sources */,
298273
06803EBA1ED5C53F0006208A /* ResourceFinder.m in Sources */,
299274
AD8D6EDC1ED77538009CF948 /* FormattedStringParser.m in Sources */,
300-
06056E4D1ED710FE00DFCF79 /* TemplatesManager.m in Sources */,
301275
ADD731E01ED8C8A2006B0E51 /* ThemesGenerator.m in Sources */,
302276
);
303277
runOnlyForDeploymentPostprocessing = 0;

ResourceObjC.xcodeproj/xcshareddata/xcschemes/ResourceObjC.xcscheme

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@
6464
<CommandLineArguments>
6565
<CommandLineArgument
6666
argument = "--sysdata"
67-
isEnabled = "YES">
67+
isEnabled = "NO">
6868
</CommandLineArgument>
6969
<CommandLineArgument
7070
argument = "-p"
7171
isEnabled = "YES">
7272
</CommandLineArgument>
7373
<CommandLineArgument
74-
argument = "/Users/guidosabatini/LAVORO/AllianzInsurance/AllianzNOW/codice/Project"
74+
argument = "~/Documents/R.objc/ResourceObjCTest/ResourceObjCTest"
7575
isEnabled = "YES">
7676
</CommandLineArgument>
7777
</CommandLineArguments>

ResourceObjC/Sources/BaseGenerator.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414

1515
#import <Foundation/Foundation.h>
1616
#import "ResourceFinder.h"
17-
#import "TemplatesManager.h"
1817
#import "Placeholders.h"
1918
#import "CommonUtils.h"
19+
#import "GeneratedStructures.h"
20+
21+
#define END_CONTEXT @"@end\n\n"
2022

2123
@protocol GeneratorProtocol <NSObject>
2224

@@ -29,12 +31,14 @@
2931
@interface BaseGenerator : NSObject <GeneratorProtocol>
3032

3133
@property (nonatomic, readonly) ResourceFinder *finder;
34+
@property (nonatomic, strong) RClass *clazz;
35+
@property (nonatomic, strong) NSMutableArray<RClass*>* otherClasses;
36+
3237

3338
- (instancetype)initWithResourceFinder:(ResourceFinder*)finder;
3439

3540
- (NSString*)resourceFileHeaderPath;
3641
- (NSString*)resourceFileImplementationPath;
3742

38-
- (BOOL)writeString:(NSString *)string inFile:(NSString*)path beforePlaceholder:(NSString *)placeholder withError:(NSError *__autoreleasing *)error;
39-
43+
- (BOOL)writeStringInRFilesWithError:(NSError *__autoreleasing *)error;
4044
@end

ResourceObjC/Sources/BaseGenerator.m

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ - (instancetype)initWithResourceFinder:(ResourceFinder *)finder
2222
if (self)
2323
{
2424
_finder = finder;
25+
_clazz = [[RClass alloc] initWithName:self.className];
26+
_otherClasses = [NSMutableArray new];
2527
}
2628
return self;
2729
}
@@ -51,18 +53,56 @@ - (NSString *)resourceFileImplementationPath
5153
return [self.finder.outputURL.path stringByAppendingPathComponent:@"R.m"];
5254
}
5355

54-
- (BOOL)writeString:(NSString *)string inFile:(NSString*)path beforePlaceholder:(NSString *)placeholder withError:(NSError *__autoreleasing *)error
56+
- (BOOL)writeStringInRFilesWithError:(NSError *__autoreleasing *)error
5557
{
56-
NSMutableString* content = [NSMutableString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:error];
58+
BOOL hResult = [self writeStringInInterfaceWithError:error];
59+
BOOL mResult = [self writeStringInImplementationWithError:error];
60+
61+
return hResult && mResult;
62+
}
63+
64+
- (BOOL)writeStringInInterfaceWithError:(NSError *__autoreleasing *)error
65+
{
66+
NSMutableString* content = [NSMutableString stringWithContentsOfFile:self.resourceFileHeaderPath encoding:NSUTF8StringEncoding error:error];
67+
if (!content)
68+
{
69+
[CommonUtils log:@"Unable to read %@", self.resourceFileHeaderPath.lastPathComponent];
70+
return NO;
71+
}
72+
73+
NSMutableString* interface = [NSMutableString new];
74+
for (RClass* c in self.otherClasses)
75+
{
76+
[interface appendString:[c generateInterfaceString]];
77+
}
78+
79+
[interface appendString:[self.clazz generateInterfaceString]];
80+
81+
[content appendString:interface];
82+
83+
return [content writeToFile:self.resourceFileHeaderPath atomically:YES encoding:NSUTF8StringEncoding error:error];
84+
}
85+
86+
- (BOOL)writeStringInImplementationWithError:(NSError *__autoreleasing *)error
87+
{
88+
NSMutableString* content = [NSMutableString stringWithContentsOfFile:self.resourceFileImplementationPath encoding:NSUTF8StringEncoding error:error];
5789
if (!content)
5890
{
59-
[CommonUtils log:@"Unable to read %@", path.lastPathComponent];
91+
[CommonUtils log:@"Unable to read %@", self.resourceFileImplementationPath.lastPathComponent];
6092
return NO;
6193
}
6294

63-
NSUInteger offset = [content rangeOfString:placeholder].location;
64-
[content insertString:string atIndex:offset];
65-
return [content writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:error];
95+
NSMutableString* implementation = [NSMutableString new];
96+
for (RClass* c in self.otherClasses)
97+
{
98+
[implementation appendString:[c generateImplementationString]];
99+
}
100+
101+
[implementation appendString:[self.clazz generateImplementationString]];
102+
103+
[content appendString:implementation];
104+
105+
return [content writeToFile:self.resourceFileImplementationPath atomically:YES encoding:NSUTF8StringEncoding error:error];
66106
}
67107

68108
@end

ResourceObjC/Sources/CommonUtils.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,7 @@
1919
+ (void) logVerbose:(NSString *)format, ...;
2020
+ (void) log:(NSString *)format, ...;
2121
+ (NSString*)codableNameFromString:(NSString*)string;
22+
+ (NSString*)classNameFromFilename:(NSString*)filename removingExtension:(NSString*)extension;
23+
+ (NSString*)methodNameFromFilename:(NSString*)filename removingExtension:(NSString*)extension;
2224

2325
@end

ResourceObjC/Sources/CommonUtils.m

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,26 @@ + (NSString*)codableNameFromString:(NSString*)string
7979
return strippedString;
8080
}
8181

82+
+ (NSString *)classNameFromFilename:(NSString *)filename removingExtension:(NSString *)extension
83+
{
84+
NSString* retval = [NSString stringWithFormat:@"%@%@", [filename substringToIndex:1].uppercaseString, [filename substringFromIndex:1]];
85+
if (extension.length > 0)
86+
{
87+
retval = [retval stringByReplacingOccurrencesOfString:extension withString:@""];
88+
}
89+
retval = [retval stringByReplacingOccurrencesOfString:@" " withString:@""];
90+
return retval;
91+
}
92+
93+
+ (NSString *)methodNameFromFilename:(NSString *)filename removingExtension:(NSString *)extension
94+
{
95+
NSString* retval = [NSString stringWithFormat:@"%@%@", [filename substringToIndex:1].lowercaseString, [filename substringFromIndex:1]];
96+
if (extension.length > 0)
97+
{
98+
retval = [retval stringByReplacingOccurrencesOfString:extension withString:@""];
99+
}
100+
retval = [retval stringByReplacingOccurrencesOfString:@" " withString:@""];
101+
return retval;
102+
}
103+
82104
@end
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
// Copyright 2016 Sysdata Digital
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
#import <Foundation/Foundation.h>
16+
17+
@protocol RGeneratedStructureProtocol <NSObject>
18+
19+
- (NSString*)generateStructure;
20+
21+
@end
22+
23+
@interface RProperty : NSObject <RGeneratedStructureProtocol>
24+
@property (nonatomic, strong) NSString* className;
25+
@property (nonatomic, strong) NSString* name;
26+
27+
- (instancetype)initWithClass:(NSString*)className name:(NSString*)name;
28+
@end
29+
30+
@interface RMethodArgument : NSObject <RGeneratedStructureProtocol>
31+
@property (nonatomic, strong) NSString* type;
32+
@property (nonatomic, strong) NSString* name;
33+
34+
- (instancetype)initWithType:(NSString*)type name:(NSString*)name;
35+
@end
36+
37+
@interface RComment : NSObject <RGeneratedStructureProtocol>
38+
@property (nonatomic, strong) NSMutableArray<NSString*>* lines;
39+
@end
40+
41+
@interface RMethodSignature : NSObject <RGeneratedStructureProtocol>
42+
@property (nonatomic, strong) NSString* returnType;
43+
@property (nonatomic, strong) NSString* signature;
44+
@property (nonatomic, strong) RComment* comment;
45+
@property (nonatomic, strong) NSMutableArray<RMethodArgument*>* arguments;
46+
47+
- (instancetype)initWithReturnType:(NSString*)type signature:(NSString*)signature;
48+
@end
49+
50+
@interface RMethodImplementation : RMethodSignature
51+
@property (nonatomic, strong) NSString* implementation;
52+
@property (nonatomic, assign) BOOL indent;
53+
54+
- (instancetype)initWithReturnType:(NSString*)type signature:(NSString*)signature implementation:(NSString*)implementation;
55+
@end
56+
57+
@interface RClassMethodSignature : RMethodSignature
58+
@end
59+
60+
@interface RClassMethodImplementation : RMethodImplementation
61+
@end
62+
63+
@interface RLazyGetterImplementation : NSObject <RGeneratedStructureProtocol>
64+
@property (nonatomic, strong) NSString* returnType;
65+
@property (nonatomic, strong) NSString* name;
66+
67+
- (instancetype)initReturnType:(NSString*)type name:(NSString*)name;
68+
@end
69+
70+
@interface RClassInterface : NSObject <RGeneratedStructureProtocol>
71+
@property (nonatomic, strong) NSString* name;
72+
@property (nonatomic, strong) NSMutableArray<RProperty*>* properties;
73+
@property (nonatomic, strong) NSMutableArray<RMethodSignature*>* methods;
74+
75+
- (instancetype)initWithName:(NSString*)name;
76+
@end
77+
78+
@interface RClassExtension : RClassInterface
79+
@end
80+
81+
@interface RClassImplementation : NSObject <RGeneratedStructureProtocol>
82+
@property (nonatomic, strong) NSString* name;
83+
@property (nonatomic, strong) NSMutableArray<RMethodImplementation*>* methods;
84+
@property (nonatomic, strong) NSMutableArray<RLazyGetterImplementation*>* lazyGetters;
85+
86+
- (instancetype)initWithName:(NSString*)name;
87+
@end
88+
89+
@interface RClass : NSObject
90+
@property (nonatomic, readonly) NSString* name;
91+
@property (nonatomic, readonly) RClassInterface *interface;
92+
@property (nonatomic, readonly) RClassExtension *extension;
93+
@property (nonatomic, readonly) RClassImplementation *implementation;
94+
95+
- (instancetype)initWithName:(NSString*)name;
96+
- (NSString*)generateInterfaceString;
97+
- (NSString*)generateImplementationString;
98+
@end

0 commit comments

Comments
 (0)