Rewrote objc_getClassList() to use class table directly.

Fixed missing UNLOCK() from last commit.
main
theraven 16 years ago
parent 0abdc2a574
commit a35ece500f

@ -136,4 +136,23 @@ void __objc_resolve_class_links(void)
{
objc_resolve_class(class);
}
UNLOCK(__objc_runtime_mutex);
}
int objc_getClassList(Class *buffer, int bufferLen)
{
if (buffer == NULL)
{
return class_table->table_used;
}
int count = 0;
struct class_table_internal_table_enumerator *e;
Class next;
while (count < bufferLen &&
(next = class_table_internal_next(class_table, &e)))
{
buffer[count++] = next;
}
return count;
}

@ -650,31 +650,6 @@ id objc_getClass(const char *name)
return (id)objc_get_class(name);
}
int objc_getClassList(Class *buffer, int bufferLen)
{
int count = 0;
if (buffer == NULL)
{
void *state = NULL;
while(Nil != objc_next_class(&state))
{
count++;
}
}
else
{
Class nextClass;
void *state = NULL;
while (Nil != (nextClass = objc_next_class(&state)) && bufferLen > 0)
{
count++;
bufferLen--;
*(buffer++) = nextClass;
}
}
return count;
}
id objc_getMetaClass(const char *name)
{
Class cls = (Class)objc_getClass(name);

Loading…
Cancel
Save