[PATCH] Fix sample code in section "Writing a custom parser"
Robinson, Paul
Paul_Robinson at playstation.sony.com
Mon Oct 13 14:22:44 PDT 2014
Committed for Doug, r219613.
From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-bounces at cs.uiuc.edu] On Behalf Of Chris Bieneman
Sent: Thursday, October 09, 2014 2:27 PM
To: Yung, Douglas; Chandler Carruth
Cc: llvm-commits at cs.uiuc.edu
Subject: Re: [PATCH] Fix sample code in section "Writing a custom parser"
+chandlerc
Not sure if I’m really qualified to approve, but this LGTM.
This is one feature of the existing cl::opt that we’re going to need to figure out how to handle in the new API, but that’s a whole other discussion.
-Chris
On Oct 8, 2014, at 1:24 PM, Yung, Douglas <douglas_yung at playstation.sony.com<mailto:douglas_yung at playstation.sony.com>> wrote:
Hi –
I recently was trying to add switch which used a custom parser by following the directions athttp://llvm.org/docs/CommandLine.html#custom-parser. However, the example is out-of-date, and I wanted to fix it so that others using it in the future will not get confused. This is an issue that has been around for quite a while as I found an email regarding it was sent out in January of 2012 (http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-January/046919.html), but it was never fixed. My changes allow it to work with the latest version of trunk that I tested, revision 219325.
Files:
Docs/CommandLine.rst
======8<======
Index: docs/CommandLine.rst
===================================================================
--- docs/CommandLine.rst (revision 219288)
+++ docs/CommandLine.rst (working copy)
@@ -1630,13 +1630,13 @@
.. code-block:: c++
- struct FileSizeParser : public cl::basic_parser<unsigned> {
+ struct FileSizeParser : public cl::parser<unsigned> {
// parse - Return true on error.
- bool parse(cl::Option &O, const char *ArgName, const std::string &ArgValue,
+ bool parse(cl::Option &O, StringRef ArgName, const std::string &ArgValue,
unsigned &Val);
};
-Our new class inherits from the ``cl::basic_parser`` template class to fill in
+Our new class inherits from the ``cl::parser`` template class to fill in
the default, boiler plate code for us. We give it the data type that we parse
into, the last argument to the ``parse`` method, so that clients of our custom
parser know what object type to pass in to the parse method. (Here we declare
@@ -1652,7 +1652,7 @@
.. code-block:: c++
- bool FileSizeParser::parse(cl::Option &O, const char *ArgName,
+ bool FileSizeParser::parse(cl::Option &O, StringRef ArgName,
const std::string &Arg, unsigned &Val) {
const char *ArgStart = Arg.c_str();
char *End;
@@ -1698,7 +1698,7 @@
OPTIONS:
-help - display available options (-help-hidden for more)
...
- -max-file-size=<size> - Maximum file size to accept
+ -max-file-size=<size> - Maximum file size to accept
And we can test that our parse works correctly now (the test program just prints
out the max-file-size argument value):
======8<======
_______________________________________________
llvm-commits mailing list
llvm-commits at cs.uiuc.edu<mailto:llvm-commits at cs.uiuc.edu>
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141013/f9e04ff6/attachment.html>
More information about the llvm-commits
mailing list