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

Greg Clayton via lldb-dev lldb-dev at lists.llvm.org
Thu Sep 22 09:33:11 PDT 2016


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



More information about the lldb-dev mailing list