Add support for atomic type qualifiers.

Fixes #101.
main
Frederik Seiffert 7 years ago committed by David Chisnall
parent a2463192d0
commit ae6a777742

@ -21,7 +21,7 @@ size_t objc_alignof_type (const char *type);
const char *objc_skip_type_qualifiers (const char *type)
{
static const char *type_qualifiers = "rnNoORV";
static const char *type_qualifiers = "rnNoORVA";
while('\0' != *type && strchr(type_qualifiers, *type))
{
type++;

@ -109,7 +109,7 @@ static const char *skip_irrelevant_type_info(const char *t)
{
default: return t;
case 'r': case 'n': case 'N': case 'o': case 'O': case 'R':
case 'V': case '!': case '0'...'9':
case 'V': case 'A': case '!': case '0'...'9':
return skip_irrelevant_type_info(t+1);
}
}

@ -183,7 +183,7 @@ struct objc_slot *objc_msg_lookup_sender(id *receiver, SEL selector, id sender)
const char *t = selector->types;
// Skip type qualifiers
while ('r' == *t || 'n' == *t || 'N' == *t || 'o' == *t ||
'O' == *t || 'R' == *t || 'V' == *t)
'O' == *t || 'R' == *t || 'V' == *t || 'A' == *t)
{
t++;
}
@ -219,7 +219,7 @@ static struct objc_slot2* objc_slot_lookup(id *receiver, SEL selector)
const char *t = selector->types;
// Skip type qualifiers
while ('r' == *t || 'n' == *t || 'N' == *t || 'o' == *t ||
'O' == *t || 'R' == *t || 'V' == *t)
'O' == *t || 'R' == *t || 'V' == *t || 'A' == *t)
{
t++;
}
@ -253,7 +253,7 @@ struct objc_slot2 *objc_slot_lookup_version(id *receiver, SEL selector, uint64_t
const char *t = selector->types;
// Skip type qualifiers
while ('r' == *t || 'n' == *t || 'N' == *t || 'o' == *t ||
'O' == *t || 'R' == *t || 'V' == *t)
'O' == *t || 'R' == *t || 'V' == *t || 'A' == *t)
{
t++;
}

Loading…
Cancel
Save