|
3 | 3 | <#@ include file="SharedObjC.template.tt"#> |
4 | 4 | <# |
5 | 5 | var entity = host.CurrentType.AsOdcmEnum(); |
| 6 | +var typeName = GetObjCTypeIdentifier(entity); |
| 7 | +var valueTypeName = typeName + "Value"; |
6 | 8 | #> |
7 | 9 |
|
8 | | -#include <<#=GetObjCTypeIdentifier(entity)#>.h> |
| 10 | +#include <<#=typeName#>.h> |
9 | 11 |
|
10 | | -@implementation NSString (<#=GetObjCTypeIdentifier(entity)#>) |
| 12 | +@interface <#=typeName#> () { |
| 13 | + <#=valueTypeName#> _enumValue; |
| 14 | +} |
| 15 | + |
| 16 | +@implementation <#=typeName#> |
| 17 | + |
| 18 | +<# |
| 19 | +///////////////////////////////////////////////////////////////// |
| 20 | +// Generate the static methods that look like [DayOfWeek Monday] |
| 21 | +///////////////////////////////////////////////////////////////// |
| 22 | +foreach (var member in entity.Members.OrderBy(x => x.Value)) |
| 23 | +{ |
| 24 | +#> |
| 25 | ++(<#=typeName#>*) <#=member.Name.ToUpperFirst()#> { |
| 26 | + static <#=typeName#> *_<#=member.Name.ToLowerFirst()#> |
| 27 | + 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()#>; |
| 33 | +} |
| 34 | +<# |
| 35 | +} |
| 36 | +#> |
| 37 | +<# |
| 38 | +/////////////////////////////////////////////////////////////// |
| 39 | +// Generate conversion from enum to boxed type and vice versa |
| 40 | +// e.g. [DayOfWeek dayOfWeekWithEnumValue:DayOfWeekMonday] |
| 41 | +/////////////////////////////////////////////////////////////// |
| 42 | +#> |
| 43 | ++(<#=GetObjCTypeIdentifier(entity)#>*) <#=GetObjCTypeIdentifier(entity).ToLowerFirst()#>WithEnumValue:(<#=valueType#>)val { |
| 44 | + |
| 45 | +} |
| 46 | + |
| 47 | +- (<#=valueTypeName#>) enumValue { |
| 48 | + return _enumValue; |
| 49 | +} |
| 50 | + |
| 51 | +@end |
| 52 | + |
| 53 | +@implementation NSString (<#=typeName#>) |
11 | 54 |
|
12 | | -+ (instancetype) stringWith<#=GetObjCTypeIdentifier(entity)#>:(<#=GetObjCTypeIdentifier(entity)#>)val { |
| 55 | ++ (instancetype) stringWith<#=typeName#>:(<#=typeName#>)val { |
13 | 56 |
|
14 | | - switch(val) |
| 57 | + switch(val.enumValue) |
15 | 58 | { |
16 | | - <# |
| 59 | +<# |
17 | 60 | foreach(var member in entity.Members) |
18 | 61 | { |
19 | | - #> |
20 | | - case <#=GetObjCEnumMember(entity,member)#>: |
| 62 | +#> |
| 63 | + case <#=GetObjCEnumMember(entity,member)#>: |
21 | 64 | return @"<#=member.Name#>"; |
22 | | - <# |
| 65 | +<# |
23 | 66 | } |
24 | | - #> |
25 | | - case <#=GetObjCTypeIdentifier(entity)#>EndOfEnum: |
| 67 | +#> |
| 68 | + case <#=typeName#>EndOfEnum: |
26 | 69 | default: |
27 | 70 | return nil; |
28 | 71 | } |
29 | 72 |
|
30 | 73 | return nil; |
31 | 74 | } |
32 | 75 |
|
33 | | -- (<#=GetObjCTypeIdentifier(entity)#>) to<#=GetObjCTypeIdentifier(entity)#>{ |
| 76 | +- (<#=typeName#>*) to<#=typeName#>{ |
34 | 77 |
|
35 | 78 | <# |
36 | 79 | foreach(var member in entity.Members) |
37 | 80 | { |
38 | 81 | #>if([self isEqualToString:@"<#=member.Name#>"]) |
39 | | - { |
40 | | - return <#=GetObjCEnumMember(entity,member)#>; |
41 | | - } |
42 | | - else <# |
43 | | - } |
44 | | - #> |
45 | 82 | { |
| 83 | + return [<#=typeName#> <#=GetObjCEnumMember(entity,member)#>]; |
| 84 | + } |
| 85 | + else <# |
| 86 | + } |
| 87 | + #>{ |
46 | 88 | return <#=GetObjCTypeIdentifier(entity)#>EndOfEnum; |
47 | 89 | } |
48 | 90 | } |
|
0 commit comments