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

ACE_Read_Buffer Class Reference

Efficiently reads an artibrarily large buffer from an input stream up to and including a termination character. Also performs search/replace on single occurrences a character in the buffer using the principles of Integrated Layer Processing. More...

#include <Read_Buffer.h>

Collaboration diagram for ACE_Read_Buffer:

Collaboration graph
[legend]
List of all members.

Public Methods

 ACE_Read_Buffer (FILE *fp, int close_on_delete = 0, ACE_Allocator * = 0)
 Read from a FILE *.

 ACE_Read_Buffer (ACE_HANDLE handle, int close_on_delete = 0, ACE_Allocator * = 0)
 Read from an open HANDLE.

 ~ACE_Read_Buffer (void)
 Closes the FILE *.

char* read (int terminator = EOF, int search = '\n', int replace = '\0')
size_t replaced (void) const
 Returns the number of characters replaced during a <read>.

size_t size (void) const
 Returns the size of the allocated buffer obtained during a <read>, not including the null terminator.

ACE_Allocatoralloc (void) const
 Returns a pointer to its allocator.

void dump (void) const
 Dump the state of the object.


Private Methods

char* rec_read (int term, int search, int replace)
 Recursive helper method that does the work...

void operator= (const ACE_Read_Buffer &)
 ACE_Read_Buffer (const ACE_Read_Buffer &)

Private Attributes

size_t size_
 The total number of characters in the buffer.

size_t occurrences_
 The total number of characters replaced.

FILE* stream_
 The stream we are reading from.

int close_on_delete_
 Keeps track of whether we should close the FILE in the destructor.

ACE_Allocatorallocator_
 Pointer to the allocator.


Detailed Description

Efficiently reads an artibrarily large buffer from an input stream up to and including a termination character. Also performs search/replace on single occurrences a character in the buffer using the principles of Integrated Layer Processing.

This implementation is optimized to do a single dynamic allocation and make only one copy of the data. It uses recursion and the run-time stack to accomplish this efficiently.


Constructor & Destructor Documentation

ACE_Read_Buffer::ACE_Read_Buffer ( FILE * fp,
int close_on_delete = 0,
ACE_Allocator * alloc = 0 )
 

Read from a FILE *.

ACE_Read_Buffer::ACE_Read_Buffer ( ACE_HANDLE handle,
int close_on_delete = 0,
ACE_Allocator * alloc = 0 )
 

Read from an open HANDLE.

ACE_Read_Buffer::~ACE_Read_Buffer ( void )
 

Closes the FILE *.

ACE_Read_Buffer::ACE_Read_Buffer ( const ACE_Read_Buffer & ) [private]
 


Member Function Documentation

ACE_INLINE ACE_Allocator * ACE_Read_Buffer::alloc ( void ) const
 

Returns a pointer to its allocator.

void ACE_Read_Buffer::dump ( void ) const [inline]
 

Dump the state of the object.

void ACE_Read_Buffer::operator= ( const ACE_Read_Buffer & ) [private]
 

char * ACE_Read_Buffer::read ( int terminator = EOF,
int search = '\n',
int replace = '\0' )
 

Returns a pointer dynamically allocated with to data from the input stream up to (and including) the <terminator>. If <search> is >= 0 then all occurrences of the <search> value are substituted with the <replace> value. The last of the byte of data is a 0, so that <strlen> can be used on it. The caller is responsible for freeing the pointer returned from this method using the .

char * ACE_Read_Buffer::rec_read ( int term,
int search,
int replace ) [private]
 

Recursive helper method that does the work...

ACE_INLINE size_t ACE_Read_Buffer::replaced ( void ) const
 

Returns the number of characters replaced during a <read>.

ACE_INLINE size_t ACE_Read_Buffer::size ( void ) const
 

Returns the size of the allocated buffer obtained during a <read>, not including the null terminator.


Member Data Documentation

ACE_Allocator * ACE_Read_Buffer::allocator_ [private]
 

Pointer to the allocator.

int ACE_Read_Buffer::close_on_delete_ [private]
 

Keeps track of whether we should close the FILE in the destructor.

size_t ACE_Read_Buffer::occurrences_ [private]
 

The total number of characters replaced.

size_t ACE_Read_Buffer::size_ [private]
 

The total number of characters in the buffer.

FILE * ACE_Read_Buffer::stream_ [private]
 

The stream we are reading from.


The documentation for this class was generated from the following files:
Generated at Sat Dec 1 11:04:37 2001 for ACE by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000