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:

[legend]
List of all members.

## Public Methods
| ACE_Read_Buffer (FILE *fp, int close_on_delete=0, ACE_Allocator *=0)
| Read from a FILE *. More...
| ACE_Read_Buffer (ACE_HANDLE handle, int close_on_delete=0, ACE_Allocator *=0)
| Read from an open HANDLE. More...
| ~ACE_Read_Buffer (void)
| Closes the FILE *. More...
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>. More...
size_t | size (void) const
| Returns the size of the allocated buffer obtained during a <read>, not including the null terminator. More...
ACE_Allocator * | alloc (void) const
| Returns a pointer to its allocator. More...
void | dump (void) const
| Dump the state of the object. More...
## Private Methods
char * | rec_read (int term, int search, int replace)
| Recursive helper method that does the work... More...
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. More...
size_t | occurrences_
| The total number of characters replaced. More...
FILE * | stream_
| The stream we are reading from. More...
int | close_on_delete_
| Keeps track of whether we should close the FILE in the destructor. More...
ACE_Allocator * | allocator_
| Pointer to the allocator. More...

## 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

| Dump the state of the object.

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

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

| Returns a pointer dynamically allocated with <ACE_Allocator::malloc> 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 <ACE_Allocator::free>.

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:

- Read_Buffer.h
- Read_Buffer.cpp
- Read_Buffer.i