PPL7-Icon Patrick's Programming Library Version 7.0.0 - Dokumentation
ppl7::MemFile Klassenreferenz

Simulation von Dateizugriffen im Hauptspeicher. Mehr ...

Abgeleitet von ppl7::FileObject.

Öffentliche Typen

enum  SeekOrigin { SEEKCUR =1, SEEKEND, SEEKSET }
 Ausgangsbasis für Bewegung des Dateizeigers. Mehr ...
 

Öffentliche Methoden

 MemFile ()
 Konstruktor der Klasse. Mehr ...
 
 MemFile (void *adresse, size_t size, bool writeable=false)
 Konstruktor der Klasse mit Angabe eines Speicherbereichs. Mehr ...
 
 MemFile (const ByteArrayPtr &memory)
 Konstruktor der Klasse mit Angabe eines Speicherbereichs. Mehr ...
 
 ~MemFile ()
 
char * adr (size_t adresse)
 
virtual void close ()
 Datei schließen. Mehr ...
 
ppluint64 copyFrom (FileObject &quellfile, ppluint64 quelloffset, ppluint64 bytes, ppluint64 zieloffset)
 Daten aus einer anderen Datei kopieren. Mehr ...
 
ppluint64 copyFrom (FileObject &quellfile, ppluint64 bytes)
 Daten aus einer anderen Datei kopieren. Mehr ...
 
virtual bool eof () const
 Prüfen, ob Dateiende erreicht ist. Mehr ...
 
virtual int fgetc ()
 Zeichen lesen. Mehr ...
 
virtual char * fgets (char *buffer, size_t num)
 String lesen. Mehr ...
 
virtual wchar_t fgetwc ()
 Wide-Character Zeichen lesen. Mehr ...
 
virtual wchar_t * fgetws (wchar_t *buffer, size_t num=1024)
 Wide-Character String lesen. Mehr ...
 
const Stringfilename () const
 Dateiname auslesen. Mehr ...
 
virtual void flush ()
 Gepufferte Daten schreiben. Mehr ...
 
virtual void fputc (int c)
 Zeichen schreiben. Mehr ...
 
virtual void fputs (const char *str)
 String schreiben. Mehr ...
 
virtual void fputwc (wchar_t c)
 Wide-Character Zeichen schreiben. Mehr ...
 
virtual void fputws (const wchar_t *str)
 Wide-Character String schreiben. Mehr ...
 
virtual size_t fread (void *ptr, size_t size, size_t nmemb)
 Lesen eines Datenstroms. Mehr ...
 
virtual size_t fwrite (const void *ptr, size_t size, size_t nmemb)
 Schreiben eines Datenstroms. Mehr ...
 
virtual int getFileNo () const
 Filenummer der Datei. Mehr ...
 
int gets (String &buffer, size_t num=1024)
 String lesen. Mehr ...
 
String gets (size_t num=1024)
 String lesen. Mehr ...
 
int getws (String &buffer, size_t num=1024)
 Wide-Character String lesen. Mehr ...
 
String getws (size_t num=1024)
 Wide-Character String lesen. Mehr ...
 
virtual bool isOpen () const
 Prüfen, ob eine Datei geöffnet ist. Mehr ...
 
char * load ()
 Den kompletten Inhalt der Datei laden. Mehr ...
 
int load (ByteArray &target)
 Den kompletten Inhalt der Datei in ein Objekt laden. Mehr ...
 
virtual void lockExclusive (bool block=true)
 Datei exklusiv sperren. Mehr ...
 
virtual void lockShared (bool block=true)
 Datei zum Lesen sperren. Mehr ...
 
const char * map ()
 Datei in den Speicher mappen. Mehr ...
 
virtual const char * map (ppluint64 position, size_t size)
 Datei Read-Only in den Speicher mappen. Mehr ...
 
virtual char * mapRW (ppluint64 position, size_t size)
 Datei Les- und Schreibbar in den Speicher mappen. Mehr ...
 
size_t maxSize () const
 
String md5 ()
 
void open (void *adresse, size_t size, bool writeable=false)
 Speicherbereich zum Lesen öffnen. Mehr ...
 
void open (const ByteArrayPtr &memory)
 Speicherbereich zum Lesen öffnen. Mehr ...
 
void openReadWrite (void *adresse, size_t size)
 Speicherbereich zum Schreiben und Lesen öffnen. Mehr ...
 
void puts (const String &str)
 String schreiben. Mehr ...
 
void putsf (const char *fmt,...)
 Formatierten String schreiben. Mehr ...
 
void putws (const WideString &str)
 Wide-Character-String schreiben. Mehr ...
 
size_t read (void *target, size_t bytes, ppluint64 fileposition)
 Daten lesen. Mehr ...
 
size_t read (void *target, size_t bytes)
 Daten lesen. Mehr ...
 
size_t read (ByteArray &target, size_t bytes)
 Daten in ein Objekt einlesen. Mehr ...
 
virtual void rewind ()
 Dateizeiger an den Anfang der Datei bringen. Mehr ...
 
virtual void seek (ppluint64 position)
 Dateizeiger auf gewünschte Stelle bringen. Mehr ...
 
virtual ppluint64 seek (pplint64 offset, SeekOrigin origin)
 Dateizeiger auf gewünschte Stelle bringen. Mehr ...
 
void setFilename (const char *filename)
 Dateiname festlegen. Mehr ...
 
void setFilename (const String &filename)
 Dateiname festlegen. Mehr ...
 
