[lldb-dev] Converting global option tables to use ArrayRef

Zachary Turner via lldb-dev lldb-dev at lists.llvm.org
Thu Sep 22 10:24:10 PDT 2016


I put it up for review.  I don't expect anyone to actually review it since
it's quite large and 99% of it is the same exact thing.  I'm running tests
on Linux and Windows right now.  Will also test on Mac if beanz's new lldb
framework thing works out for me.  I'm going to try to commit sometime
after lunch after I confirm all the tests are passing.

On Thu, Sep 22, 2016 at 9:33 AM Greg Clayton <gclayton at apple.com> wrote:

> That sounds like a good patch. I look forward to seeing it.
>
> > On Sep 21, 2016, at 11:48 PM, Zachary Turner via lldb-dev <
> lldb-dev at lists.llvm.org> wrote:
> >
> > I have a patch I'd like to submit tomorrow which converts all of the
> global command option tables from C-style arrays to llvm ArrayRefs.
> >
> > Actually they are still declared internally in each translation unit as
> C-style arrays, but the Option classes are updated so that they return
> ArrayRefs instead of raw pointers.  Previously there were two strategies:
> >
> > 1) Sometimes we'd return a const Option* and have a method on the class
> called GetNumDefinitions() so you could treat the pointer as an array.
> >
> > 2) Other times we'd return a const Option* and expect the caller to
> iterate until it reached a sentinel entry.
> >
> > With the new approach, the two methods are merged and now the
> GetDefinitions() method only returns an ArrayRef<OptionDefinition>.
> >
> > Since this carries with it its length, neither the GetNumDefinitions()
> method nor the sentinel entry are needed any more.
> >
> > Most of the old code compiled without modification, because ArrayRef can
> be treated with a similar syntax as arrays, except you'll get a nice assert
> if you index out of bounds.
> >
> > An added bonus is that you can now iterate over them with ranged-based
> for syntax.
> >
> > I can put it up for review if anyone would like, but as it is extremely
> mechanical there's not really much to see.
> > _______________________________________________
> > lldb-dev mailing list
> > lldb-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20160922/d64b75fb/attachment.html>


More information about the lldb-dev mailing list