Mi stavo stancando di ripetere i tipi scrivendo cose del genere:
NSDictionary* d = @{@"so": [NSNumber numberWithInt:index]),
@"much": [NSNumber numberWithBool:accepted]),
@"repeat": [NSNumber numberWithDouble:height]};
Quindi ho definito una macro generica (una nuova funzionalità in C11):
#define box(X) _Generic((X), \
char: boxChar, \
unsigned char: boxUnsignedChar, \
short: boxShort, \
unsigned short: boxUnsignedShort, \
int: boxInt, \
unsigned int: boxUnsignedInt, \
long: boxLong, \
unsigned long: boxUnsignedLong, \
long long: boxLongLong, \
unsigned long long: boxUnsignedLongLong, \
float: boxFloat, \
double: boxDouble, \
BOOL: boxBool \
)(X)
... implement type-specific box methods as well ...
In modo che potessi scrivere cose come questa:
NSDictionary* d = @{@"so": box(index),
@"much": box(accepted),
@"shorter": box(height)};
Questa è una buona idea? Posso aspettarmi che altri siano in grado di costruire il codice? Lo odieranno per non essere standard?