virtual void setMapReadAhead (size_t bytes)
 Minimalgröße des Speicherblocks bei Zugriffen mit FileObject::Map. Mehr ...
 
void setMaxSize (size_t size)
 Maximale Dateigröße festlegen. Mehr ...
 
virtual ppluint64 size () const
 Größe der geöffneten Datei. Mehr ...
 
virtual void sync ()
 Dateiänderungen sofort auf die Platte schreiben. Mehr ...
 
virtual ppluint64 tell ()
 Aktuelle Dateiposition ermitteln. Mehr ...
 
virtual void truncate (ppluint64 length)
 Datei abschneiden. Mehr ...
 
virtual void unlock ()
 Dateisperre aufheben. Mehr ...
 
virtual void unmap ()
 Mapping aufheben. Mehr ...
 
size_t write (const void *source, size_t bytes, ppluint64 fileposition)
 Daten schreiben. Mehr ...
 
size_t write (const void *source, size_t bytes)
 Daten schreiben. Mehr ...
 
size_t write (const ByteArrayPtr &object, size_t bytes=0)
 Daten eines von Variant abgeleiteten Objekts schreiben. Mehr ...
 

Geschützte Attribute

char * buffer
 

Private Methoden

void increaseBuffer (size_t bytes)
 
void resizeBuffer (size_t size)
 

Private Attribute

size_t buffersize
 
size_t maxsize
 
char * MemBase
 
size_t mysize
 
size_t pos
 
bool readonly
 

Ausführliche Beschreibung

Beschreibung:
Mit dieser von FileObject abgeleiteten Klasse werden Dateizugriffe im Hauptspeicher simuliert. Sie kann immer dann verwendet werden, wenn sich die zu lesende Datei bereits im Hauptspeicher befindet, oder Daten temporär im Hauptspeicher abgelegt werden sollen.
Der zu verwendende Speicherbereich kann entweder über den Konstruktor abgegeben werden (siehe MemFile::MemFile (void * adresse, size_t size) ) oder über die Funktion MemFile::open. Soll der Speicherbereich auch beschrieben werden, muss als dritter Parameter "true" angegeben oder die Funktion MemFile::openReadWrite verwendet werden.

Dokumentation der Aufzählungstypen

Beschreibung:
Diese Enumeration definiert die Ausgahgsbasis für Bewegungen des Dateizeigers miitels der Funktion FileObject::seek
Aufzählungswerte
SEEKCUR 

Ausgehend von der aktuellen Position des Dateizeigers.

SEEKEND 

Ausgehend vom Ende der Datei.

SEEKSET 

Ausgehend vom Anfang der Datei.

Beschreibung der Konstruktoren und Destruktoren

ppl7::MemFile::MemFile ( )
Beschreibung:
Durch Verwendung dieses Konstruktors wird die Klasse zum Lesen und Schreiben geöffnet, wobei der Speicherbereich initial 0 Byte gross ist. Beim ersten Schreibzugriff wird der notwendige Speicher allokiert.
ppl7::MemFile::MemFile ( void *  adresse,
size_t  size,
bool  writeable = false 
)
Beschreibung:
Mit diesem Konstruktor wird gleichzeitig ein Pointer auf den Speicherbereich adresse mit einer Größe von size Bytes übergeben. Sämtliche Dateizugriffe werden in diesem Speicherbereich simuliert.
Parameter
adressePointer auf den zu verwendenden Speicherbereich
sizeGröße des Speicherbereichs
writeableGibt an, ob der Speicherbereich auch beschreibbar sein soll.
Achtung
Wird der Parameter writeable auf "true" gesetzt, geht die Verwaltung des Speichers an die MemFile-Klasse über. Der Speicher darf nicht mehr von der Applikation verändert oder freigegeben werden!
ppl7::MemFile::MemFile ( const ByteArrayPtr memory)

Mit diesem Konstruktor wird gleichzeitig ein Pointer auf den Speicherbereich adresse mit einer Größe von size Bytes übergeben. Sämtliche Dateizugriffe werden in diesem Speicherbereich simuliert. Ein Schreibzugriff auf diesen Speicherbereich ist nicht möglich.

Parameter
adressePointer auf den zu verwendenden Speicherbereich
sizeGröße des Speicherbereichs
ppl7::MemFile::~MemFile ( )

Dokumentation der Elementfunktionen

char * ppl7::MemFile::adr ( size_t  adresse)
void ppl7::MemFile::close ( )
virtual
Beschreibung:
Diese Funktion schließt die aktuell geöffnete Datei. Sie wird automatisch vom Destruktor der Klasse aufgerufen, so dass ihr expliziter Aufruf nicht erforderlich ist.
Wenn der Stream zur Ausgabe eingerichtet war, werden gepufferte Daten zuerst durch FileObject::Flush geschrieben. Der zugeordnete Datei-Deskriptor wird geschlossen.

Erneute Implementation von ppl7::FileObject.

