appkit  1.5.1
RoadNarrows Robotics Application Kit
rnr::cmd::CmdExec Struct Reference

Helper class to hold a command line execution function. More...

#include <CommandLine.h>

Classes

union  FnVar
 Union of all variant execution functions. More...
 

Public Member Functions

 CmdExec ()
 Default constructor.
 
 CmdExec (int uid, CmdExec1Func fn)
 Variant 1 constructor. More...
 
 CmdExec (int uid, CmdExec2Func fn)
 Variant 2 constructor. More...
 
 CmdExec (int uid, CmdExec3Func fn)
 Variant 3 constructor. More...
 
 CmdExec (const CmdExec &src)
 Copy constructor. More...
 
int execute (const str::StringVec &argv)
 Execute a comamnd with the given arguments. More...
 
int execute (CommandLine &cli, const CmdExtArgVec &argv)
 Execute a comamnd with the given arguments. More...
 
int getUid () const
 Get associated command's unique id. More...
 

Protected Types

enum  Variant {
  VariantUndef,
  Variant1,
  Variant2,
  Variant3
}
 Execution function variant enumeration. More...
 

Protected Attributes

int m_uid
 command unique id associated with this execution
 
Variant m_variant
 function variant enum
 
FnVar m_exec
 function execution variant
 

Friends

std::ostream & operator<< (std::ostream &os, const CmdExec &obj)
 Insert object into output stream. More...
 

Detailed Description

Helper class to hold a command line execution function.

Definition at line 164 of file CommandLine.h.

Member Enumeration Documentation

Execution function variant enumeration.

Enumerator
VariantUndef 

undefined variant

Variant1 

variant 1

Variant2 

variant 2

Variant3 

variant 3

Definition at line 277 of file CommandLine.h.

278  {
279  VariantUndef, ///< undefined variant
280  Variant1, ///< variant 1
281  Variant2, ///< variant 2
282  Variant3 ///< variant 3
283  };

Constructor & Destructor Documentation

rnr::cmd::CmdExec::CmdExec ( int  uid,
CmdExec1Func  fn 
)
inline

Variant 1 constructor.

Parameters
uidAssociated command's unique id.
fnVariant 1 execution function.

Definition at line 183 of file CommandLine.h.

References rnr::cmd::CmdExec::FnVar::fn1, m_exec, m_uid, m_variant, and Variant1.

184  {
185  m_uid = uid;
187  m_exec.fn1 = fn;
188  }
Variant m_variant
function variant enum
Definition: CommandLine.h:297
int m_uid
command unique id associated with this execution
Definition: CommandLine.h:296
FnVar m_exec
function execution variant
Definition: CommandLine.h:298
CmdExec1Func fn1
execution function variant 1
Definition: CommandLine.h:291
rnr::cmd::CmdExec::CmdExec ( int  uid,
CmdExec2Func  fn 
)
inline

Variant 2 constructor.

Parameters
uidAssociated command's unique id.
fnVariant 2 execution function.

Definition at line 196 of file CommandLine.h.

References rnr::cmd::CmdExec::FnVar::fn2, m_exec, m_uid, m_variant, and Variant2.

197  {
198  m_uid = uid;
200  m_exec.fn2 = fn;
201  }
CmdExec2Func fn2
execution function variant 2
Definition: CommandLine.h:292
Variant m_variant
function variant enum
Definition: CommandLine.h:297
int m_uid
command unique id associated with this execution
Definition: CommandLine.h:296
FnVar m_exec
function execution variant
Definition: CommandLine.h:298
rnr::cmd::CmdExec::CmdExec ( int  uid,
CmdExec3Func  fn 
)
inline

Variant 3 constructor.

Parameters
uidAssociated command's unique id.
fnVariant 3 execution function.

Definition at line 209 of file CommandLine.h.

References rnr::cmd::CmdExec::FnVar::fn3, m_exec, m_uid, m_variant, and Variant3.

