How about SBTypeEnumMember? Everything in SBType.h currently starts with SBType.
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
