Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

SExpressionRawBuffer Class Reference

#include <srawbuf.hpp>

Inheritance diagram for SExpressionRawBuffer:

Inheritance graph
[legend]
Collaboration diagram for SExpressionRawBuffer:

Collaboration graph
[legend]
List of all members.

Detailed Description

Raw memory buffer.

The class implements an S-expression which carries memory buffer

Definition at line 26 of file srawbuf.hpp.

Public Member Functions

 SExpressionRawBuffer (int size)
 The constructor.
virtual class SString TextRepresentation () const
 Text representation of the S-expression.
virtual SExpressionClone () const
 Clone a changeable object.
void * GetBuffer () const
 Just get the buffer's location.
int GetSize () const
 Get the size of the buffer.
void Resize (int newsize)
 Change the size of the buffer.
int Append (void *buf, int buflen)
 Append another buffer, extending the length accordingly.
const IntelibTypeIdTermType () const
 Actual S-expression type.
bool IsChangeable () const
 Can it be changed during the lifetime of the object?
virtual bool SpecificEql (const SExpression *) const
 Are the two objects EQL (while not EQ).

Static Public Attributes

static IntelibTypeId TypeId
 The type identifier.

Protected Member Functions

 ~SExpressionRawBuffer ()
bool CanDie ()
 Is it OK to delete the object now?


Constructor & Destructor Documentation

SExpressionRawBuffer::SExpressionRawBuffer int  size  ) 
 

The constructor.

Definition at line 23 of file srawbuf.cpp.

Referenced by Clone().

SExpressionRawBuffer::~SExpressionRawBuffer  )  [protected]
 

Definition at line 35 of file srawbuf.cpp.


Member Function Documentation

SString SExpressionRawBuffer::TextRepresentation  )  const [virtual]
 

Text representation of the S-expression.

Returns the text string which represents the given S-expression as for real Lisp (for example, (25 36 49))

Implements SExpression.

Definition at line 42 of file srawbuf.cpp.

SExpression * SExpressionRawBuffer::Clone  )  const [virtual]
 

Clone a changeable object.

The method should return the pointer created with new

Note:
It can (and should) return null pointer for non-changeables
Warning:
This method will hang your program being called for a looped data structure, including looped lists, a hash table which references a list in which it is a member, etc.

If you create a changeable S-expression, you MUST make sure this method duplicates your object in such a way that nothing is shared between the old and new objects, that is, changing the new object can not in any way change the old object.

Reimplemented from SExpression.

Definition at line 48 of file srawbuf.cpp.

References buf, and SExpressionRawBuffer().

void* SExpressionRawBuffer::GetBuffer  )  const
 

Just get the buffer's location.

Definition at line 47 of file srawbuf.hpp.

int SExpressionRawBuffer::GetSize  )  const
 

Get the size of the buffer.

Definition at line 49 of file srawbuf.hpp.

void SExpressionRawBuffer::Resize int  newsize  ) 
 

Change the size of the buffer.

The data is copied; if you shrink the buffer, the remaining data is lost

Definition at line 56 of file srawbuf.cpp.

Referenced by Append().

int SExpressionRawBuffer::Append void *  buf,
int  buflen
 

Append another buffer, extending the length accordingly.

Definition at line 67 of file srawbuf.cpp.

References Resize().

const IntelibTypeId& SExpression::TermType  )  const [inherited]
 

Actual S-expression type.

Definition at line 195 of file sexpress.hpp.

Referenced by SReference::DynamicCastGetPtr(), SchReference::IsEql(), LReference::IsEql(), SReference::SimpleCastGetPtr(), SchReference::TextRepresentation(), and LReference::TextRepresentation().

bool SExpression::IsChangeable  )  const [inherited]
 

Can it be changed during the lifetime of the object?

Definition at line 198 of file sexpress.hpp.

References IntelibTypeId::IsChangeable().

virtual bool SExpression::SpecificEql const SExpression  )  const [virtual, inherited]
 

Are the two objects EQL (while not EQ).

This function is overriden by those SExpressions able to be EQL while being not EQ.

Warning:
It is not demanded that this function return true if it's arguments are the same SExpression (that is, they're EQ). It is only called by the EQL predicate implementation when it has been checked that the operands are not the same object.

Reimplemented in SExpressionInt, SExpressionFloat, SExpressionChar, and SExpressionString.

Definition at line 235 of file sexpress.hpp.

Referenced by SchReference::IsEql(), and LReference::IsEql().

bool GarbageSafe::CanDie  )  [protected, inherited]
 

Is it OK to delete the object now?

Our children have no access to the private attribute RefCount and should never need it except when checking if the destruction is not an error. This solves the problem.

Definition at line 53 of file refcount.hpp.


Member Data Documentation

IntelibTypeId SExpressionRawBuffer::TypeId [static]
 

The type identifier.

Reimplemented from SExpression.


The documentation for this class was generated from the following files:
Generated on Tue Dec 18 00:41:27 2007 for InteLib by  doxygen 1.4.1