CL_File Class Reference
[clanCore I/O Data]

File I/O device. More...

#include <file.h>

Inheritance diagram for CL_File:
Inheritance graph
[legend]

List of all members.

Public Types

Enumerations

enum  AccessFlags { access_read = 1, access_write = 2, access_read_write = access_read | access_write }
 

Access flags.

More...
enum  ShareFlags { share_read = 1, share_write = 2, share_delete = 4, share_all = share_read + share_write + share_delete }
 

File sharing flags.

More...
enum  OpenMode {
  open_always, open_existing, open_existing_truncate, create_always,
  create_new
}
 

File opening modes.

More...
enum  Flags { flag_write_through = 1, flag_no_buffering = 2, flag_random_access = 4, flag_sequential_scan = 8 }
 

Optimization Flags.

More...
Enumerations

enum  SeekMode { seek_set, seek_cur, seek_end }
 

Seeking modes.

More...

Public Member Functions

Construction

 CL_File ()
 Constructs a file object.
 CL_File (const CL_String &filename)
 Constructs a file object read only.
 CL_File (const CL_String &filename, OpenMode mode, unsigned int access, unsigned int share=share_all, unsigned int flags=0)
 Constructs a file object.
 CL_File (const CL_String &filename, OpenMode mode, const CL_SecurityDescriptor &permissions, unsigned int access, unsigned int share=share_all, unsigned int flags=0)
 Constructs a file object.
 ~CL_File ()
Attributes

CL_SecurityDescriptor get_permissions () const
 Returns the file permissions.
Operations

bool open (const CL_String &filename)
 Opens a file read only.
bool open (const CL_String &filename, OpenMode mode, unsigned int access, unsigned int share=share_all, unsigned int flags=0)
 Opens a file.
bool open (const CL_String &filename, OpenMode mode, const CL_SecurityDescriptor &permissions, unsigned int access, unsigned int share=share_all, unsigned int flags=0)
 Opens a file.
void close ()
 Close file.
bool set_permissions (const CL_SecurityDescriptor &permissions)
 Change file permissions.
Attributes

bool is_null () const
 Returns true if this object is invalid.
void throw_if_null () const
 Throw an exception if this object is invalid.
int get_size () const
 Returns the size of data stream.
int get_position () const
 Returns the position in the data stream.
bool is_little_endian () const
 Returns true if the input source is in little endian mode.
const CL_IODeviceProviderget_provider () const
 Returns the provider for this object.
CL_IODeviceProviderget_provider ()
 Returns the provider for this object.
Operations

int send (const void *data, int len, bool send_all=true)
 Send data to device.
int receive (void *data, int len, bool receive_all=true)
 Receive data from device.
int peek (void *data, int len)
 Peek data from device (data is left in the buffer).
bool seek (int position, SeekMode mode=seek_set)
 Seek in data stream.
int read (void *data, int len, bool receive_all=true)
 Alias for receive(data, len, receive_all).
int write (const void *data, int len, bool send_all=true)
 Alias for send(data, len, send_all).
void set_system_mode ()
 Changes input data endianess to the local systems mode.
void set_big_endian_mode ()
 Changes input data endianess to big endian mode. (Default is little endian).
void set_little_endian_mode ()
 Changes input data endianess to little endian mode. This is the default setting.
void write_int64 (cl_byte64 data)
 Writes a signed 64 bit integer to output source.
void write_uint64 (cl_ubyte64 data)
 Writes an unsigned 64 bit integer to output source.
void write_int32 (cl_byte32 data)
 Writes a signed 32 bit integer to output source.
void write_uint32 (cl_ubyte32 data)
 Writes an unsigned 32 bit integer to output source.
void write_int16 (cl_byte16 data)
 Writes a signed 16 bit integer to output source.
void write_uint16 (cl_ubyte16 data)
 Writes an unsigned 16 bit integer to output source.
void write_int8 (cl_byte8 data)
 Writes a signed 8 bit integer to output source.
void write_uint8 (cl_ubyte8 data)
 Writes an unsigned 8 bit integer to output source.
void write_float (float data)
 Writes a float to output source.
void write_string_a (const CL_StringRef8 &str)
 Writes a string to the output source.
void write_string_nul (const CL_StringRef8 &str)
 Writes a nul terminated string to the output source.
void write_string_text (const CL_StringRef8 &str)
 Writes a text string to the output source.
cl_byte64 read_int64 ()
 Reads a signed 64 bit integer from input source.
cl_ubyte64 read_uint64 ()
 Reads an unsigned 64 bit integer from input source.
cl_byte32 read_int32 ()
 Reads a signed 32 bit integer from input source.
cl_ubyte32 read_uint32 ()
 Reads an unsigned 32 bit integer from input source.
cl_byte16 read_int16 ()
 Reads a signed 16 bit integer from input source.
cl_ubyte16 read_uint16 ()
 Reads an unsigned 16 bit integer from input source.
cl_byte8 read_int8 ()
 Reads a signed 8 bit integer from input source.
cl_ubyte8 read_uint8 ()
 Reads an unsigned 8 bit integer from input source.
float read_float ()
 Reads a float from input source.
CL_String8 read_string_a ()
 Reads a string from the input source.
CL_String8 read_string_nul ()
 Reads a nul terminated string from the input source.
CL_String8 read_string_text (const char *skip_initial_chars, const char *read_until_chars, bool allow_eof=true)
 Reads a string from the input source where the source is a text file.
CL_IODevice duplicate ()
 Create a new CL_IODevice referencing the same resource.

Static Public Member Functions

Static helper functions

static CL_String read_text (const CL_String &filename)
 Loads an UTF-8 text file into a string.
static CL_DataBuffer read_bytes (const CL_String &filename)
 Loads an file into a byte buffer.

Protected Attributes

Implementation

CL_SharedPtr< CL_IODevice_Impl > impl

Detailed Description

File I/O device.


Member Enumeration Documentation

Access flags.

File access types available.

Enumerator:
access_read 

Generic read access.

access_write 

Generic write access.

access_read_write 

Generic read write access.

Optimization Flags.

Enumerator:
flag_write_through 
flag_no_buffering 
flag_random_access 
flag_sequential_scan 

File opening modes.

Enumerator:
open_always 

Open file or create it if it does not exist.

open_existing 

Open existing file. Fails if it does not exist.

open_existing_truncate 

Open existing file and truncate it.

create_always 

Create file, even if it already exists.

create_new 

Create a new file. Fails if it already exists.

enum CL_IODevice::SeekMode [inherited]

Seeking modes.

Enumerator:
seek_set 

Set to a specific value from the start.

seek_cur 

Set relative to the current position.

seek_end 

Set to a specific value from the end (use negative position).

File sharing flags.

Enumerator:
share_read 

Allow others to open the file for reading.

share_write 

Allow others to open the file for writing.

share_delete 

Allow others to delete the file.

share_all 

All other sharing flags combined.


Constructor & Destructor Documentation

CL_File::CL_File (  ) 

Constructs a file object.

CL_File::CL_File ( const CL_String filename  ) 

Constructs a file object read only.

CL_PathHelp::normalize(filename, CL_PathHelp::path_type_file) is called

CL_File::CL_File ( const CL_String filename,
OpenMode  mode,
unsigned int  access,
unsigned int  share = share_all,
unsigned int  flags = 0 
)

Constructs a file object.

CL_PathHelp::normalize(filename, CL_PathHelp::path_type_file) is called

CL_File::CL_File ( const CL_String filename,
OpenMode  mode,
const CL_SecurityDescriptor permissions,
unsigned int  access,
unsigned int  share = share_all,
unsigned int  flags = 0 
)

Constructs a file object.

CL_PathHelp::normalize(filename, CL_PathHelp::path_type_file) is called

CL_File::~CL_File (  ) 

Member Function Documentation

void CL_File::close (  ) 

Close file.

CL_IODevice CL_IODevice::duplicate (  )  [inherited]

Create a new CL_IODevice referencing the same resource.

CL_SecurityDescriptor CL_File::get_permissions (  )  const

Returns the file permissions.

int CL_IODevice::get_position (  )  const [inherited]

Returns the position in the data stream.

Returns -1 if the position is unknown.

Returns:
The size (-1 if position is unknown)
const CL_IODeviceProvider* CL_IODevice::get_provider (  )  const [inherited]

Returns the provider for this object.

CL_IODeviceProvider* CL_IODevice::get_provider (  )  [inherited]

Returns the provider for this object.

int CL_IODevice::get_size (  )  const [inherited]

Returns the size of data stream.

Returns -1 if the size is unknown.

Returns:
The size (-1 if size is unknown)
bool CL_IODevice::is_little_endian (  )  const [inherited]

Returns true if the input source is in little endian mode.

Returns:
true if little endian
bool CL_IODevice::is_null (  )  const [inline, inherited]

Returns true if this object is invalid.

Reimplemented in CL_HTTPServerConnection.

bool CL_File::open ( const CL_String filename  ) 

Opens a file read only.

CL_PathHelp::normalize(filename, CL_PathHelp::path_type_file) is called

bool CL_File::open ( const CL_String filename,
OpenMode  mode,
unsigned int  access,
unsigned int  share = share_all,
unsigned int  flags = 0 
)

Opens a file.

CL_PathHelp::normalize(filename, CL_PathHelp::path_type_file) is called

bool CL_File::open ( const CL_String filename,
OpenMode  mode,
const CL_SecurityDescriptor permissions,
unsigned int  access,
unsigned int  share = share_all,
unsigned int  flags = 0 
)

Opens a file.

CL_PathHelp::normalize(filename, CL_PathHelp::path_type_file) is called

int CL_IODevice::peek ( void *  data,
int  len 
) [inherited]

Peek data from device (data is left in the buffer).

Parameters:
data Data to receive
len Maximum length of data to receive
Returns:
size of data received.
int CL_IODevice::read ( void *  data,
int  len,
bool  receive_all = true 
) [inherited]

Alias for receive(data, len, receive_all).

Parameters:
data Data to receive
len Length to receive
receive_all true to receive all the data. false = receive part of the data, if it would block
Returns:
size of data received
static CL_DataBuffer CL_File::read_bytes ( const CL_String filename  )  [static]

Loads an file into a byte buffer.

float CL_IODevice::read_float (  )  [inherited]

Reads a float from input source.

Warning, this is not portable

Returns:
The float read.
cl_byte16 CL_IODevice::read_int16 (  )  [inherited]

Reads a signed 16 bit integer from input source.

Returns:
The integer read.
cl_byte32 CL_IODevice::read_int32 (  )  [inherited]

Reads a signed 32 bit integer from input source.

Returns:
The integer read.
cl_byte64 CL_IODevice::read_int64 (  )  [inherited]

Reads a signed 64 bit integer from input source.

Returns:
The integer read.
cl_byte8 CL_IODevice::read_int8 (  )  [inherited]

Reads a signed 8 bit integer from input source.

Returns:
The integer read.
CL_String8 CL_IODevice::read_string_a (  )  [inherited]

Reads a string from the input source.

The binary format expected in the input source is first an uint32 telling the length of the string, and then the string itself.

Returns:
The string read.
CL_String8 CL_IODevice::read_string_nul (  )  [inherited]

Reads a nul terminated string from the input source.

The binary format expected in the input source is a nul terminated string. (The NUL termintor is read, so that the file position is set after the NUL)

Returns:
The string read.
CL_String8 CL_IODevice::read_string_text ( const char *  skip_initial_chars,
const char *  read_until_chars,
bool  allow_eof = true 
) [inherited]

Reads a string from the input source where the source is a text file.

After reading the input source up to "read_until_chars", the file position is set to the first character that was not read. If the file contains NUL characters, then the input is read up to the NUL character, and the file position is set AFTER the NUL)

Parameters:
skip_initial_chars Ignore any of these characters at the start of the string. NULL = Do not ignore any characters
read_until_chars Read from the input until any of these characters are found. NULL = Read until the end of the file
allow_eof Allow EOF
Returns:
The string read.
static CL_String CL_File::read_text ( const CL_String filename  )  [static]

Loads an UTF-8 text file into a string.

cl_ubyte16 CL_IODevice::read_uint16 (  )  [inherited]

Reads an unsigned 16 bit integer from input source.

Returns:
The integer read.
cl_ubyte32 CL_IODevice::read_uint32 (  )  [inherited]

Reads an unsigned 32 bit integer from input source.

Returns:
The integer read.
cl_ubyte64 CL_IODevice::read_uint64 (  )  [inherited]

Reads an unsigned 64 bit integer from input source.

Returns:
The integer read.
cl_ubyte8 CL_IODevice::read_uint8 (  )  [inherited]

Reads an unsigned 8 bit integer from input source.

Returns:
The integer read.
int CL_IODevice::receive ( void *  data,
int  len,
bool  receive_all = true 
) [inherited]

Receive data from device.

Parameters:
data Data to receive
len Length to receive
receive_all true to receive all the data. false = receive part of the data, if it would block
Returns:
size of data received
bool CL_IODevice::seek ( int  position,
SeekMode  mode = seek_set 
) [inherited]

Seek in data stream.

Parameters:
position Position to use (usage depends on the seek mode)
mode Seek mode
Returns:
false = Failed
int CL_IODevice::send ( const void *  data,
int  len,
bool  send_all = true 
) [inherited]

Send data to device.

If the device databuffer is too small, it will be extended (ie grow memory block size or file size)

Parameters:
data Data to send
len Length to send
send_all true to send all the data. false = send part of the data, if it would block
Returns:
size of data sent
void CL_IODevice::set_big_endian_mode (  )  [inherited]

Changes input data endianess to big endian mode. (Default is little endian).

void CL_IODevice::set_little_endian_mode (  )  [inherited]

Changes input data endianess to little endian mode. This is the default setting.

bool CL_File::set_permissions ( const CL_SecurityDescriptor permissions  ) 

Change file permissions.

void CL_IODevice::set_system_mode (  )  [inherited]

Changes input data endianess to the local systems mode.

void CL_IODevice::throw_if_null (  )  const [inherited]

Throw an exception if this object is invalid.

Reimplemented in CL_HTTPServerConnection.

int CL_IODevice::write ( const void *  data,
int  len,
bool  send_all = true 
) [inherited]

Alias for send(data, len, send_all).

Parameters:
data Data to send
len Length to send
send_all true to send all the data. false = send part of the data, if it would block
Returns:
size of data sent
void CL_IODevice::write_float ( float  data  )  [inherited]

Writes a float to output source.

Parameters:
data = Float to write

Warning, this is not portable.

void CL_IODevice::write_int16 ( cl_byte16  data  )  [inherited]

Writes a signed 16 bit integer to output source.

Parameters:
data Integer to write
void CL_IODevice::write_int32 ( cl_byte32  data  )  [inherited]

Writes a signed 32 bit integer to output source.

Parameters:
data Integer to write
void CL_IODevice::write_int64 ( cl_byte64  data  )  [inherited]

Writes a signed 64 bit integer to output source.

Parameters:
data Integer to write
void CL_IODevice::write_int8 ( cl_byte8  data  )  [inherited]

Writes a signed 8 bit integer to output source.

Parameters:
data Integer to write
void CL_IODevice::write_string_a ( const CL_StringRef8 str  )  [inherited]

Writes a string to the output source.

Parameters:
str String to write

The binary format written to the output source is first an uint32 telling the length of the string, and then the string itself.

void CL_IODevice::write_string_nul ( const CL_StringRef8 str  )  [inherited]

Writes a nul terminated string to the output source.

Parameters:
str String to write

The binary format written to the output source is the string content followed by the NUL character.

void CL_IODevice::write_string_text ( const CL_StringRef8 str  )  [inherited]

Writes a text string to the output source.

Parameters:
str String to write

The binary format written to the output source is the string content appended with a native newline. On Windows the newline is CR+LF sequence and on other platforms it is only LF character. This function is intended for use with text files.

void CL_IODevice::write_uint16 ( cl_ubyte16  data  )  [inherited]

Writes an unsigned 16 bit integer to output source.

Parameters:
data Integer to write
void CL_IODevice::write_uint32 ( cl_ubyte32  data  )  [inherited]

Writes an unsigned 32 bit integer to output source.

Parameters:
data Integer to write
void CL_IODevice::write_uint64 ( cl_ubyte64  data  )  [inherited]

Writes an unsigned 64 bit integer to output source.

Parameters:
data Integer to write
void CL_IODevice::write_uint8 ( cl_ubyte8  data  )  [inherited]

Writes an unsigned 8 bit integer to output source.

Parameters:
data Integer to write

Member Data Documentation

CL_SharedPtr<CL_IODevice_Impl> CL_IODevice::impl [protected, inherited]

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