210  {
211  m_uid = uid;
213  m_exec.fn3 = fn;
214  }
Variant m_variant
function variant enum
Definition: CommandLine.h:297
int m_uid
command unique id associated with this execution
Definition: CommandLine.h:296
FnVar m_exec
function execution variant
Definition: CommandLine.h:298
CmdExec3Func fn3
execution function variant 3
Definition: CommandLine.h:293
rnr::cmd::CmdExec::CmdExec ( const CmdExec src)
inline

Copy constructor.

Parameters
srcSource object.

Definition at line 221 of file CommandLine.h.

References execute(), m_exec, m_uid, and m_variant.

222  {
223  m_uid = src.m_uid;
224  m_variant = src.m_variant;
225  m_exec = src.m_exec;
226  }
Variant m_variant
function variant enum
Definition: CommandLine.h:297
int m_uid
command unique id associated with this execution
Definition: CommandLine.h:296
FnVar m_exec
function execution variant
Definition: CommandLine.h:298

Member Function Documentation

int CmdExec::execute ( const str::StringVec argv)

Execute a comamnd with the given arguments.

Parameters
argvThe list of string arguments.
Returns
Returns a Command Error Codes on failure to find the associated command or its execution function. Otherwise, returns the user-define execution function return value.

Definition at line 268 of file CommandLine.cxx.

References rnr::cmd::ENoExec.

Referenced by CmdExec(), and rnr::cmd::CommandLine::readCommand().

269 {
270  switch( m_variant )
271  {
272  case Variant1:
273  return m_exec.fn1 != NULL? m_exec.fn1(argv): ENoExec;
274  case Variant2:
275  case Variant3:
276  default:
277  return ENoExec;
278  }
279 }
Variant m_variant
function variant enum
Definition: CommandLine.h:297
FnVar m_exec
function execution variant
Definition: CommandLine.h:298
const int ENoExec
cannot execute
Definition: CmdCore.h:105
CmdExec1Func fn1
execution function variant 1
Definition: CommandLine.h:291
int CmdExec::execute ( CommandLine cli,
const CmdExtArgVec argv 
)

Execute a comamnd with the given arguments.

Parameters
cliReference to the command-line interface.
argvThe list of extended arguments.
Returns
Returns a Command Error Codes on failure to find the associated command or its execution function. Otherwise, returns the user-define execution function return value.

Definition at line 281 of file CommandLine.cxx.

References rnr::cmd::ENoExec, rnr::io::indent(), m_exec, m_uid, m_variant, operator<<(), and rnr::cmd::CmdExec::FnVar::p.

282 {
283  switch( m_variant )
284  {
285  case Variant2:
286  return m_exec.fn2 != NULL? m_exec.fn2(argv): ENoExec;
287  case Variant3:
288  return m_exec.fn3 != NULL? m_exec.fn3(cli, argv): ENoExec;
289  case Variant1:
290  default:
291  return ENoExec;
292  }
293 }
CmdExec2Func fn2
execution function variant 2
Definition: CommandLine.h:292
Variant m_variant
function variant enum
Definition: CommandLine.h:297
FnVar m_exec
function execution variant
Definition: CommandLine.h:298
const int ENoExec
cannot execute
Definition: CmdCore.h:105
CmdExec3Func fn3
execution function variant 3
Definition: CommandLine.h:293
int rnr::cmd::CmdExec::getUid ( ) const
inline

Get associated command's unique id.

Returns
Unique id.

Definition at line 258 of file CommandLine.h.

References m_uid, and operator<<.

259  {
260  return m_uid;
261  }
int m_uid
command unique id associated with this execution
Definition: CommandLine.h:296

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const CmdExec obj 
)
friend

Insert object into output stream.

Parameters
osOutput stream.
objObject to insert.
Returns
Reference to output stream.

Referenced by rnr::cmd::DataSect::deallocator(), rnr::cmd::CommandLine::end(), and getUid().


The documentation for this struct was generated from the following files: