<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;">Russell,<div>I agree with Greg that this is a more sensible approach than hijacking SBTypeList for something that is not a type</div><div>If you want to go ahead and work in this area, you are most welcome to</div><div><br></div><div>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>)</div><div>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</div><div><br></div><div>What are your thoughts on this approach?</div><div><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-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><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-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div style=" 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>
</div>
<br><div><div>On Oct 14, 2013, at 10:22 AM, Greg Clayton <<a href="mailto:gclayton@apple.com">gclayton@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">An SBTypeList contains a list of SBType objects. It would not be very useful since SBType objects do not contain a values.<br><br>We should probably make an SBTypeEnumerator. Something like:<br><br><br>class SBTypeEnumerator<br>{<br><span class="Apple-tab-span" style="white-space:pre">  </span>bool<br><span class="Apple-tab-span" style="white-space:pre">      </span>IsSigned();<br><span class="Apple-tab-span" style="white-space:pre">       </span><br><span class="Apple-tab-span" style="white-space:pre">  </span>// Get the enumerator value as a signed integer<br><span class="Apple-tab-span" style="white-space:pre">   </span>int64_t<br><span class="Apple-tab-span" style="white-space:pre">   </span>GetValueAsSigned();<br><br><span class="Apple-tab-span" style="white-space:pre">     </span>// Get the enumerator value as an unsigned integer<br>        uint64_t<br><span class="Apple-tab-span" style="white-space:pre">   </span>GetValueAsUnsigned();<br><br><span class="Apple-tab-span" style="white-space:pre">   </span>// Return the exact integer type for this enumerator<br><span class="Apple-tab-span" style="white-space:pre">      </span>SBType<br><span class="Apple-tab-span" style="white-space:pre">    </span>GetType();<br><br><span class="Apple-tab-span" style="white-space:pre">      </span>const char *<br><span class="Apple-tab-span" style="white-space:pre">      </span>GetName();<br>};<br><br>Then we would need to add a SBTypeEnumeratorList class as well:<br><br>class SBTypeEnumeratorList <br>{<br><span class="Apple-tab-span" style="white-space:pre">       </span>SBTypeEnumerator<br><span class="Apple-tab-span" style="white-space:pre">  </span>GetEnumeratorAtIndex (uint32_t idx);<br><br><span class="Apple-tab-span" style="white-space:pre">    </span>SBTypeEnumerator<br><span class="Apple-tab-span" style="white-space:pre">  </span>GetEnumeratorByName (const char *name);<br><br><span class="Apple-tab-span" style="white-space:pre"> </span>SBTypeEnumeratorList<br><span class="Apple-tab-span" style="white-space:pre">      </span>GetEnumeratorsByValue (int64_t value);<br><br><span class="Apple-tab-span" style="white-space:pre">  </span>SBTypeEnumeratorList<br><span class="Apple-tab-span" style="white-space:pre">      </span>GetEnumeratorsByValue (uint64_t value);<br>};<br><br>Then we would need to add functions to SBType:<br><br>class SBType<br>{<br><span class="Apple-tab-span" style="white-space:pre">  </span>SBTypeEnumeratorList<br><span class="Apple-tab-span" style="white-space:pre">      </span>GetEnumerators();<br>}<br><br>This would return a valid SBTypeEnumeratorList only if the SBType it was run on is an enumeration type.<br><br><br><br>On Oct 13, 2013, at 5:14 PM, Russell Harmon <<a href="mailto:russ@eatnumber1.com">russ@eatnumber1.com</a>> wrote:<br><br><blockquote type="cite">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?<br><br>Is there an easy work around for this missing bit of API, or shall I add the necessary pieces?<br><br>--<br>Russell Harmon<br><br><br>On Mon, Oct 7, 2013 at 10:45 AM, Enrico Granata <<a href="mailto:egranata@apple.com">egranata@apple.com</a>> wrote:<br>As far as I can tell/remember, this is missing API<br><br>Technically, it would not be an SBTypeList since the entries in an enumerator are *NOT* types.<br><br>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<br><br>Enrico Granata<br>📩 egranata@.com<br>☎️ 27683<br><br>On Oct 7, 2013, at 12:23 AM, Russell Harmon <<a href="mailto:russ@eatnumber1.com">russ@eatnumber1.com</a>> wrote:<br><br><blockquote type="cite">Is there a way to enumerate the fields of an enum (e.x. get an SBTypeList from an enum), or is that missing API?<br><br>Thanks<br>Russell Harmon<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></blockquote><br></blockquote></div><br></div></div></body></html>