ppluint64 ppl7::FileObject::copyFrom ( FileObject quellfile,
ppluint64  quelloffset,
ppluint64  bytes,
ppluint64  zieloffset 
)
inherited
Beschreibung:
Mit dieser Funktion kann ein Datenblock aus einer anderen Datei in diese hineinkopiert werden. Dabei werden bytes Bytes ab der Position quelloffset der Quelldatei quellfile gelesen an die Position zieloffset dieser Datei kopiert.
Parameter
quellfileDas Dateiobjekt, aus dem gelesen werden soll
quelloffsetPosition innerhalb der Quelldatei, ab der die Daten gelesen werden sollen
bytesAnzahl zu kopierender Bytes
zieloffsetPosition in dieser Datei, an die die Daten geschrieben werden sollen
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl kopierter Bytes zurück. Im Fehlerfall wird eine Exception geworfen.
Zu beachten
Die Funktion verwendet einen internen Buffer zum Zwischenspeichern der gelesenen Daten.
ppluint64 ppl7::FileObject::copyFrom ( FileObject quellfile,
ppluint64  bytes 
)
inherited
Beschreibung:
Mit dieser Funktion kann ein Datenblock aus einer anderen Datei in diese hineinkopiert werden. Die Daten werden dabei ab dem aktuellen Dateipositionszeiger des quellfile an den aktuellen Zeiger dieser Datei kopiert.
Parameter
quellfileDas Dateiobjekt, aus dem gelesen werden soll
bytesAnzahl zu kopierender Bytes
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl kopierter Bytes zurück. Im Fehlerfall wird eine Exception geworfen.
Zu beachten
Die Funktion verwendet einen internen Buffer zum Zwischenspeichern der gelesenen Daten.
bool ppl7::MemFile::eof ( ) const
virtual
Beschreibung:
Die Funktion prüft, ob das Dateiende erreicht wurde
Rückgabe
Liefert true zurück, wenn das Dateiende erreicht wurde, sonst false Falls die Datei nicht geöffnet war, wird wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

int ppl7::MemFile::fgetc ( )
virtual
Beschreibung:
fgetc liest das nächste Zeichen aus der Datei und gibt seinen unsigned char Wert gecastet in einem int zurück.
Rückgabe
Bei Erfolg wird der Wert des gelesenen Zeichens zurückgegeben, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

char * ppl7::MemFile::fgets ( char *  buffer,
size_t  num 
)
virtual
Beschreibung:
fgets liest höchstens num minus ein Zeichen aus der Datei und speichert sie in dem Puffer, auf den buffer zeigt. Das Lesen stoppt nach einem EOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Am Ende der gelesenen Daten wird ein 0-Byte angehangen.
Parameter
bufferPointer auf den Speicherbereich, in den die gelesenen Daten geschrieben werden sollen. Dieser muss vorher vom Aufrufer allokiert worden sein und mindestens num Bytes groß sein.
numAnzahl zu lesender Zeichen
Rückgabe
Bei Erfolg wird buffer zurückgegeben, bei Dateiende wird NULL zurückgegeben. Im Fehlerfall wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

wchar_t ppl7::MemFile::fgetwc ( )
virtual
Beschreibung:
fgetwc liest das nächste Wide-Character Zeichen aus der Datei und gibt seinen Wert als Integer zurück.
Rückgabe
Bei Erfolg wird das gelesene Zeichen als Integer Wert zurückgegeben, im Fehlerfall wird eine Exception geworfen.
Zu beachten
Die Funktion ist unter Umständen nicht auf jedem Betriebssystem verfügbar.

Erneute Implementation von ppl7::FileObject.

wchar_t * ppl7::MemFile::fgetws ( wchar_t *  buffer,
size_t  num = 1024 
)
virtual
Beschreibung:
fgwets liest höchstens num minus ein Zeichen (nicht Bytes) eines Wide-Character-Strings aus der Datei und speichert sie in dem Puffer, auf den buffer zeigt. Das Lesen stoppt nach einem EOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Am Ende der gelesenen Daten wird ein 0-Byte angehangen.
Parameter
bufferPointer auf den Speicherbereich, in den die gelesenen Daten geschrieben werden sollen. Dieser muss vorher vom Aufrufer allokiert worden sein und mindestens num * sizeof(wchar_t) Bytes groß sein.
numAnzahl zu lesender Zeichen
Rückgabe
Bei Erfolg wird buffer zurückgegeben, bei Dateiende wird NULL zurückgegeben. Im Fehlerfall wird eine Exception geworfen.
Zu beachten
Die Funktion ist unter Umständen nicht auf jedem Betriebssystem verfügbar. In diesem Fall wird eine
Ausnahmebehandlung
UnimplementedVirtualFunctionExceptiongeworfen.

Erneute Implementation von ppl7::FileObject.

const String & ppl7::FileObject::filename ( ) const
inherited
Include:
#include <ppl7.h>
Beschreibung:
Mit dieser Funktion wird der interne Dateiname ausgelesen. Dieser wird über die Open-Funktionen oder die Funktion SetFilename festgelegt.
Rückgabe
Die Funktion liefert entweder den Dateinamen zurück oder "unknown"
void ppl7::MemFile::flush ( )
virtual
Beschreibung:
Die Funktion Flush bewirkt, dass alle gepufferten Daten des aktuellen Streams mittels der zugrundeliegenden write-Funktion geschrieben werden. Der Status des Streams wird dabei nicht berührt. Die Daten werden nicht zwangsweise auch physikalisch auf die Platte geschrieben, sie können noch immer aus Performancegründen vom Kernel oder Treiber gecached werden. Um 100 Prozent sicher zu gehen, kann man die Funktion FileObject::sync verwenden.
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

void ppl7::MemFile::fputc ( int  c)
virtual
Beschreibung:
fputc schreibt das Zeichen c, umgesetzt in ein unsigned char, in den Ausgabestrom.
Parameter
cZu schreibendes Zeichen
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

