Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

AMOS::Message_t Class Reference

A generic AMOS message object for reading and writing data. More...

#include <Message_AMOS.hh>

List of all members.

Public Methods

 Message_t ()
 Constructs an empty Message_t.

 ~Message_t ()
 Destroys a Message_t object.

void clear ()
 Clears the message.

bool exists (NCode_t fcode) const
 Checks for the existence of a field by NCode.

bool exists (const std::string &fname) const
 Checks for the existence of a field by name.

const std::string & getField (NCode_t fcode) const
 Gets field data by field NCode.

const std::string & getField (const std::string &fname) const
 Gets field data by field name.

const std::vector< Message_t > & getSubMessages () const
 Get a the vector of submessages for this message.

std::vector< Message_t > & getSubMessages ()
 Get a the vector of submessages for this message.

NCode_t getMessageCode () const
 Get the NCode type of this message.

bool read (std::istream &in)
 Read a message from an input stream.

void removeField (NCode_t fcode)
 Removes a field from the message object by NCode.

void removeField (const std::string &fname)
 Removes a field from the message object.

void setSubMessages (const std::vector< Message_t > &subs)
 Set the vector of submessages for this message.

void setField (NCode_t fcode, const std::string &data)
 Set field data by field NCode.

void setField (const std::string &fname, const std::string &data)
 Set field data by field name.

void setMessageCode (NCode_t mcode)
 Set the NCode type code of this message.

void setMessageCode (const std::string &mname)
 Set the NCode type name of this message.

void write (std::ostream &out) const
 Write the message object to an output stream.


Static Public Methods

NCode_t skip (std::istream &in)
 Skips a message in an input stream, returning its NCode.


Detailed Description

A generic AMOS message object for reading and writing data.

Based on the Celera 3-code format, the AMOS 'NCode' messages are designed for easy parsing and compatibility with the other AMOS modules. This generic message class makes no assumptions about the type of data to be stored within, so it can be used for reading and writing ANY type of ASCII record in NCode format. The main duty of this class is to understand and validate incoming or outgoing NCode format.


Constructor & Destructor Documentation

AMOS::Message_t::Message_t   [inline]
 

Constructs an empty Message_t.

AMOS::Message_t::~Message_t   [inline]
 

Destroys a Message_t object.


Member Function Documentation

void AMOS::Message_t::clear   [inline]
 

Clears the message.

Returns:
void

bool AMOS::Message_t::exists const std::string &    fname const [inline]
 

Checks for the existence of a field by name.

Parameters:
fname Check for a field with this name
Returns:
true if exists, false if otherwise

bool AMOS::Message_t::exists NCode_t    fcode const [inline]
 

Checks for the existence of a field by NCode.

Parameters:
fcode Check for a field with this NCode
Returns:
true if exists, false if otherwise

const std::string& AMOS::Message_t::getField const std::string &    fname const [inline]
 

Gets field data by field name.

Will return the field data, or throws an exception if the field does not exist. You can check if the field exists first with the exists method.

Parameters:
fname Get field data with this field name
Precondition:
The field name exists in the current message
Exceptions:
ArgumentException_t 
Returns:
The field data for fname

const std::string& AMOS::Message_t::getField NCode_t    fcode const [inline]
 

Gets field data by field NCode.

Will return the field data, or throws an exception if the field does not exist. You can check if the field exists first with the exists method.

Parameters:
fcode Get field data with this field NCode
Precondition:
The field code exists in the current message
Exceptions:
ArgumentException_t 
Returns:
The field data for fcode

NCode_t AMOS::Message_t::getMessageCode   const [inline]
 

Get the NCode type of this message.

Will return M_NULL if the message has not been assigned a type name yet. NCode can be decoded to a string with the 'AMOS::Decode' function.

Returns:
The NCode type of this message

std::vector<Message_t>& AMOS::Message_t::getSubMessages   [inline]
 

Get a the vector of submessages for this message.

Returns:
The vector of submessages for this message

const std::vector<Message_t>& AMOS::Message_t::getSubMessages   const [inline]
 

Get a the vector of submessages for this message.

Returns:
The vector of submessages for this message

bool Message_t::read std::istream &    in
 

Read a message from an input stream.

Reads a message from an input stream and populates the message fields with the values read from the stream. Will throw an exception if a message is found, but is not properly formatted.

Parameters:
in The input stream to read from
Precondition:
The incoming message is properly formatted
Exceptions:
IOException_t 
Returns:
true if a message was read, false if no message read (EOF)

void AMOS::Message_t::removeField const std::string &    fname [inline]
 

Removes a field from the message object.

Removes a field from the message. Has no effect if the field name does not exist or is improperly formatted.

Parameters:
fname The field name to remove
Returns:
void

void AMOS::Message_t::removeField NCode_t    fcode [inline]
 

Removes a field from the message object by NCode.

Removes a field from the message by its NCode. Has no effect if the field code does not exist.

Parameters:
fcode The field NCode to remove
Returns:
void

void AMOS::Message_t::setField const std::string &    fname,
const std::string &    data
[inline]
 

Set field data by field name.

Will set a new, or overwrite and existing field with the supplied data. Throws an exception for an improperly formatted 3-code field name or an improperly formated data record (i.e. a multi-line record that does not end in a newline).

Parameters:
fname The field name
data The new field data
Precondition:
The field name is 3 chars

The data field ends in '
' if it is multiple lines

Exceptions:
ArugmentException_t 
Returns:
void

void Message_t::setField NCode_t    fcode,
const std::string &    data
 

Set field data by field NCode.

Will set a new, or overwrite and existing field with the supplied data. Throws an exception for an improperly formatted data record (i.e. a multi-line record that does not end in a newline). If the data string is empty, the field will be ignored and will remain uninitialized.

Parameters:
fcode The field NCode
data The new field data
Precondition:
The data field ends in '
' if it is multiple lines
Exceptions:
ArugmentException_t 
Returns:
void

void AMOS::Message_t::setMessageCode const std::string &    mname [inline]
 

Set the NCode type name of this message.

Will throw an exception if the name is improperly formatted.

Parameters:
mname The new NCode type name of this message
Precondition:
The type name is 3 chars
Exceptions:
ArgumentException_t 
Returns:
void

void AMOS::Message_t::setMessageCode NCode_t    mcode [inline]
 

Set the NCode type code of this message.

Parameters:
mcode The new NCode type of this message
Returns:
void

void AMOS::Message_t::setSubMessages const std::vector< Message_t > &    subs [inline]
 

Set the vector of submessages for this message.

Parameters:
subs The new vector of submessages
Returns:
void

NCode_t Message_t::skip std::istream &    in [static]
 

Skips a message in an input stream, returning its NCode.

Skips a message in an input stream, returning its NCode. Will throw an exception if a message is found, but its message code or nesting is not properly formatted. This validation is not entirely sound, and message errors may slip through unnoticed.

Parameters:
in The input stream to read from
Precondition:
The incoming message code and nesting are properly formatted
Postcondition:
Information already stored in the message object will not be changed
Exceptions:
IOException_t 
Returns:
NCode of the skipped message, or NULL_NCODE if no message found

void Message_t::write std::ostream &    out const
 

Write the message object to an output stream.

Writes the NCode ASCII representation of this object to the supplied output stream. Will throw an exception if there was an error trying to write to the stream.

Parameters:
out The output stream to write to
Precondition:
The ostream is open and writable
Exceptions:
IOException_t 
Returns:
void


The documentation for this class was generated from the following files:
Generated on Mon Apr 26 14:42:21 2004 for AMOS by doxygen1.3-rc2