| {{> header excludeZapComment=true}} |
| |
| #import "MTRStructsObjc.h" |
| |
| NS_ASSUME_NONNULL_BEGIN |
| |
| {{#zcl_clusters}} |
| {{#zcl_structs}} |
| {{#*inline "interfaceImpl"}} |
| @implementation {{interfaceName}} |
| - (instancetype)init |
| { |
| if (self = [super init]) { |
| {{#zcl_struct_items}} |
| {{>init_struct_member label=label type=type cluster=parent.parent.name}} |
| {{/zcl_struct_items}} |
| } |
| return self; |
| } |
| |
| - (id)copyWithZone:(NSZone * _Nullable)zone |
| { |
| auto other = [[{{interfaceName}} alloc] init]; |
| |
| {{#zcl_struct_items}} |
| other.{{asStructPropertyName label}} = self.{{asStructPropertyName label}}; |
| {{/zcl_struct_items}} |
| |
| return other; |
| } |
| |
| - (NSString *)description |
| { |
| NSString *descriptionString = [NSString stringWithFormat:@"<%@: {{#zcl_struct_items}}{{asStructPropertyName label}}:%@; {{/zcl_struct_items}}>", NSStringFromClass([self class]){{#zcl_struct_items}},{{#if isArray}}_{{asStructPropertyName label}}{{else if (isOctetString type)}}[_{{asStructPropertyName label}} base64EncodedStringWithOptions:0]{{else}}_{{asStructPropertyName label}}{{/if}}{{/zcl_struct_items}}]; |
| return descriptionString; |
| } |
| |
| @end |
| {{/inline}} |
| |
| {{> interfaceImpl interfaceName=(concat "MTR" (asUpperCamelCase parent.name) "Cluster" (asUpperCamelCase name))}} |
| |
| {{!Backwards compat for now: Add a DeviceType thing that is API-compatible with DeviceTypeStruct. }} |
| {{#if (isStrEqual (asUpperCamelCase parent.name) "Descriptor")}} |
| {{#if (isStrEqual (asUpperCamelCase name) "DeviceTypeStruct")}} |
| {{> interfaceImpl interfaceName="MTRDescriptorClusterDeviceType"}} |
| {{/if}} |
| {{else if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}} |
| @implementation MTRTestClusterCluster{{asUpperCamelCase name}} : MTRUnitTestingCluster{{asUpperCamelCase name}} |
| @end |
| {{/if}} |
| |
| {{/zcl_structs}} |
| |
| {{#zcl_events}} |
| @implementation MTR{{asUpperCamelCase parent.name}}Cluster{{asUpperCamelCase name}}Event |
| - (instancetype)init |
| { |
| if (self = [super init]) { |
| {{#zcl_event_fields}} |
| {{>init_struct_member label=name type=type cluster=parent.parent.name}} |
| {{/zcl_event_fields}} |
| } |
| return self; |
| } |
| |
| - (id)copyWithZone:(NSZone * _Nullable)zone |
| { |
| auto other = [[MTR{{asUpperCamelCase parent.name}}Cluster{{asUpperCamelCase name}}Event alloc] init]; |
| |
| {{#zcl_event_fields}} |
| other.{{asStructPropertyName name}} = self.{{asStructPropertyName name}}; |
| {{/zcl_event_fields}} |
| |
| return other; |
| } |
| |
| - (NSString *)description |
| { |
| NSString *descriptionString = [NSString stringWithFormat:@"<%@: {{#zcl_event_fields}}{{asStructPropertyName name}}:%@; {{/zcl_event_fields}}>", NSStringFromClass([self class]){{#zcl_event_fields}},{{#if isArray}}_{{asStructPropertyName name}}{{else if (isOctetString type)}}[_{{asStructPropertyName name}} base64EncodedStringWithOptions:0]{{else}}_{{asStructPropertyName name}}{{/if}}{{/zcl_event_fields}}]; |
| return descriptionString; |
| } |
| |
| @end |
| {{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}} |
| |
| @implementation MTRTestClusterCluster{{asUpperCamelCase name}}Event : MTRUnitTestingCluster{{asUpperCamelCase name}}Event |
| @end |
| {{/if}} |
| |
| {{/zcl_events}} |
| |
| {{/zcl_clusters}} |
| |
| NS_ASSUME_NONNULL_END |