void ppl7::MemFile::fputs ( const char *  str)
virtual
Beschreibung:
fputs schreibt die Zeichenkette str ohne sein nachfolgendes 0-Byte in den Ausgabestrom.
Parameter
strPointer auf den zu schreibenden String
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

void ppl7::MemFile::fputwc ( wchar_t  c)
virtual
Beschreibung:
fputwc schreibt das Wide-Character Zeichen c in den Ausgabestrom.
Parameter
cZu schreibendes Zeichen
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.
Zu beachten
Die Funktion ist unter Umständen nicht auf jedem Betriebssystem verfügbar.

Erneute Implementation von ppl7::FileObject.

void ppl7::MemFile::fputws ( const wchar_t *  str)
virtual
Beschreibung:
fputs schreibt die Zeichenkette str ohne sein nachfolgendes 0-Byte in den Ausgabestrom.
Parameter
strPointer auf den zu schreibenden String
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.
Zu beachten
Die Funktion ist unter Umständen nicht auf jedem Betriebssystem verfügbar. In diesem Fall wird Fehlercode 246 zurückgegeben.

Erneute Implementation von ppl7::FileObject.

size_t ppl7::MemFile::fread ( void *  ptr,
size_t  size,
size_t  nmemb 
)
virtual
Beschreibung:
Die Funktion fread liest nmemb Datenelemente vom Dateistrom und speichert es an der Speicherposition, die durch ptr bestimmt ist. Jedes davon ist \ size Byte lang.
Parameter
[out]ptrPointer auf den Speicherbereich, in den die gelesenen Daten abgelegt werden sollen. Der Aufrufer muss vorher mindestens size * nmemb Bytes Speicher reserviert haben.
[in]sizeGröße der zu lesenden Datenelemente
[in]nmembAnzahl zu lesender Datenelemente
Rückgabe
fread gibt die Anzahl der erfolgreich gelesenen Elemente zurück (nicht die Anzahl der Zeichen). Wenn ein Fehler auftritt oder das Dateiende erreicht ist, wird eine Exception geworfen.
Ausnahmebehandlung
EndOfFileExceptionWird geworfen, wenn das Dateiende erreicht wurde

Erneute Implementation von ppl7::FileObject.

size_t ppl7::MemFile::fwrite ( const void *  ptr,
size_t  size,
size_t  nmemb 
)
virtual
Beschreibung:
Die Funktion fwrite schreibt nmemb Datenelemente der Größe size Bytes, in den Dateistrom. Sie werden von der Speicherstelle, die durch ptr angegeben ist, gelesen.
Parameter
ptrPointer auf den Beginn des zu schreibenden Speicherbereiches.
sizeGröße der zu schreibenden Datenelemente
nmembAnzahl zu schreibender Datenelemente
Rückgabe
fwrite gibt die Anzahl der erfolgreich geschriebenen Elemente zurück (nicht die Anzahl der Zeichen). Wenn ein Fehler auftritt, wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

int ppl7::MemFile::getFileNo ( ) const
virtual
Beschreibung:
Diese Funktion steht bei bei dieser Speicherklasse nicht zur Verfügung. Bei Aufruf der Funktion wird eine OperationUnavailableException geworfen.

Erneute Implementation von ppl7::FileObject.

int ppl7::FileObject::gets ( String buffer,
size_t  num = 1024 
)
inherited
Beschreibung:
Gets liest höchstens num minus ein Zeichen aus der Datei und speichert sie im String-Objekt buffer. Das Lesen stoppt nach einem EOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Am Ende der gelesenen Daten wird ein 0-Byte angehangen.
Parameter
bufferString-Objekt, in dem die gelesenen Daten gespeichert werden sollen.
numAnzahl zu lesender Zeichen
Rückgabe
Bei Erfolg wird 1 zurückgegeben, bei Erreichen des Dateiende 0. Im Fehlerfall wird eine Exception geworfen. Der Inhalt von buffer ist im Fehlerfall undefiniert.
String ppl7::FileObject::gets ( size_t  num = 1024)
inherited
Beschreibung:
Gets liest höchstens num minus ein Zeichen aus der Datei und liefert deren Inhalt als String-Objekt zurück. Das Lesen stoppt nach einem EOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Am Ende der gelesenen Daten wird ein 0-Byte angehangen.
Parameter
numAnzahl zu lesender Zeichen
Rückgabe
Die Funktion gibt ein String-Objekt mit den gelesenen Daten zurück. Im Fehlerfall (auch bei Dateiende) wird eine Exception geworfen.
int ppl7::FileObject::getws ( String buffer,
size_t  num = 1024 
)
inherited
Beschreibung:
Gets liest höchstens num minus ein Zeichen aus der Datei und speichert sie im Wide-Character-String-Objekt buffer. Das Lesen stoppt nach einem WEOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Am Ende der gelesenen Daten wird ein 0-Byte angehangen.
Parameter
bufferWide-Character-String-Objekt, in dem die gelesenen Daten gespeichert werden sollen.
numAnzahl zu lesender Zeichen. Hierbei handelt es sich tatsächlich um Zeichen, nicht um Bytes. Die Anzahl zu lesender Bytes wird intern mit der Formel num * sizeof(wchar_t) errechnet.
Rückgabe
Bei Erfolg wird 1 zurückgegeben, bei Erreichen des Dateiende 0. Im Fehlerfall wird eine Exception geworfen. Der Inhalt von buffer ist im Fehlerfall undefiniert.
String ppl7::FileObject::getws ( size_t  num = 1024)
inherited
Beschreibung:
Gets liest höchstens num minus ein Zeichen aus der Datei liefert sie als Wide-Character-String-Objekt zurück. Das Lesen stoppt nach einem WEOF oder Zeilenvorschub. Wenn ein Zeilenvorschub gelesen wird, wird er in dem Puffer gespeichert. Am Ende der gelesenen Daten wird ein 0-Byte angehangen.
Parameter
numAnzahl zu lesender Zeichen. Hierbei handelt es sich tatsächlich um Zeichen, nicht um Bytes. Die Anzahl zu lesender Bytes wird intern mit der Formel num * sizeof(wchar_t) errechnet.
Rückgabe
Die Funktion gibt ein String-Objekt mit den gelesenen Daten zurück. Im Fehlerfall (auch bei Dateiende) wird eine Exception geworfen.
void ppl7::MemFile::increaseBuffer ( size_t  bytes)
private
bool ppl7::MemFile::isOpen ( ) const
virtual
Include:
#include <ppl7.h>
Beschreibung:
Mit dieser Funktion kann geprüft werden, ob die mit diesem Objekt assoziierte Datei gerade geöffnet ist.
Rückgabe
Die Funktion liefert true zurück, wenn die Datei offen ist, ansonsten false.

