C Program to Array Deserialization

How to write a C Program to Array Deserialization in C Programming Language ?


Solution:

  1. - (NSArray *)deserializeArray:(avro_reader_t)reader
  2.                  withSelector:(SEL)deserializeFunc
  3.                      andParam:(id)param
  4.                        target:(id)target {
  5.     int64_t size;
  6.     avro_binary_encoding.read_long(reader, &size);
  7.     NSMutableArray *array = [NSMutableArray arrayWithCapacity:size];
  8.     if (size != 0 && [(target ? target : self) respondsToSelector:deserializeFunc]) {
  9.         if (size < 0) {
  10.             int64_t temp;
  11.             size *= (-1);
  12.             avro_binary_encoding.read_long(reader, &temp);
  13.         }
  14.         __unsafe_unretained id parameter = param;
  15.         NSMethodSignature *signature = [(target ? target : self) methodSignatureForSelector:deserializeFunc];
  16.         NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
  17.         NSUInteger argsCount = [signature numberOfArguments];
  18.         [invocation setSelector:deserializeFunc];
  19.         [invocation setTarget:(target ? target : self)];
  20.         [invocation setArgument:&reader atIndex:2];
  21.         if (argsCount > 3 && parameter) {
  22.             [invocation setArgument:&parameter atIndex:3];
  23.         }
  24.         __unsafe_unretained id object;
  25.         int index;
  26.         for (index = 0; index < size; index++) {
  27.             [invocation invoke];
  28.             [invocation getReturnValue:&object];
  29.             [array addObject:object];
  30.         }
  31.        
  32.         avro_binary_encoding.read_long(reader, &size);
  33.     }
  34.     return array;
  35. }


Learn More :