Parse command-line arguments. More...
#include <command-line.h>
Collaboration diagram for ns3::CommandLine:Classes | |
| class | CallbackItem |
| An argument Item using a Callback to parse the input. More... | |
| class | Item |
| The argument base class. More... | |
| class | UserItem |
| An argument Item assigning to POD. More... | |
Public Member Functions | |
| CommandLine () | |
| Constructor. More... | |
| CommandLine (const CommandLine &cmd) | |
| Copy constructor. More... | |
| ~CommandLine () | |
| Destructor. More... | |
| template<typename T > | |
| void | AddValue (const std::string &name, const std::string &help, T &value) |
| Add a program argument, assigning to POD. More... | |
| void | AddValue (const std::string &name, const std::string &help, Callback< bool, std::string > callback) |
| Add a program argument, using a Callback to parse the value. More... | |
| std::string | GetName () const |
| Get the program name. More... | |
| CommandLine & | operator= (const CommandLine &cmd) |
| Assignment. More... | |
| void | Parse (int argc, char *argv[]) |
| Parse the program arguments. More... | |
| void | PrintHelp (std::ostream &os) const |
| Print program usage to the desired output stream. More... | |
| void | Usage (const std::string usage) |
| Supply the program usage and documentation. More... | |
Private Types | |
| typedef std::list< Item * > | Items |
| Argument list container. More... | |
Private Member Functions | |
| void | Clear (void) |
| Remove all arguments, Usage(), name. More... | |
| void | Copy (const CommandLine &cmd) |
| Copy constructor. More... | |
| void | HandleArgument (const std::string &name, const std::string &value) const |
| Match name against the program or general arguments, and dispatch to the appropriate handler. More... | |
| void | PrintAttributes (std::ostream &os, const std::string &type) const |
Handler for --PrintAttributes: print the attributes for a given type. More... | |
| void | PrintGlobals (std::ostream &os) const |
Handler for --PrintGlobals: print all global variables and values. More... | |
| void | PrintGroup (std::ostream &os, const std::string &group) const |
Handler for --PrintGroup: print all types belonging to a given group. More... | |
| void | PrintGroups (std::ostream &os) const |
Handler for --PrintGroups: print all TypeId group names. More... | |
| void | PrintTypeIds (std::ostream &os) const |
Handler for --PrintTypeIds: print all TypeId names. More... | |
Private Attributes | |
| Items | m_items |
| The list of arguments. More... | |
| std::string | m_name |
| The program name. More... | |
| std::string | m_usage |
| The Usage string. More... | |
Parse command-line arguments.
Instances of this class can be used to parse command-line arguments. Programs can register a general usage message with CommandLine::Usage, and arguments with CommandLine::AddValue. POD argument variables will be set directly; more general arguments can be processed via a Callback.
CommandLine also provides handlers for these standard arguments:
The more common –help is a synonym for –PrintHelp; an example is given below.
Finally, CommandLine processes Attribute and GlobalValue arguments.
In use, arguments are given in the form
Most arguments expect a value, as in the first form, –arg=value. Toggles, corresponding to boolean arguments, can be given in any of the forms
The first form changes the state of toggle1 from its default; all the rest set the corresponding boolean variable to true. 0, f and false are accepted to set the variable to false.
CommandLine can set the initial value of every attribute in the system with the –TypeIdName::AttributeName=value syntax, for example
CommandLine can also set the value of every GlobalValue in the system with the –GlobalValueName=value syntax, for example
A simple example is in src/core/example/command-line-example.cc The heart of that example is this code:
after which it prints the values of each variable. (The SetCbArg function is not shown.)
Here is the output from a few runs of that program:
Definition at line 152 of file command-line.h.
|
private |
Argument list container.
Definition at line 353 of file command-line.h.
| ns3::CommandLine::CommandLine | ( | ) |
| ns3::CommandLine::CommandLine | ( | const CommandLine & | cmd | ) |
Copy constructor.
| cmd | the CommandLine to copy from |
Definition at line 43 of file command-line.cc.
References Copy().
Here is the call graph for this function:| ns3::CommandLine::~CommandLine | ( | ) |
Destructor.
Definition at line 54 of file command-line.cc.
References Clear(), and NS_LOG_FUNCTION.
Here is the call graph for this function:| void ns3::CommandLine::AddValue | ( | const std::string & | name, |
| const std::string & | help, | ||
| T & | value | ||
| ) |
Add a program argument, assigning to POD.
| name | the name of the program-supplied argument |
| help | the help text used by --PrintHelp |
| value | a reference to the variable where the value parsed will be stored (if no value is parsed, this variable is not modified). |
Definition at line 408 of file command-line.h.
References ns3::CommandLine::UserItem< T >::m_default, ns3::CommandLine::Item::m_help, m_items, ns3::CommandLine::Item::m_name, and ns3::CommandLine::UserItem< T >::m_valuePtr.
Referenced by Experiment::CommandSetup(), RoutingExperiment::CommandSetup(), AodvExample::Configure(), MeshTest::Configure(), CommandLineBooleanTestCase::DoRun(), CommandLineIntTestCase::DoRun(), CommandLineUnsignedIntTestCase::DoRun(), CommandLineStringTestCase::DoRun(), main(), PrintPsr(), PrintPsrVsCollisionInterval(), PrintPsrVsDistance(), and PrintSizeVsRange().
Here is the caller graph for this function:| void ns3::CommandLine::AddValue | ( | const std::string & | name, |
| const std::string & | help, | ||
| Callback< bool, std::string > | callback | ||
| ) |
Add a program argument, using a Callback to parse the value.
| name | the name of the program-supplied argument |
| help | the help text used by –help |
| callback | a Callback function that will be invoked to parse and store the value. |
The callback should have the signature bool callback (const std::string value)
Definition at line 395 of file command-line.cc.
References ns3::CommandLine::CallbackItem::m_callback, ns3::CommandLine::Item::m_help, m_items, ns3::CommandLine::Item::m_name, and NS_LOG_FUNCTION.
|
private |
Remove all arguments, Usage(), name.
Definition at line 73 of file command-line.cc.
References m_items, m_name, m_usage, and NS_LOG_FUNCTION.
Referenced by operator=(), and ~CommandLine().
Here is the caller graph for this function:
|
private |
Copy constructor.
| cmd | CommandLine to copy |
Definition at line 60 of file command-line.cc.
References m_items, m_name, m_usage, and NS_LOG_FUNCTION.
Referenced by CommandLine(), and operator=().
Here is the caller graph for this function:| std::string ns3::CommandLine::GetName | ( | void | ) | const |
Get the program name.
Definition at line 93 of file command-line.cc.
References m_name.
Referenced by main().
Here is the caller graph for this function:
|
private |
Match name against the program or general arguments, and dispatch to the appropriate handler.
| name | the argument name |
| value | the command line value |
Definition at line 316 of file command-line.cc.
References m_items, NS_LOG_DEBUG, NS_LOG_FUNCTION, PrintAttributes(), PrintGlobals(), PrintGroup(), PrintGroups(), PrintHelp(), PrintTypeIds(), ns3::Config::SetDefaultFailSafe(), and ns3::Config::SetGlobalFailSafe().
Referenced by Parse().
Here is the call graph for this function:
Here is the caller graph for this function:| CommandLine & ns3::CommandLine::operator= | ( | const CommandLine & | cmd | ) |
Assignment.
| cmd | the CommandLine to assign from |
Definition at line 48 of file command-line.cc.
References Clear(), and Copy().
Here is the call graph for this function:| void ns3::CommandLine::Parse | ( | int | argc, |
| char * | argv[] | ||
| ) |
Parse the program arguments.
| argc | the 'argc' variable: number of arguments (including the main program name as first element). |
| argv | the 'argv' variable: a null-terminated array of strings, each of which identifies a command-line argument. |
Obviously, this method will parse the input command-line arguments and will attempt to handle them all.
As a side effect, this method saves the program basename, which can be retrieved by GetName().
Definition at line 104 of file command-line.cc.
References HandleArgument(), m_name, NS_LOG_FUNCTION, and ns3::SystemPath::Split().
Referenced by Experiment::CommandSetup(), RoutingExperiment::CommandSetup(), AodvExample::Configure(), MeshTest::Configure(), main(), and CommandLineTestCaseBase::Parse().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
Handler for --PrintAttributes: print the attributes for a given type.
| type | the TypeId whose Attributes should be displayed |
Definition at line 222 of file command-line.cc.
References ns3::TypeId::AttributeInformation::checker, ns3::TypeId::GetAttribute(), ns3::TypeId::GetAttributeFullName(), ns3::TypeId::GetAttributeN(), ns3::TypeId::GetName(), ns3::TypeId::AttributeInformation::help, ns3::TypeId::AttributeInformation::initialValue, ns3::TypeId::LookupByNameFailSafe(), NS_FATAL_ERROR, and NS_LOG_FUNCTION.
Referenced by HandleArgument().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
Handler for --PrintGlobals: print all global variables and values.
Definition at line 202 of file command-line.cc.
References ns3::GlobalValue::Begin(), ns3::GlobalValue::End(), ns3::StringValue::Get(), and NS_LOG_FUNCTION.
Referenced by HandleArgument().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
Handler for --PrintGroup: print all types belonging to a given group.
| group | the name of the TypeId group to display |
Definition at line 246 of file command-line.cc.
References ns3::TypeId::GetGroupName(), ns3::TypeId::GetName(), ns3::TypeId::GetRegistered(), ns3::TypeId::GetRegisteredN(), visualizer.higcontainer::group, and NS_LOG_FUNCTION.
Referenced by HandleArgument().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
Handler for --PrintGroups: print all TypeId group names.
Definition at line 275 of file command-line.cc.
References ns3::TypeId::GetGroupName(), ns3::TypeId::GetRegistered(), ns3::TypeId::GetRegisteredN(), visualizer.higcontainer::group, and NS_LOG_FUNCTION.
Referenced by HandleArgument().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::CommandLine::PrintHelp | ( | std::ostream & | os | ) | const |
Print program usage to the desired output stream.
Handler for --PrintHelp and --help: print Usage(), argument names, and help strings
Alternatively, an overloaded operator << can be used:
Definition at line 150 of file command-line.cc.
References m_items, m_name, m_usage, and NS_LOG_FUNCTION.
Referenced by HandleArgument().
Here is the caller graph for this function:
|
private |
Handler for --PrintTypeIds: print all TypeId names.
Definition at line 263 of file command-line.cc.
References ns3::TypeId::GetName(), ns3::TypeId::GetRegistered(), ns3::TypeId::GetRegisteredN(), and NS_LOG_FUNCTION.
Referenced by HandleArgument().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::CommandLine::Usage | ( | const std::string | usage | ) |
Supply the program usage and documentation.
| usage | Program usage message to write with –help. |
Definition at line 87 of file command-line.cc.
References m_usage.
Referenced by main().
Here is the caller graph for this function:
|
private |
The list of arguments.
Definition at line 354 of file command-line.h.
Referenced by AddValue(), Clear(), Copy(), HandleArgument(), and PrintHelp().
|
private |
The program name.
Definition at line 356 of file command-line.h.
Referenced by Clear(), Copy(), GetName(), Parse(), and PrintHelp().
|
private |
The Usage string.
Definition at line 355 of file command-line.h.
Referenced by Clear(), Copy(), PrintHelp(), and Usage().