Erneute Implementation von ppl7::FileObject.

char * ppl7::FileObject::load ( )
inherited
Beschreibung:
Mit dieser Funktion wird der komplette Inhalt der geöffneten Datei in den Hauptspeicher geladen. Der benötigte Speicher wird von der Funktion automatisch allokiert und muss vom Aufrufer nach Gebrauch mit free wieder freigegeben werden.
Rückgabe
Pointer auf den Speicherbereich mit dem Inhalt der Datei. Dieser muss vom Aufrufer nach Gebrauch mit free selbst wieder freigegeben werden. Im Fehlerfall wird eine Exception geworfen.
int ppl7::FileObject::load ( ByteArray object)
inherited
Beschreibung:
Mit dieser Funktion wird der komplette Inhalt der geöffneten Datei in das angegebene ByteArray object geladen.
Parameter
[out]objectDas gewünschte Zielobjekt
Rückgabe
Liefert 1 zurück, wenn der Inhalt geladen werden konnte, sonst 0.
void ppl7::MemFile::lockExclusive ( bool  block = true)
virtual
Beschreibung:
Diese Funktion steht bei bei dieser Speicherklasse nicht zur Verfügung. Bei Aufruf der Funktion wird eine OperationUnavailableException geworfen.

Erneute Implementation von ppl7::FileObject.

void ppl7::MemFile::lockShared ( bool  block = true)
virtual
Beschreibung:
Diese Funktion steht bei bei dieser Speicherklasse nicht zur Verfügung. Bei Aufruf der Funktion wird eine OperationUnavailableException geworfen.

Erneute Implementation von ppl7::FileObject.

const char * ppl7::FileObject::map ( )
inherited
Beschreibung:
Mit dieser Funktion wird der komplette Inhalt der Datei in den Speicher gemapped. Falls das Betriebssystem mmap versteht, wird dieser verwendet. Dabei wird die Datei nicht sofort komplett in den Speicher geladen, sondern nur die Teile, die gerade benötigt werden. Steht mmap nicht zur Verfügung, wird die Datei in den Hauptspeicher geladen. Die File-Klasse kümmert sich selbst daraum, dass der Speicher auch wieder freigegeben wird.
Ein mit Map gemappter Speicher darf nur gelesen, aber nicht beschrieben werden!
Rückgabe
Bei Erfolg gibt die Funktion einen Pointer auf den Speicherbereich zurück, in dem sich die Datei befindet, im Fehlerfall wirft die Funktion eine Exception
const char * ppl7::MemFile::map ( ppluint64  position,
size_t  size 
)
virtual
Beschreibung:
Mit dieser Funktion wird ein Teil der Datei in den Speicher gemapped. Falls das Betriebssystem mmap versteht, wird dieser verwendet. Dabei wird der gewünschte Datenblock nicht sofort komplett in den Speicher geladen, sondern nur der Teil, auf den gerade zugegriffen wird. Steht mmap nicht zur Verfügung, wird die Datei in den Hauptspeicher geladen. Die File-Klasse kümmert sich selbst daraum, dass der Speicher auch wieder freigegeben wird.
Ein mit Map gemappter Speicher darf nur gelesen, aber nicht beschrieben werden! Falls auch geschrieben werden soll, ist die Funktion FileObject::MapRW zu verwenden.
Parameter
[in]positionDie gewünschte Startposition innerhalb der Datei
[in]sizeDie Anzahl Bytes, die gemapped werden sollen.
Rückgabe
Bei Erfolg gibt die Funktion einen Pointer auf den Speicherbereich zurück, in dem sich die Datei befindet, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

char * ppl7::MemFile::mapRW ( ppluint64  position,
size_t  size 
)
virtual
Beschreibung:
Mit dieser Funktion wird ein Teil der Datei in den Speicher gemapped. Falls das Betriebssystem mmap versteht, wird dieser verwendet. Dabei wird der gewünschte Datenblock nicht sofort komplett in den Speicher geladen, sondern nur der Teil, auf den gerade zugegriffen wird. Steht mmap nicht zur Verfügung, wird die Datei in den Hauptspeicher geladen. Die File-Klasse kümmert sich selbst daraum, dass der Speicher nach Gebrauch wieder zurück in die Datei geschrieben und freigegeben wird.
Ein mit mapRW gemappter Speicher darf sowohl gelesen als auch beschrieben werden! Bevor mit anderen Funktionen auf den gleichen Speicher zugegriffen werden soll (insbesondere schreibend), muss die Funktion FileObject::Unmap aufgerufen werden.
Parameter
[in]positionDie gewünschte Startposition innerhalb der Datei
[in]sizeDie Anzahl Bytes, die gemapped werden sollen.
Rückgabe
Bei Erfolg gibt die Funktion einen Pointer auf den Speicherbereich zurück, in dem sich die Datei befindet, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

