Skip to content

Commit e8574f4

Browse files
committed
Enum tweaks
1 parent ca3ab96 commit e8574f4

File tree

2 files changed

+45
-14
lines changed

2 files changed

+45
-14
lines changed

Templates/ObjC/Models/EnumType.h.tt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@ foreach(var member in entity.Members.OrderBy(x => x.Value))
2828
foreach (var member in entity.Members.OrderBy(x => x.Value))
2929
{
3030
#>
31-
+(<#=typeName#>*) <#=member.Name.ToUpperFirst()#>;
31+
+(<#=typeName#>*) <#=member.Name.ToLowerFirstChar()#>;
3232
<#
3333
}
3434
#>
3535

36-
+(<#=typeName#>*) <#=typeName.ToLowerFirst()#>WithEnumValue:(<#=valueTypeName#>)val;
36+
+(<#=typeName#>*) UnknownEnumValue;
37+
38+
+(<#=typeName#>*) <#=entity.Name.ToLowerFirstChar()#>WithEnumValue:(<#=valueTypeName#>)val;
3739

3840
@property (nonatomic, readonly) <#=typeName#>Value enumValue;
3941

Templates/ObjC/Models/EnumType.m.tt

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,55 @@ var valueTypeName = typeName + "Value";
2222
foreach (var member in entity.Members.OrderBy(x => x.Value))
2323
{
2424
#>
25-
+(<#=typeName#>*) <#=member.Name.ToUpperFirst()#> {
26-
static <#=typeName#> *_<#=member.Name.ToLowerFirst()#>
25+
+ (<#=typeName#>*) <#=member.Name.ToLowerFirstChar()#> {
26+
static <#=typeName#> *_<#=member.Name.ToLowerFirstChar()#>
2727
static dispatch_once_t onceToken;
28-
dispatch_once(&onceToken, ^{
29-
_<#=member.Name.ToLowerFirst()#> = [[<#=typeName#> alloc] init];
30-
_<#=member.Name.ToLowerFirst()#>._enumValue = <#=GetObjCEnumMember(entity, member)#>;
31-
});
32-
return _<#=member.Name.ToLowerFirst()#>;
28+
dispatch_once(&onceToken, ^{
29+
_<#=member.Name.ToLowerFirstChar()#> = [[<#=typeName#> alloc] init];
30+
_<#=member.Name.ToLowerFirstChar()#>._enumValue = <#=GetObjCEnumMember(entity, member)#>;
31+
});
32+
return _<#=member.Name.ToLowerFirstChar()#>;
3333
}
3434
<#
3535
}
3636
#>
37+
38+
+ (<#=typeName#>*) UnknownEnumValue {
39+
static <#=typeName#> *_unknownValue
40+
static dispatch_once_t onceToken;
41+
dispatch_once(&onceToken, ^{
42+
_unknownValue = [[<#=typeName#> alloc] init];
43+
_unknownValue._enumValue = <#=typeName#>EndOfEnum;
44+
});
45+
return _unknownValue;
46+
}
47+
3748
<#
3849
///////////////////////////////////////////////////////////////
3950
// Generate conversion from enum to boxed type and vice versa
4051
// e.g. [DayOfWeek dayOfWeekWithEnumValue:DayOfWeekMonday]
4152
///////////////////////////////////////////////////////////////
4253
#>
43-
+(<#=GetObjCTypeIdentifier(entity)#>*) <#=GetObjCTypeIdentifier(entity).ToLowerFirst()#>WithEnumValue:(<#=valueType#>)val {
44-
54+
55+
+ (<#=typeName#>*) <#=entity.Name.ToLowerFirstChar()#>WithEnumValue:(<#=valueTypeName#>)val {
56+
57+
switch(val)
58+
{
59+
<#
60+
foreach(var member in entity.Members)
61+
{
62+
#>
63+
case <#=GetObjCEnumMember(entity,member)#>:
64+
return [<#=typeName#> <#=member.Name#>];
65+
<#
66+
}
67+
#>
68+
case <#=typeName#>EndOfEnum:
69+
default:
70+
return [<#=typeName#> UnknownEnumValue];
71+
}
72+
73+
return nil;
4574
}
4675

4776
- (<#=valueTypeName#>) enumValue {
@@ -52,7 +81,7 @@ foreach (var member in entity.Members.OrderBy(x => x.Value))
5281

5382
@implementation NSString (<#=typeName#>)
5483

55-
+ (instancetype) stringWith<#=typeName#>:(<#=typeName#>)val {
84+
+ (instancetype) stringWith<#=typeName#>:(<#=typeName#>*)val {
5685

5786
switch(val.enumValue)
5887
{
@@ -80,12 +109,12 @@ foreach (var member in entity.Members.OrderBy(x => x.Value))
80109
{
81110
#>if([self isEqualToString:@"<#=member.Name#>"])
82111
{
83-
return [<#=typeName#> <#=GetObjCEnumMember(entity,member)#>];
112+
return [<#=typeName#> <#=member.Name#>];
84113
}
85114
else <#
86115
}
87116
#>{
88-
return <#=GetObjCTypeIdentifier(entity)#>EndOfEnum;
117+
return [<#=typeName#> UnknownEnumValue];
89118
}
90119
}
91120

0 commit comments

Comments
 (0)