MrSID Decode SDK for LiDAR Reference Manual 1.1.4.4709

- Main Page
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Classes | Public Types | Public Member Functions | List of all members
IO Class Referenceabstract

IO is the base class for binary input and output. More...

`#include <IO.h>`

Inheritance diagram for IO:
[legend]
Collaboration diagram for IO:
[legend]

## Classes
struct | Location
| Location is a helper structure for holding the location of data in a IO object. More...

## Public Types
typedef lt_int64 | offset_type
| Integer data type for file offsets and sizes. More...

## Public Member Functions
virtual void | open (void)=0
| Open the IO object. More...
virtual void | close (void)=0
| Close the IO object. More...
virtual size_t | pread (offset_type offset, void *buffer, size_t nbytes) const =0
| Read data. More...
virtual size_t | pwrite (offset_type offset, const void *buffer, size_t nbytes) const =0
| Write data. More...
virtual offset_type | size (void) const =0
| Get the size of the resource. More...
virtual void | truncate (offset_type length)=0
| Set the size of the resource. More...
virtual void | unlink (void)=0
| Delete the resource when the IO object is deleted. More...
Public Member Functions inherited from Object
int | retain (void) const
| Increment the reference count by one. More...
int | release (void) const
| Decrement the reference count by one. More...

## Additional Inherited Members
Protected Member Functions inherited from Object
| Object (void)
virtual | ~Object (void)

## Detailed Description

The IO class was designed to thread safe for reading and writing. The reading and writing functions do not have a internal file position, the offset is passed into pread() and pwrite(). This is based off the POSIX pread() and pwrite() interfaces. Unlike the libc's FILE structure the buffering is not part of the IO object. Buffering is handled by the StreamReader and the StreamWriter classes.

Definition at line 29 of file IO.h.

## Member Typedef Documentation

typedef lt_int64 IO::offset_type

Definition at line 36 of file IO.h.

## Member Function Documentation

virtual void IO::close | ( | void | ) |  |
| pure virtual

This method closes the IO object. open() and close() are reference counted so you must call close() the some number of times as open().

When subclassing IO, open() and close() must implement the reference counting and be thread safe because they can be called from multiple threads. close() should look something like the following:

void close(void)
{
MutexMonitor mon(m_openLock);
m_openCount -= 1;
if (m_openCount == 0)
{
// close the resource
}
}

virtual void IO::open | ( | void | ) |  |
| pure virtual

This method opens the IO object. open() and close() are reference counted so you must call close() the some number of times as open().

When subclassing IO, open() and close() must implement the reference counting and be thread safe because they can be called from multiple threads. open() should look something like the following:

void open(void)
{
MutexMonitor mon(m_openLock);
if (m_openCount == 0)
{
// open the resource
}
m_openCount += 1;
}

virtual size_t IO::pread | ( | offset_type | offset,
|  | void * | buffer,
|  | size_t | nbytes
| ) |  | const
| pure virtual

This method tries to read nbytes bytes at the given offset.

Parameters

  offset | the file offset to read from
  buffer | the destination memory location
  nbytes | the number of bytes to read

Returns
  the number of bytes read

virtual size_t IO::pwrite | ( | offset_type | offset,
|  | const void * | buffer,
|  | size_t | nbytes
| ) |  | const
| pure virtual

This method tries to write nbytes bytes at the given offset.

Parameters

  offset | the file offset to write to
  buffer | the source memory location
  nbytes | the number of bytes to write

Returns
  the number of bytes written

virtual offset_type IO::size | ( | void | ) |  | const
| pure virtual

This method returns the size of the resource.

virtual void IO::truncate | ( | offset_type | length) |  |
| pure virtual

This method sets the size of the resource. If the new size is smaller the data is lost. If the new size is larger the resource padded with zeros.

Note
  The object must be open.

virtual void IO::unlink | ( | void | ) |  |
| pure virtual

This method marks the resource for deletion when the object goes away.

Implemented in FileIO.

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

- IO.h

LizardTech