Como se pode obter o tamanho de um tipo para o qual se tem uma codificaçã
Dado um tipo de Objective-Ctype
, pode-se obter ocodificaçã encoding
e tamanhosize
do tipo facilmente:
const char *encoding = @encode(type);
size_t size = sizeof(type);
Muito diferente, temos mapeamentos
@encode: type_t -> const char *
sizeof: type_t -> size_t
Isto levanta duas questões:
(1) Suponha que, em vez de ter um tipo, tenhamos apenas uma codificação. Seria bom obter um mapeamento
sizeofencodedtype: const char * -> size_t
que para cada type_t type
nós temos isso
sizeofencodedtype(@encode(type)) = sizeof(type)
Essa função já existe? Caso contrário, como alguém pode construir um?
(2) Idealmente, poderíamos inverter o@codifica mapeamento para fazer um mapeamento
decode: const char * -> type_t
mas isso não parece ser possível, já que type_t não é um tipo C real. Eu acho que eu poderia esperar por@decodifica a ser adicionado ao idioma, mas isso não é muito realista ou é sensível ao tempo. Mas não deve ser possível instanciar um tipo em tempo de execução usando sua codificação?
Referências: Guia de Programação em Objective-C Runtime - Codificações de Tipo