Index   Main   Namespaces   Classes   Hierarchy   Annotated   Files   Compound   Global   Pages  

GtpCommand Class Reference

#include <GtpEngine.h>

List of all members.


Detailed Description

GTP command.

GtpCommands are passed to command handlers. They can be queried for arguments and used for writing the response to.

Arguments can contain spaces if they are double quoted, for instance:

loadsgf "My File.sgf" 
Double quotes in a quoted argument have to be escaped with '\'.

The response message format does not have any special requirement, it will be sanitized by GtpEngine before writing to form a valid GTP response (see GtpEngine::MainLoop).

Definition at line 168 of file GtpEngine.h.

Public Member Functions

 GtpCommand ()
 Construct empty command.
 GtpCommand (const std::string &line)
 Construct with a command line.
 operator std::ostream & ()
 Conversion to output stream.
const std::string & Arg (std::size_t number) const
 Get argument.
const std::string & Arg () const
 Get single argument.
std::string ArgToLower (std::size_t number) const
 Get argument converted to lowercase.
bool BoolArg (std::size_t number) const
 Get integer argument converted boolean.
void CheckArgNone () const
 Check that command has no arguments.
void CheckNuArg (std::size_t number) const
 Check number of arguments.
void CheckNuArgLessEqual (std::size_t number) const
 Check maximum number of arguments.
double FloatArg (std::size_t number) const
 Get argument converted to double.
std::string ID () const
 Get command ID.
void Init (const std::string &line)
 Initialize with a command line.
int IntArg (std::size_t number) const
 Get argument converted to integer.
int IntArg (std::size_t number, int min) const
 Get argument converted to integer in a range with lower limit.
int IntArg (std::size_t number, int min, int max) const
 Get argument converted to integer in a range with lower and upper limit.
std::string ArgLine () const
 Get argument line.
const std::string & Line () const
 Get command line.
const std::string & Name () const
 Get argument name.
std::size_t NuArg () const
 Get number of arguments.
std::string RemainingLine (std::size_t number) const
 Return remaining line after argument.
std::string Response () const
 Get response.
std::ostringstream & ResponseStream ()
 Get internal response string stream.
void SetResponse (const std::string &response)
 Set response.
void SetResponseBool (bool value)
 Set response to "true" or "false".
std::size_t SizeTypeArg (std::size_t number) const
 Get argument converted to std::size_t.
std::size_t SizeTypeArg (std::size_t number, std::size_t min) const
 Get argument converted to std::size_t with lower limit.

Private Member Functions

void ParseCommandId ()
void SplitLine (const std::string &line)
 Split line into arguments.

Private Attributes

std::string m_id
 ID of command or empty string, if command has no ID.
std::string m_line
 Full command line.
std::ostringstream m_response
 Response stream.
std::vector< Argumentm_arguments
 Arguments of command.

Static Private Attributes

static std::ostringstream s_dummy
 Dummy stream for copying default formatting settings.

Related Functions

(Note that these are not member functions.)

template<typename TYPE>
GtpCommandoperator<< (GtpCommand &cmd, const TYPE &type)
template<typename TYPE>
GtpCommandoperator<< (GtpCommand &cmd, TYPE &type)

Classes

struct  Argument
 Argument in command line. More...


Constructor & Destructor Documentation

GtpCommand (  ) 

Construct empty command.

Warning:
An empty command cannot be used, before Init() was called. This constructor exists only to reuse instances.

Definition at line 390 of file GtpEngine.h.

GtpCommand ( const std::string &  line  ) 

Construct with a command line.

See also:
Init()

Definition at line 394 of file GtpEngine.h.

References Init().


Member Function Documentation

const string & Arg (  )  const

Get single argument.

Returns:
Argument value
Exceptions:
GtpFailure If no such argument or command has more than one arguments

Definition at line 437 of file GtpEngine.cpp.

References CheckNuArg().

Referenced by ArgToLower(), BoolArg(), FloatArg(), IntArg(), and SizeTypeArg().

const string & Arg ( std::size_t  number  )  const

Get argument.

Parameters:
number Argument index starting with 0
Returns:
Argument value
Exceptions:
GtpFailure If no such argument

Definition at line 429 of file GtpEngine.cpp.

References m_arguments, and NuArg().

Referenced by GtpEngine::CmdKnownCommand().

