mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-21 04:32:03 +00:00
Guess at types when given untyped selector.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@10613 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
cbe5d6085c
commit
4edddb4c29
2 changed files with 27 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2001-07-31 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
|
* Source/GSFFCallInvocation.m: attempt to guess type signature
|
||||||
|
when compiler gives us an untyped selector.
|
||||||
|
|
||||||
2001-07-30 Adam Fedor <fedor@gnu.org>
|
2001-07-30 Adam Fedor <fedor@gnu.org>
|
||||||
|
|
||||||
* Headers/gnustep/base/NSObjCRuntime.h: Export additional functions
|
* Headers/gnustep/base/NSObjCRuntime.h: Export additional functions
|
||||||
|
|
|
@ -374,6 +374,28 @@ void GSInvocationCallback(void *callback_data, va_alist args)
|
||||||
|
|
||||||
callback_sel = *(SEL *)callback_data;
|
callback_sel = *(SEL *)callback_data;
|
||||||
callback_type = sel_get_type(callback_sel);
|
callback_type = sel_get_type(callback_sel);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make a guess at what the type signature might be by asking the
|
||||||
|
* runtime for a selector with the same name as the untyped one we
|
||||||
|
* were given.
|
||||||
|
*/
|
||||||
|
if (callback_type == NULL)
|
||||||
|
{
|
||||||
|
const char *name = sel_get_name(callback_sel);
|
||||||
|
|
||||||
|
if (name != NULL)
|
||||||
|
{
|
||||||
|
SEL sel = sel_get_any_typed_uid(name);
|
||||||
|
|
||||||
|
if (sel != NULL)
|
||||||
|
{
|
||||||
|
callback_sel = sel;
|
||||||
|
callback_type = sel_get_type(callback_sel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (callback_type == NULL)
|
if (callback_type == NULL)
|
||||||
[NSException raise: NSInvalidArgumentException
|
[NSException raise: NSInvalidArgumentException
|
||||||
format: @"Invalid selector %s (no type information)",
|
format: @"Invalid selector %s (no type information)",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue