[lldb-dev] Cast SBValue?

Greg Clayton gclayton at apple.com
Mon Oct 18 10:15:48 PDT 2010

On Oct 18, 2010, at 8:54 AM, Arvid Ephraim Picciani wrote:

> On 09/23/2010 11:16 PM, ext Greg Clayton wrote:
>> It currently isn't in there, though it could easily be added. We should probably add it as:
>> class SBValue {
>> ...
>> 	SBValue Cast (SBType type);
>> };
> tried doing that, unfortunately SBType is not actually a lldb_private::Type, so i don't see  how i should use as actual type in Value.  This whole clang AST stuff is just magic to me, and i dont know what to do with it in the context of casting.

The SBType and SBTypeList stuff hasn't really been fleshed out or used a lot yet and it does need some work. 

The idea would be (and this is not how it currently is) is you would search for types by name:

SBValue value = ...
SBTarget target ...
SBTypeList type_list;
uint32_t max_matches = 1;
size_t n = target.FindTypes ("size_t", type_list, max_matches);

if (n)
    SBType sb_type (type_list.GetTypeAtIndex (0));
    value.Cast (sb_type);

After looking at the code, nothing is really trying to return or fill in anything valid in the SBType and SBTypeList classes.

Like you said, I need to make SBType backed by a lldb::TypeSP like all the other classes.

The clang type system is large and complex, but the nice thing is with just an AST pointer and a type pointer (which is an opaque pointer that can be turned back into a clang::QualType), we can get all of the information out of a type:
- name
- size
- alignment
- num children
- what the type of each of the children are
- much more

More information about the lldb-dev mailing list