Yes, a centralized list would be nice<br><div class="gmail_quote"><div dir="ltr">On Fri, Feb 3, 2017 at 5:27 PM Jim Ingham <<a href="mailto:jingham@apple.com">jingham@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">That doesn't help me if I don't know that Format takes formatters and that various lldb objects take formatters and here are all the formatters we have.  And it would be kinder to have the list of available formatters centralized somewhere so folks don't have to go scouring through the code to see what's there.<br class="gmail_msg">
<br class="gmail_msg">
Jim<br class="gmail_msg">
<br class="gmail_msg">
> On Feb 3, 2017, at 4:49 PM, Zachary Turner <<a href="mailto:zturner@google.com" class="gmail_msg" target="_blank">zturner@google.com</a>> wrote:<br class="gmail_msg">
><br class="gmail_msg">
> Right, one of the suggestions I mentioned first was to have comments in the headers that mention the ability to format the class, or to have the formatters defined in the same header file as the object.  So you look at the definition of FileSpec, and you learn about the formatter for FileSpec.<br class="gmail_msg">
><br class="gmail_msg">
> On Fri, Feb 3, 2017 at 4:48 PM Jim Ingham <<a href="mailto:jingham@apple.com" class="gmail_msg" target="_blank">jingham@apple.com</a>> wrote:<br class="gmail_msg">
> Not to be snarky, but that's why we put comments in headers...<br class="gmail_msg">
><br class="gmail_msg">
> Jim<br class="gmail_msg">
><br class="gmail_msg">
> > On Feb 3, 2017, at 4:47 PM, Zachary Turner via Phabricator <<a href="mailto:reviews@reviews.llvm.org" class="gmail_msg" target="_blank">reviews@reviews.llvm.org</a>> wrote:<br class="gmail_msg">
> ><br class="gmail_msg">
> > zturner added a comment.<br class="gmail_msg">
> ><br class="gmail_msg">
> > I guess the same way you would know how to use any part of a library or API.  The first time you've ever used an API, you don't know how it works, so you don't know it's capabilities.  So you fiddle around, read the source code, trudge through some compiler errors, then you learned some more about how it works.  Probably someone using this would try to print something, and get a compiler error that triggers a helpful static_assert which says "missing format provider for type = Foo!".  That gives them the next piece of the puzzle they need to understand a little bit more.  Or they look at the code for `formatv` to see how it works and see all the documentation.<br class="gmail_msg">
> ><br class="gmail_msg">
> > It sounds analogous to asking "how does someone new to the codebase know that commands in LLDB are implemented by something which inherits from CommandObject?".  Of course you don't if you're brand new, but once you figure it out you don't really have to spend much time thinking about it again.<br class="gmail_msg">
> ><br class="gmail_msg">
> ><br class="gmail_msg">
> > <a href="https://reviews.llvm.org/D29510" rel="noreferrer" class="gmail_msg" target="_blank">https://reviews.llvm.org/D29510</a><br class="gmail_msg">
> ><br class="gmail_msg">
> ><br class="gmail_msg">
> ><br class="gmail_msg">
><br class="gmail_msg">
<br class="gmail_msg">
</blockquote></div>