size_t ppl7::MemFile::maxSize ( ) const
String ppl7::FileObject::md5 ( )
inherited
void ppl7::MemFile::open ( void *  adresse,
size_t  size,
bool  writeable = false 
)

Mit dieser Funktion wird die simulierte Datei im Hauptspeicher geöffnet. Dazu muss mit adresse ein Pointer auf den Beginn des zu verwendenden Hauptspeichers angegeben werden, sowie mit size seine Größe. Sämtliche nachfolgenden Dateizugriffe werden dann in diesem Speicherbereich simuliert. Ein Schreibender Zugriff ist nicht möglich.

Parameter
adressePointer auf den zu verwendenden Speicherbereich
sizeGröße des Speicherbereichs
Achtung
Wird der Parameter writeable auf "true" gesetzt, geht die Verwaltung des Speichers an die MemFile-Klasse über. Der Speicher darf nicht mehr von der Applikation verändert oder freigegeben werden!
void ppl7::MemFile::open ( const ByteArrayPtr memory)

Mit dieser Funktion wird die simulierte Datei im Hauptspeicher zum Lesen geöffnet. Dazu muss mit adresse ein Pointer auf den Beginn des zu verwendenden Hauptspeichers angegeben werden, sowie mit size seine Größe. Sämtliche nachfolgenden Dateizugriffe werden dann in diesem Speicherbereich simuliert. Ein Schreibender Zugriff ist nicht möglich.

Parameter
memoryReferenz auf eine ByteArrayPtr-Klasse, die den zu verwendenden Speicherbereich enthält
Siehe auch
openReadWrite: Datei zum Lesen und Schreiben öffnen
void ppl7::MemFile::openReadWrite ( void *  adresse,
size_t  size 
)

Mit dieser Funktion wird die simulierte Datei im Hauptspeicher zum Lesen und Schreiben geöffnet. Dazu muss mit adresse ein Pointer auf den Beginn des zu verwendenden Hauptspeichers angegeben werden, sowie mit size seine initiale Größe. Sämtliche nachfolgenden Dateizugriffe werden dann in diesem Speicherbereich simuliert. Erfolgt ein schreibender Zugriff über dessen Ende hinaus, wird der Speicherbereich automatisch vergrößert.

Parameter
adressePointer auf den zu verwendenden Speicherbereich
sizeGröße des Speicherbereichs
Siehe auch
open: Datei wird nur zum Lesen geöffnet
setMaxSize: Legt die maximale Größe der Datei im Speicher fest (Default=unlimitiert)
void ppl7::FileObject::puts ( const String str)
inherited
Beschreibung:
Diese Funktion schreibt den Inhalt des String-Objekts str ohne sein nachfolgendes 0-Byte in den Ausgabestrom.
Parameter
strString-Objekt mit den zu schreibenden Daten
Rückgabe
Kein Rückgabeparameter, im Fehlerfall wirft die Funktion eine Exception
void ppl7::FileObject::putsf ( const char *  fmt,
  ... 
)
inherited
Beschreibung:
Putsf schreibt das Ergebnis nach Kontrolle des Formatierungsstrings fmt und Einsetzen der optionalen Parameter ohne sein nachfolgendes 0-Byte in den Ausgabestrom.
Parameter
fmtPointer auf den Formatierungsstring
...Optionale Parameter, die im Formatierungsstring verwendet werden.
Rückgabe
Kein Rückgabeparameter, im Fehlerfall wirft die Funktion eine Exception
void ppl7::FileObject::putws ( const WideString str)
inherited
Beschreibung:
Diese Funktion schreibt den Inhalt des Wide-Character-String-Objekts str ohne sein nachfolgendes 0-Byte in den Ausgabestrom.
Parameter
strString-Objekt mit den zu schreibenden Daten
Rückgabe
Kein Rückgabeparameter, im Fehlerfall wirft die Funktion eine Exception
size_t ppl7::FileObject::read ( void *  target,
size_t  bytes,
ppluint64  fileposition 
)
inherited
Beschreibung:
Mit dieser Funktion wird beliebiger Bereich der geöffneten Datei in den Hauptspeicher geladen. Die Funktion ist nicht virtuell und existiert nur in der Basisklasse. Sie ruft die virtuellen Funktionen Seek und Fread auf, um den eigentlichen Lesevorgang durchzuführen.
Parameter
targetPointer auf den Speicherbereich, in den die gelesenen Daten geschrieben werden sollen. Dieser muss zuvor vom Aufrufer allokiert worden sein und mindestens bytes gross sein.
bytesAnzahl zu lesender Bytes
filepositionPosition in der Datei, an der die Daten gelesen werden sollen
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl gelesender Bytes zurück. Wenn ein Fehler auftritt oder das Dateiende erreicht ist, wird eine Exception geworfen.
size_t ppl7::FileObject::read ( void *  target,
size_t  bytes 
)
inherited
Beschreibung:
Diese Funktion liest bytes Bytes ab der aktuellen Position des Dateistroms und speichert sie im Hauptspeicher an der duch target bestimmten Position. Die Funktion ist nicht virtuell und existiert nur in der Basisklasse. Sie ruft die virtuellen Funktionen Seek und Fread auf, um den eigentlichen Lesevorgang durchzuführen.
Parameter
targetPointer auf den Speicherbereich, in den die gelesenen Daten geschrieben werden sollen. Dieser muss zuvor vom Aufrufer allokiert worden sein und mindestens bytes gross sein.
bytesAnzahl zu lesender Bytes
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl gelesender Bytes zurück. Wenn ein Fehler auftritt oder das Dateiende erreicht ist, wird eine Exception geworfen.
size_t ppl7::FileObject::read ( ByteArray target,
size_t  bytes 
)
inherited
Beschreibung:
Diese Funktion liest bytes Bytes ab der aktuellen Position des Dateistroms und speichert sie im Objekt target.