std::string ArgLine (  )  const

Get argument line.

Get all arguments as a line. No modfications to the line were made apart from trimmimg leading and trailing white spaces.

Definition at line 443 of file GtpEngine.cpp.

References m_arguments, m_line, and Trim().

string ArgToLower ( std::size_t  number  )  const

Get argument converted to lowercase.

Parameters:
number Argument index starting with 0
Returns:
Copy of argument value converted to lowercase
Exceptions:
GtpFailure If no such argument

Definition at line 450 of file GtpEngine.cpp.

References Arg().

bool BoolArg ( std::size_t  number  )  const

Get integer argument converted boolean.

Parameters:
number Argument index starting with 0
Returns:
false, if argument is 0, true, if 1
Exceptions:
GtpFailure If no such argument, or argument has other value

Definition at line 458 of file GtpEngine.cpp.

References Arg().

void CheckArgNone (  )  const

Check that command has no arguments.

Exceptions:
GtpFailure If command has arguments

Definition at line 404 of file GtpEngine.h.

References CheckNuArg().

Referenced by GtpEngine::CmdListCommands(), GtpEngine::CmdName(), GtpEngine::CmdProtocolVersion(), GtpEngine::CmdQuit(), and GtpEngine::CmdVersion().

void CheckNuArg ( std::size_t  number  )  const

Check number of arguments.

Parameters:
number Expected number of arguments
Exceptions:
GtpFailure If command has a different number of arguments

Definition at line 468 of file GtpEngine.cpp.

References NuArg().

Referenced by Arg(), CheckArgNone(), and GtpEngine::CmdKnownCommand().

void CheckNuArgLessEqual ( std::size_t  number  )  const

Check maximum number of arguments.

Parameters:
number Expected maximum number of arguments
Exceptions:
GtpFailure If command has more arguments

Definition at line 480 of file GtpEngine.cpp.

References NuArg().

double FloatArg ( std::size_t  number  )  const

Get argument converted to double.

Parameters:
number Argument index starting with 0
Returns:
Argument value
Exceptions:
GtpFailure If no such argument, or argument is not a double

Definition at line 490 of file GtpEngine.cpp.

References Arg().

std::string ID (  )  const

Get command ID.

Returns:
ID or empty string, if command has no ID

Definition at line 409 of file GtpEngine.h.

References m_id.

Referenced by GtpEngine::HandleCommand().

void Init ( const std::string &  line  ) 

Initialize with a command line.

The line should be not empty, not contain only whitespaces and not be a comment line. It will be split into the optional numeric command ID, the command name, and arguments.

Definition at line 533 of file GtpEngine.cpp.

References m_arguments, m_line, m_response, ParseCommandId(), s_dummy, SplitLine(), and Trim().

Referenced by GtpEngine::ExecuteCommand(), GtpEngine::ExecuteFile(), and GtpCommand().

int IntArg ( std::size_t  number,
int  min,
int  max 
) const

Get argument converted to integer in a range with lower and upper limit.

Parameters:
number Argument index starting with 0
min Minimum allowed value
max Maximum allowed value
Returns:
Argument value
Exceptions:
GtpFailure If no such argument, argument is not an integer, or not in range

Definition at line 521 of file GtpEngine.cpp.

References IntArg().

int IntArg ( std::size_t  number,
int  min 
) const

Get argument converted to integer in a range with lower limit.

Parameters:
number Argument index starting with 0
min Minimum allowed value
Returns:
Argument value
Exceptions:
GtpFailure If no such argument, argument is not an integer, or not in range

Definition at line 512 of file GtpEngine.cpp.

References IntArg().

int IntArg ( std::size_t  number  )  const

Get argument converted to integer.

Parameters:
number Argument index starting with 0
Returns:
Argument value
Exceptions:
GtpFailure If no such argument, or argument is not an integer

Definition at line 501 of file GtpEngine.cpp.

References Arg().

Referenced by IntArg().

const std::string & Line (  )  const

Get command line.

Returns full command line as given to the constructor or GtpCommand::Init. No modfications to the line were made apart from trimmimg leading and trailing white spaces.

Definition at line 414 of file GtpEngine.h.

References m_line.

Referenced by GtpEngine::ExecuteCommand(), and GtpEngine::ExecuteFile().

const std::string & Name (  )  const

Get argument name.

Definition at line 419 of file GtpEngine.h.

