[lldb-dev] Enumerating the members of an enum

Greg Clayton gclayton at apple.com
Mon Oct 14 10:22:55 PDT 2013


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 <russ at eatnumber1.com> 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 <egranata at apple.com> 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 <russ at eatnumber1.com> 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
>> lldb-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> 
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev





More information about the lldb-dev mailing list