I see the point in SBTypeEnumerator being confusing, tbh

My original idea was SBEnumeratorEntry, which I still prefer

However, I am sure someone on this list will come up with something amazing :)

Enrico Granata
📩 egranata@.com
☎️ 27683

On Oct 22, 2013, at 3:53 PM, Russell Harmon <[email protected]> wrote:

> I had a full email saying why I disagree written when I convinced myself that 
> I agree. My thinking is that an enum member is the only "type" (that I can 
> think of) which is itself also a value. Anyway, I'm fine with what you've 
> outlined, although the name SBTypeEnumerator is a bit confusing. How about 
> SBValuedType or SBEnumTypeMember?
> 
> --
> Russell Harmon
> 
> 
> On Mon, Oct 14, 2013 at 10:45 AM, Enrico Granata <[email protected]> wrote:
> Russell,
> I agree with Greg that this is a more sensible approach than hijacking 
> SBTypeList for something that is not a type
> If you want to go ahead and work in this area, you are most welcome to
> 
> Just a side note, since our SB objects are backed by one opaque-pointer type 
> instance variable, it might make sense to define a TypeEnumeratorImpl class 
> (and a corresponding TypeEnumeratorListImpl) much like SBType is backed by 
> TypeImpl (technically, shared_ptr<TypeImpl>)
> Having these classes in lldb-core would allow us to implement this 
> functionality at the ClangASTType level and then just export it at the SB API 
> level
> 
> What are your thoughts on this approach?
> 
> Enrico Granata
> 📩 egranata@.com
> ☎️ 27683
> 
> On Oct 14, 2013, at 10:22 AM, Greg Clayton <[email protected]> wrote:
> 
>> An SBTypeList contains a list of SBType objects. It would not be very useful 
>> since SBType objects do not contain a values.
>> 
>> We should probably make an SBTypeEnumerator. Something like:
>> 
>> 
>> class SBTypeEnumerator
>> {
>>      bool
>>      IsSigned();
>>      
>>      // Get the enumerator value as a signed integer
>>      int64_t
>>      GetValueAsSigned();
>> 
>>      // Get the enumerator value as an unsigned integer
>>        uint64_t
>>      GetValueAsUnsigned();
>> 
>>      // Return the exact integer type for this enumerator
>>      SBType
>>      GetType();
>> 
>>      const char *
>>      GetName();
>> };
>> 
>> Then we would need to add a SBTypeEnumeratorList class as well:
>> 
>> class SBTypeEnumeratorList 
>> {
>>      SBTypeEnumerator
>>      GetEnumeratorAtIndex (uint32_t idx);
>> 
>>      SBTypeEnumerator
>>      GetEnumeratorByName (const char *name);
>> 
>>      SBTypeEnumeratorList
>>      GetEnumeratorsByValue (int64_t value);
>> 
>>      SBTypeEnumeratorList
>>      GetEnumeratorsByValue (uint64_t value);
>> };
>> 
>> Then we would need to add functions to SBType:
>> 
>> class SBType
>> {
>>      SBTypeEnumeratorList
>>      GetEnumerators();
>> }
>> 
>> This would return a valid SBTypeEnumeratorList only if the SBType it was run 
>> on is an enumeration type.
>> 
>> 
>> 
>> On Oct 13, 2013, at 5:14 PM, Russell Harmon <[email protected]> wrote:
>> 
>>> According to the C11 standard, N1570, §6.7.2.2.3, "The identifiers in an 
>>> enumerator list are declared as constants that have type int". Based on 
>>> this, wouldn't it make most sense to have a function that returns an 
>>> SBTypeList of ints?
>>> 
>>> Is there an easy work around for this missing bit of API, or shall I add 
>>> the necessary pieces?
>>> 
>>> --
>>> Russell Harmon
>>> 
>>> 
>>> On Mon, Oct 7, 2013 at 10:45 AM, Enrico Granata <[email protected]> wrote:
>>> As far as I can tell/remember, this is missing API
>>> 
>>> Technically, it would not be an SBTypeList since the entries in an 
>>> enumerator are *NOT* types.
>>> 
>>> We would probably have to come up with a new class like an 
>>> SBEnumeratorEntry (I am sure better names are possible :-) that wraps the 
>>> notion of a (numeric_value,string_name) pair
>>> 
>>> Enrico Granata
>>> 📩 egranata@.com
>>> ☎️ 27683
>>> 
>>> On Oct 7, 2013, at 12:23 AM, Russell Harmon <[email protected]> wrote:
>>> 
>>>> Is there a way to enumerate the fields of an enum (e.x. get an SBTypeList 
>>>> from an enum), or is that missing API?
>>>> 
>>>> Thanks
>>>> Russell Harmon
>>>> _______________________________________________
>>>> 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