References m_arguments.

Referenced by GtpEngine::HandleCommand().

std::size_t NuArg (  )  const

Get number of arguments.

Definition at line 424 of file GtpEngine.h.

References m_arguments.

Referenced by Arg(), CheckNuArg(), CheckNuArgLessEqual(), and RemainingLine().

operator std::ostream & (  ) 

Conversion to output stream.

Returns reference to response stream.

Definition at line 399 of file GtpEngine.h.

References ResponseStream().

void ParseCommandId (  )  [private]

Definition at line 545 of file GtpEngine.cpp.

References m_arguments, and m_id.

Referenced by Init().

string RemainingLine ( std::size_t  number  )  const

Return remaining line after argument.

Parameters:
number Argument index starting with 0
Returns:
The remaining line after the given argument, unmodified apart from leading and trailing whitespaces, which are trimmed. Quotation marks are not handled.
Exceptions:
GtpFailure If no such argument

Definition at line 560 of file GtpEngine.cpp.

References m_arguments, m_line, NuArg(), and Trim().

std::string Response (  )  const

Get response.

Returns:
A copy of the internal response string stream

Definition at line 429 of file GtpEngine.h.

References m_response.

Referenced by GtpEngine::ExecuteCommand(), and GtpEngine::HandleCommand().

std::ostringstream & ResponseStream (  ) 

Get internal response string stream.

Definition at line 434 of file GtpEngine.h.

References m_response.

Referenced by operator std::ostream &(), and operator<<().

void SetResponse ( const std::string &  response  ) 

Set response.

Definition at line 570 of file GtpEngine.cpp.

References m_response.

void SetResponseBool ( bool  value  ) 

Set response to "true" or "false".

Definition at line 575 of file GtpEngine.cpp.

References m_response.

Referenced by GtpEngine::CmdKnownCommand().

std::size_t SizeTypeArg ( std::size_t  number,
std::size_t  min 
) const

Get argument converted to std::size_t with lower limit.

Parameters:
number Argument index starting with 0
min Minimum allowed value
Returns:
Argument value
Exceptions:
GtpFailure If no such argument, or argument is not a size_t

Definition at line 600 of file GtpEngine.cpp.

References SizeTypeArg().

std::size_t SizeTypeArg ( std::size_t  number  )  const

Get argument converted to std::size_t.

Parameters:
number Argument index starting with 0
Returns:
Argument value
Exceptions:
GtpFailure If no such argument, or argument is not a size_t

Definition at line 580 of file GtpEngine.cpp.

References Arg().

Referenced by SizeTypeArg().

void SplitLine ( const std::string &  line  )  [private]

Split line into arguments.

Arguments are words separated by whitespaces. Arguments with whitespaces can be quoted with quotation marks ('"'). Characters can be escaped with a backslash ('\').

Parameters:
line The line to split.

Definition at line 615 of file GtpEngine.cpp.

References m_arguments.

Referenced by Init().


Friends And Related Function Documentation

GtpCommand & operator<< ( GtpCommand cmd,
TYPE &  type 
) [related]

Definition at line 384 of file GtpEngine.h.

References ResponseStream().

GtpCommand & operator<< ( GtpCommand cmd,
const TYPE &  type 
) [related]

Definition at line 376 of file GtpEngine.h.

References ResponseStream().


Member Data Documentation

std::vector<Argument> m_arguments [private]

Arguments of command.

Definition at line 367 of file GtpEngine.h.

Referenced by Arg(), ArgLine(), Init(), Name(), NuArg(), ParseCommandId(), RemainingLine(), and SplitLine().

std::string m_id [private]

ID of command or empty string, if command has no ID.

Definition at line 358 of file GtpEngine.h.

Referenced by ID(), and ParseCommandId().

std::string m_line [private]

Full command line.

Definition at line 361 of file GtpEngine.h.

Referenced by ArgLine(), Init(), Line(), and RemainingLine().

std::ostringstream m_response [private]

Response stream.

Definition at line 364 of file GtpEngine.h.

Referenced by Init(), Response(), ResponseStream(), SetResponse(), and SetResponseBool().

ostringstream s_dummy [static, private]

Dummy stream for copying default formatting settings.

Definition at line 355 of file GtpEngine.h.

Referenced by Init().


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


17 Jun 2010 Doxygen 1.4.7