
cocoagen.struct.m Maven / Gradle / Ivy
#import
#import "ApacheThrift/TApplicationException.h"
#import "ApacheThrift/TBase.h"
#import "ApacheThrift/TObjective-C.h"
#import "ApacheThrift/TProcessor.h"
#import "ApacheThrift/TProtocol.h"
#import "ApacheThrift/TProtocolException.h"
#import "ApacheThrift/TProtocolUtil.h"
#import "{{StructName}}.h"
@implementation {{StructName}}
- (NSString*)description
{
NSMutableString* ms = [NSMutableString stringWithString:@"{{StructName}}( "];
{{#fields}}
[ms appendString:@"{{fieldNameCamelCase}}:"];
[ms appendFormat:@"%@ ", {{#isPrimitive}}@({{/isPrimitive}}_{{fieldNameCamelCase}}{{#isPrimitive}}){{/isPrimitive}}];
{{/fields}}
[ms appendString:@")"];
return [NSString stringWithString:ms];
}
- (instancetype)initWith{{#fields}}{{fieldNameInInit}}:({{fieldType}}{{#readWriteInfo}}{{#isStruct}}*{{/isStruct}}{{/readWriteInfo}}){{fieldNameCamelCase}}{{/fields| }}
{
if (self = [super init]) {
{{#fields}}
[self set{{FieldName}}:{{fieldNameCamelCase}}];
{{/fields}}
}
return self;
}
- (instancetype)initWithCoder:(NSCoder*)decoder
{
if (self = [super init]) {
{{#fields}}
if ([decoder containsValueForKey:@"{{id}}"]) {
[self set{{FieldName}}:[decoder {{decodeMethod}}:@"{{id}}"]];
}
{{/fields}}
}
return self;
}
- (void)encodeWithCoder:(NSCoder*)encoder
{
{{#fields}}
if (_{{fieldNameCamelCase}}IsSet) {
[encoder {{encodeMethod}}:_{{fieldNameCamelCase}} forKey:@"{{id}}"];
}
{{/fields}}
}
{{#fields}}
- (void)set{{FieldName}}:({{fieldType}}{{#readWriteInfo}}{{#isStruct}} *{{/isStruct}}{{/readWriteInfo}}){{fieldNameCamelCase}}
{
_{{fieldNameCamelCase}} = {{^isPrimitive}}{{#readWriteInfo}}{{^isStruct}}[{{/isStruct}}{{/readWriteInfo}}{{/isPrimitive}}{{fieldNameCamelCase}}{{^isPrimitive}}{{#readWriteInfo}}{{^isStruct}} copy]{{/isStruct}}{{/readWriteInfo}}{{/isPrimitive}};
_{{fieldNameCamelCase}}IsSet = YES;
}
{{/fields|
}}
- (void)read:(id )inProtocol
{
NSString* fieldName;
int fieldType;
int fieldID;
[inProtocol readStructBeginReturningName:nil];
while (true) {
[inProtocol readFieldBeginReturningName:&fieldName type:&fieldType fieldID:&fieldID];
if (fieldType == TType_STOP) {
break;
}
switch (fieldID) {
{{#fields}}
{{#readWriteInfo}}
{{>readField}}
{{/readWriteInfo}}
{{/fields}}
default:
NSLog(@"%s: unexpected field ID %i with type %i. Skipping.", __PRETTY_FUNCTION__, fieldID, fieldType);
[TProtocolUtil skipType:fieldType onProtocol:inProtocol];
break;
}
[inProtocol readFieldEnd];
}
[inProtocol readStructEnd];
[self validate];
}
- (void)write:(id )outProtocol
{
[self validate];
[outProtocol writeStructBeginWithName:@"{{StructName}}"];
{{#fields}}
{{#readWriteInfo}}
{{>writeField}}
{{/readWriteInfo}}
{{/fields}}
[outProtocol writeFieldStop];
[outProtocol writeStructEnd];
}
- (void)validate
{
{{#fields}}
{{#required}}
if (!_{{fieldNameCamelCase}}IsSet) {
@throw [TProtocolException exceptionWithName:@"TProtocolException" reason:@"Required field '{{fieldNameCamelCase}}' is not set."];
}
{{/required}}
{{/fields}}
}
@end
© 2015 - 2025 Weber Informatics LLC | Privacy Policy