<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>CallMethod is right for C++, but for ObjC it would be CallSelector. I don’t think ObjC even has the notion of <i>method</i> in its lexicon.</div><div><br></div>Also, dealing with the arguments is going to be tricky.<div>Problems I can see at a glance:</div><div>- how do you deal with each SBValue while making the string? expression path? numeric value + a cast? neither way looks perfect at a glance</div><div>- for ObjC you need to also extract the “names of the arguments” (i.e. foo:<i>arg1</i> bar:<i>arg2</i> baz:<i>arg</i>3), while in C++ (<i>arg1</i>,<i>arg2</i>,<i>arg3</i>) is enough</div><div><br></div><div>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.</div><div><br></div><div>The data formatters need a much more constrained subset of this functionality, so they implement their own wrapper.</div><div>Any special subset should be trivial to implement, the general case looks tricky.<br><div><br><div>
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div style="font-size: medium; orphans: 2; widows: 2; border-collapse: separate; border-spacing: 0px;"><span style="font-size: 12px; orphans: auto; widows: auto;">Enrico Granata</span><br style="font-size: 12px; orphans: auto; widows: auto;"><span style="font-size: 12px; orphans: auto; widows: auto;">✉ egranata@</span><font color="#ff2600" style="font-size: 12px; orphans: auto; widows: auto;"></font><span style="font-size: 12px; orphans: auto; widows: auto;">.com</span><br style="font-size: 12px; orphans: auto; widows: auto;"><span style="font-size: 12px; orphans: auto; widows: auto;">✆ 27683</span></div></div>
</div>
<br><div><div>On Feb 22, 2013, at 12:14 PM, Jim Ingham <<a href="mailto:jingham@apple.com">jingham@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">I'm not arguing for this, but you could do a fairly straightforward API like:<br><br>SBValue<br>SBValue::CallMethod(const char *methodName, SBValueList arguments);<br><br>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.  <br><br>I can see this being useful, though probably under the covers it would take some work to get it right...<br><br>Jim<br><br>On Feb 22, 2013, at 11:51 AM, Filipe Cabecinhas <<a href="mailto:filcab+lldb-dev@gmail.com">filcab+lldb-dev@gmail.com</a>> wrote:<br><br><blockquote type="cite">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?).<br><br>Regards,<br><br>  filipe<br><br><br>On Fri, Feb 22, 2013 at 10:23 AM, Enrico Granata <<a href="mailto:egranata@apple.com">egranata@apple.com</a>> wrote:<br>Currently, no.<br>You would have to craft your own expression and run it.<br><br>The C++ data formatters have their own helper functions to do so. You can refer to lldb_private::formatters::ExtractValueFromObjCExpression for an example.<br><br>I am not sure if this kind of API belongs in the SB layer. Ideas?<br><br>Enrico Granata<br>✉ egranata@.com<br>✆ 27683<br><br>On Feb 22, 2013, at 5:29 AM, Carlo Kok <<a href="mailto:ck@remobjects.com">ck@remobjects.com</a>> wrote:<br><br><blockquote type="cite">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).<br><br><br>What about global (c) functions?<br><br><br>If not the api, how can I do the equivalent with the underlying api?<br><br><br>Thanks,<br>--<br><br>Carlo Kok<br><br><br>_______________________________________________<br>lldb-dev mailing list<br><a href="mailto:lldb-dev@cs.uiuc.edu">lldb-dev@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev<br></blockquote><br><br>_______________________________________________<br>lldb-dev mailing list<br><a href="mailto:lldb-dev@cs.uiuc.edu">lldb-dev@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev<br><br><br>_______________________________________________<br>lldb-dev mailing list<br>lldb-dev@cs.uiuc.edu<br>http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev<br></blockquote><br></blockquote></div><br></div></div></body></html>