On Feb 22, 2013, at 1:51 PM, Enrico Granata <[email protected]> wrote:

> CallMethod is right for C++, but for ObjC it would be CallSelector. I don’t 
> think ObjC even has the notion of method in its lexicon.

Yeah, the ObjC guys are pretty sloppy about their nomenclature (is it a method, 
is it a message...)  And the selector defines the method, so I don't think 
you'd really need two calls.

> 
> Also, dealing with the arguments is going to be tricky.
> Problems I can see at a glance:
> - how do you deal with each SBValue while making the string? expression path? 
> numeric value + a cast? neither way looks perfect at a glance

I don't think you would make up a string.  You would implement this lower down 
than that, where we are directly populating the "arguments structure" that we 
are going to call, a la the Clang Functions.  And by the time we get there, we 
would have the method signature, so we'd know how to interpret the SBValues 
from the input arguments.

> - for ObjC you need to also extract the “names of the arguments” (i.e. 
> foo:arg1 bar:arg2 baz:arg3), while in C++ (arg1,arg2,arg3) is enough

Again, you would be consing up a call to objc_msgSend with the arguments passed 
directly, so that would not be an issue.

Jim


> 
> Of course, there are ways around these issues, but I am not sure this is 
> useful enough to warrant the work required to get it right.
> 
> The data formatters need a much more constrained subset of this 
> functionality, so they implement their own wrapper.
> Any special subset should be trivial to implement, the general case looks 
> tricky.
> 
> Enrico Granata
> ✉ egranata@.com
> ✆ 27683
> 
> On Feb 22, 2013, at 12:14 PM, Jim Ingham <[email protected]> wrote:
> 
>> I'm not arguing for this, but you could do a fairly straightforward API like:
>> 
>> SBValue
>> SBValue::CallMethod(const char *methodName, SBValueList arguments);
>> 
>> This would only work if the SBValue was a C++ or ObjC object.  In the ObjC 
>> case "methodName" would be the selector, and the value list would have to be 
>> in parameter order.  
>> 
>> I can see this being useful, though probably under the covers it would take 
>> some work to get it right...
>> 
>> Jim
>> 
>> On Feb 22, 2013, at 11:51 AM, Filipe Cabecinhas <[email protected]> 
>> wrote:
>> 
>>> I also don't think it should be in the SB layer. There's lots of stuff to 
>>> deal with (arguments and their types, variable arguments 
>>> selectors/functions, etc). I think creating an expression is better (maybe 
>>> we can use clang so one doesn't have to generate an expression string?).
>>> 
>>> Regards,
>>> 
>>>  filipe
>>> 
>>> 
>>> On Fri, Feb 22, 2013 at 10:23 AM, Enrico Granata <[email protected]> wrote:
>>> Currently, no.
>>> You would have to craft your own expression and run it.
>>> 
>>> The C++ data formatters have their own helper functions to do so. You can 
>>> refer to lldb_private::formatters::ExtractValueFromObjCExpression for an 
>>> example.
>>> 
>>> I am not sure if this kind of API belongs in the SB layer. Ideas?
>>> 
>>> Enrico Granata
>>> ✉ egranata@.com
>>> ✆ 27683
>>> 
>>> On Feb 22, 2013, at 5:29 AM, Carlo Kok <[email protected]> wrote:
>>> 
>>>> Does the api expose any way to execute an objc selector a given value 
>>>> (SBValue)?  (for example I have an NSException instance in an SBValue, and 
>>>> want to call "name" on it).
>>>> 
>>>> 
>>>> What about global (c) functions?
>>>> 
>>>> 
>>>> If not the api, how can I do the equivalent with the underlying api?
>>>> 
>>>> 
>>>> Thanks,
>>>> --
>>>> 
>>>> Carlo Kok
>>>> 
>>>> 
>>>> _______________________________________________
>>>> lldb-dev mailing list
>>>> [email protected]
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>> 
>>> 
>>> _______________________________________________
>>> lldb-dev mailing list
>>> [email protected]
>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>> 
>>> 
>>> _______________________________________________
>>> lldb-dev mailing list
>>> [email protected]
>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>> 
> 


_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to