Die Funktion ist nicht virtuell und existiert nur in der Basisklasse. Sie ruft die virtuellen Funktionen Seek und Fread auf, um den eigentlichen Lesevorgang durchzuführen.

Parameter
targetDas Objekt, in dem die gelesenen Daten gespeichert werden sollen.
bytesAnzahl zu lesender Bytes
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl gelesender Bytes zurück. Wenn ein Fehler auftritt oder das Dateiende erreicht ist, wird eine Exception geworfen.
void ppl7::MemFile::resizeBuffer ( size_t  size)
private
void ppl7::MemFile::rewind ( )
virtual
Beschreibung:
Diese Funktion bewegt den internen Dateizeiger an den Anfang der Datei

Erneute Implementation von ppl7::FileObject.

void ppl7::MemFile::seek ( ppluint64  position)
virtual
Beschreibung:
Diese Funktion bewegt den internen Dateizeiger auf die gewünschte Stelle
Parameter
[in]positionGewünschte Position innerhalb der Datei
Ausnahmebehandlung
diverse

Erneute Implementation von ppl7::FileObject.

ppluint64 ppl7::MemFile::seek ( pplint64  offset,
SeekOrigin  origin 
)
virtual
Beschreibung:
Die Funktion seek setzt den Dateipositionszeiger für den Stream. Die neue Position, gemessen in Byte, wird erreicht durch addieren von offset zu der Position, die durch origin angegeben ist. Wenn origin auf SEEK_SET, SEEK_CUR, oder SEEK_END, gesetzt ist, ist der Offset relativ zum Dateianfang, der aktuellen Position, oder dem Dateiende.

Ein erfolgreicher Aufruf der Funktion fseek löscht den Dateiendezeiger für den Stream.

Parameter
offsetAnzahl Bytes, die gesprungen werden soll.
originGibt die Richtung an, in die der Dateizeiger bewegt werden soll. Es kann einen der folgenden Werte annehmen:
  • SEEKSET offset wird vom Beginn der Datei berechnet
  • SEEKCUR offset wird von der aktuellen Dateiposition gerechnet
  • SEEKEND offset wird vom Ende der Datei aus nach vorne berechnet
Rückgabe
Liefert die neue Position zurück, wenn der Dateizeiger erfolgreich auf die gewünschte Position bewegt werden konnte. Im Fehlerfall wird eine Exception geworfen. Die Position des Schreib-/Lesezeigers ist in diesem Fall undefiniert und sollte mittels FileObject::ftell verifiziert werden.

Erneute Implementation von ppl7::FileObject.

void ppl7::FileObject::setFilename ( const char *  filename)
inherited
Include:
#include <ppl7.h>
Beschreibung:
Mit dieser Funktion wird der interne Dateiname festgelegt, der z.B. mit GetFilename ausgelesen werden kann. Die Funktion wird intern auch von den Open-Funktionen mit Dateinamen aufgerufen
Parameter
[in]filenameEin Formatstring oder der Dateiname
[in]...beliebig viele Parameter, sofern filename ein Formatstring ist
void ppl7::FileObject::setFilename ( const String filename)
inherited
Include:
#include <ppl7.h>
Beschreibung:
Mit dieser Funktion wird der interne Dateiname festgelegt, der z.B. mit GetFilename ausgelesen werden kann. Die Funktion wird intern auch von den Open-Funktionen mit Dateinamen aufgerufen
Parameter
[in]filenameEin CString, der den Dateinamen enthält.
void ppl7::MemFile::setMapReadAhead ( size_t  bytes)
virtual
Beschreibung:
Falls mit Map viele aufeinanderfolgende kleine Speicherblöcke gemapped werden, ist es sinnvoll größere Blöcke zu laden, die dann bereits im Cache bzw. Hauptspeicher liegen, wenn sie gebraucht werden. Mit dieser Funktion kann bestimmt werden, wie viele Daten im Voraus gemapped werden sollen.
Parameter
bytesAnzahl Bytes, die im Voraus gemapped werden sollen.

Erneute Implementation von ppl7::FileObject.

void ppl7::MemFile::setMaxSize ( size_t  size)
Beschreibung:
Mit dieser Funktion wird die maximale Größe einer Datei im Hauptspeicher festgelegt. Damit werden alle Schreibenden Zugriffe begrenzt, die Datei kann nicht größer werden als size. Standardmäßig gibt es keine Limitierung, die Datei kann somit so groß werden, wie Hauptspeicher zur Verfügung steht.
Parameter
[in]sizeMaximale Größe in Bytes. Der Wert "0" hebt die Limitierung auf.
Siehe auch
Mit der Funktion MemFile::maxSize kann das derzeitige Limit ausgelesen werden.
ppluint64 ppl7::MemFile::size ( ) const
virtual
Beschreibung:
Diese Funktion liefert die Größe der geöffneten Datei in Bytes zurück.
Rückgabe
Größe der Datei in Bytes. Falls Fehler auftreten, wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

