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@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@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to