void ppl7::MemFile::sync ( )
virtual
Beschreibung:
Für gewöhnlich cached das Betriebssysteme Schreibzugriffe auf die Festplatte, um die Performance zu steigern. Je nach Filesystem und Betriebssystem können zwischen Schreibzugriff der Software bis zum tatsächlichen Schreiben auf die Festplatte zwischen einigen wenigen Sekunden bis zu einer Minute vergehen! Tritt in diesem Zeitraum ein System-Crash oder Stromausfall auf, führt dies unweigerlich zu Datenverlust.

Ein Aufruf dieser Funktion bewirkt, dass alle Dateiänderungen sofort auf die Festplatte geschrieben werden. Sie sollte daher vor dem Schließen einer kritischen Datei mit CFile::Close aufgerufen werden, unter Umständen sogar nach jedem Schreibzugriff.

Rückgabe
Die Funktion kehrt erst zurück, wenn alle Daten vollständig geschrieben wurden und liefert dann true (1) zurück. Können die Daten nicht geschrieben werden, wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

ppluint64 ppl7::MemFile::tell ( )
virtual
Beschreibung:
Die Funktion tell liefert den aktuellen Wert des Dateipositionszeigers für den Stream zurück.
Rückgabe
Position des Zeigers innerhalb der Datei. Im Fehlerfall wird eine Exception geworfen

Erneute Implementation von ppl7::FileObject.

void ppl7::MemFile::truncate ( ppluint64  length)
virtual
Beschreibung:
Die Funktionen Truncate bewirkt, dass die aktuell geöffnete Datei auf eine Größe von exakt length Bytes abgeschnitten wird.
Wenn die Datei vorher größer war, gehen überschüssige Daten verloren. Wenn die Datei vorher kleiner war, wird sie vergrößert und die zusätzlichen Bytes werden als Nullen geschrieben.
Der Dateizeiger wird nicht verändert. Die Datei muss zum Schreiben geöffnet sein.
Parameter
lengthPosition, an der die Datei abgeschnitten werden soll.
Rückgabe
Kein Rückgabewert, im Fehlerfall wird eine Exception geworfen.

Erneute Implementation von ppl7::FileObject.

void ppl7::MemFile::unlock ( )
virtual
Beschreibung:
Diese Funktion steht bei bei dieser Speicherklasse nicht zur Verfügung. Bei Aufruf der Funktion wird eine OperationUnavailableException geworfen.

Erneute Implementation von ppl7::FileObject.

void ppl7::MemFile::unmap ( )
virtual
Beschreibung:
Ein mit map oder mapRW eingerichtetes Mapping einer Datei in den Hauptspeicher wird wieder aufgehoben.

Erneute Implementation von ppl7::FileObject.

size_t ppl7::FileObject::write ( const void *  source,
size_t  bytes,
ppluint64  fileposition 
)
inherited
Beschreibung:
Mit dieser Funktion wird ein beliebiger Speicherbereich auf den Datenträger geschrieben. Die Funktion ist nicht virtuell und existiert nur in der Basisklasse. Sie ruft die virtuellen Funktionen Seek und Fwrite auf, um den eigentlichen Schreibvorgang durchzuführen.
Parameter
sourcePointer auf den Speicherbereich, der geschrieben werden soll
bytesAnzahl zu schreibender Bytes
filepositionPosition in der Datei, an der die Daten gespeichert werden solle
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl geschriebener Bytes zurück, im Fehlerfall wird eine Exception geworfen.
size_t ppl7::FileObject::write ( const void *  source,
size_t  bytes 
)
inherited
Beschreibung:
Mit dieser Funktion wird ein beliebiger Speicherbereich auf den Datenträger geschrieben. Die Funktion ist nicht virtuell und existiert nur in der Basisklasse. Sie ruft die virtuellen Funktionen Seek und Fwrite auf, um den eigentlichen Schreibvorgang durchzuführen.
Parameter
sourcePointer auf den Speicherbereich, der geschrieben werden soll
bytesAnzahl zu schreibender Bytes
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl geschriebener Bytes zurück, im Fehlerfall wird eine Exception geworfen.
size_t ppl7::FileObject::write ( const ByteArrayPtr object,
size_t  bytes = 0 
)
inherited
Beschreibung:
Mit dieser Funktion wird der Speicherinhalt eines Variant-Objekts auf den Datenträger geschrieben. Die Funktion ist nicht virtuell und existiert nur in der Basisklasse. Sie ruft die virtuellen Funktionen Seek und fwrite auf, um den eigentlichen Schreibvorgang durchzuführen.
Parameter
objectDas zu speichernde Variant Objekt
bytesAnzahl zu schreibender Bytes
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl geschriebener Bytes zurück, im Fehlerfall wird eine Exception geworfen.

Dokumentation der Datenelemente

char* ppl7::FileObject::buffer
protectedinherited
size_t ppl7::MemFile::buffersize
private
size_t ppl7::MemFile::maxsize
private
char* ppl7::MemFile::MemBase
private
size_t ppl7::MemFile::mysize
private
size_t ppl7::MemFile::pos
private
bool ppl7::MemFile::readonly
private

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: