PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
ppl6::CMemFile Klassenreferenz

Simulation von Dateizugriffen im Hauptspeicher. Mehr ...

Öffentliche Methoden

 CMemFile ()
 
 CMemFile (void *adresse, size_t size)
 Konstruktor der Klasse mit Angabe eines Speicherbereichs. Mehr ...
 
 CMemFile (const CMemoryReference &memory)
 Konstruktor der Klasse mit Angabe eines Speicherbereichs. Mehr ...
 
 ~CMemFile ()
 
char * Adr (ppluint32 adresse)
 
virtual int Close ()
 Datei schließen. Mehr ...
 
ppluint64 Copy (CFileObject &quellfile, ppluint64 quelloffset, ppluint64 bytes, ppluint64 zieloffset)
 Daten aus einer anderen Datei kopieren. Mehr ...
 
ppluint64 Copy (CFileObject &quellfile, ppluint64 bytes)
 Daten aus einer anderen Datei kopieren. Mehr ...
 
virtual ppluint64 DoCopy (CFileObject &quellfile, ppluint64 bytes)
 Daten aus einer anderen Datei kopieren. Mehr ...
 
virtual bool Eof () const
 Prüfen, ob Dateiende erreicht ist. Mehr ...
 
virtual char * Fgets (char *buffer, size_t num=1024)
 String lesen. Mehr ...
 
virtual wchar_t * Fgetws (wchar_t *buffer, size_t num=1024)
 Wide-Character String lesen. Mehr ...
 
CString Filename () const
 Dateiname auslesen. Mehr ...
 
virtual int Flush ()
 Gepufferte Daten schreiben. Mehr ...
 
virtual size_t Fread (void *ptr, size_t size, size_t nmemb)
 Lesen eines Datenstroms. Mehr ...
 
virtual int Fseek (ppluint64 offset, int origin)
 Dateizeiger auf gewünschte Stelle bringen. Mehr ...
 
virtual pplint64 Ftell ()
 Aktuelle Dateiposition ermitteln. Mehr ...
 
virtual size_t Fwrite (const void *ptr, size_t size, size_t nmemb)
 Schreiben eines Datenstroms. Mehr ...
 
virtual int Getc ()
 Zeichen lesen. Mehr ...
 
const char * GetFilename () const
 Dateiname auslesen. Mehr ...
 
virtual int GetFileNo () const
 Filenummer der Datei. Mehr ...
 
int Gets (CString &buffer, size_t num=1024)
 String lesen. Mehr ...
 
char * Gets (char *buffer, size_t num=1024)
 
CString Gets (size_t num=1024)
 String lesen. Mehr ...
 
virtual int Getwc ()
 Wide-Character Zeichen lesen. Mehr ...
 
int Getws (CWString &buffer, size_t num=1024)
 Wide-Character String lesen. Mehr ...
 
wchar_t * Getws (wchar_t *buffer, size_t num=1024)
 
CWString 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 (CVar &target)
 Den kompletten Inhalt der Datei in ein Objekt laden. Mehr ...
 
virtual int LockExclusive (bool block=true)
 Datei exklusiv sperren. Mehr ...
 
virtual int LockShared (bool block=true)
 Datei zum Lesen sperren. Mehr ...
 
pplint64 Lof () const
 Größe der geöffneten Datei. 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 ...
 
CString MD5Sum ()
 
int Open (void *adresse, ppluint32 size)
 Speicherbereich öffnen. Mehr ...
 
int Open (const CMemoryReference &memory)
 Speicherbereich öffnen. Mehr ...
 
virtual int Putc (int c)
 Zeichen schreiben. Mehr ...
 
int Puts (const CString &str)
 String schreiben. Mehr ...
 
virtual int Puts (const char *str)
 String schreiben. Mehr ...
 
int Putsf (const char *fmt,...)
 Formatierten String schreiben. Mehr ...
 
virtual int Putwc (wchar_t c)
 Wide-Character Zeichen schreiben. Mehr ...
 
int Putws (const CWString &str)
 Wide-Character-String schreiben. Mehr ...
 
virtual int Putws (const wchar_t *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 (CVar &target, size_t bytes)
 Daten in ein Objekt einlesen. Mehr ...
 
virtual int Seek (ppluint64 position)
 Dateizeiger auf gewünschte Stelle bringen. Mehr ...
 
void SetFilename (const CString &filename)
 Dateiname festlegen. Mehr ...
 
void SetFilenamef (const char *filename,...)
 Dateiname festlegen. Mehr ...
 
virtual void SetMapReadAhead (size_t bytes)
 Minimalgröße des Speicherblocks bei Zugriffen mit CFileObject::Map. Mehr ...
 
virtual pplint64 Size () const
 Größe der geöffneten Datei. Mehr ...
 
virtual int Sync ()
 Dateiänderungen sofort auf die Platte schreiben. Mehr ...
 
virtual int Truncate (ppluint64 length)
 Datei abschneiden. Mehr ...
 
virtual int Unlock ()
 Dateisperre aufheben. Mehr ...
 
virtual void Unmap ()
 
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 CVar &object, size_t bytes=0)
 Daten eines von CVar abgeleiteten Objekts schreiben. Mehr ...
 

Private Attribute

char * buffer
 
char * MemBase
 
ppluint64 pos
 
ppluint64 size
 

Ausführliche Beschreibung

Mit dieser von CFileObject abgeleiteten Klasse können Dateizugriffe im Hauptspeicher simuliert werden. Sie ist hauptsächlich zum Lesen von Daten gedacht, z.B. aus einer Resourcendatei. Zwar können auch Daten geschrieben werden, jedoch nicht über die initiale Größe des Speicherbereichs hinaus.

Der zu verwendende Speicherbereich kann entweder über den Konstruktor abgegeben werden (siehe CMemFile::CMemFile (void * adresse, size_t size) ) oder über die Funktion CMemFile::Open.

Beschreibung der Konstruktoren und Destruktoren

ppl6::CMemFile::CMemFile ( )
ppl6::CMemFile::CMemFile ( void *  adresse,
size_t  size 
)

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
ppl6::CMemFile::CMemFile ( const CMemoryReference 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.

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

Dokumentation der Elementfunktionen

char * ppl6::CMemFile::Adr ( ppluint32  adresse)
int ppl6::CMemFile::Close ( )
virtual

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 CFileObject::Flush geschrieben. Der zugeordnete Datei-Deskriptor wird geschlossen.

Rückgabe
Bei Erfolg wird 1 zurückgegeben, im Fehlerfall 0. In jedem Fall ist kein weiterer Zugriff auf den Stream möglich.

Erneute Implementation von ppl6::CFileObject.

ppluint64 ppl6::CFileObject::Copy ( CFileObject quellfile,
ppluint64  quelloffset,
ppluint64  bytes,
ppluint64  zieloffset 
)
inherited

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 kann der Wert auch keiner als die Anzahl Bytes sein oder auch 0.
Zu beachten
Die Funktion verwendet einen internen Buffer zum Zwischenspeichern der gelesenen Daten.
ppluint64 ppl6::CFileObject::Copy ( CFileObject quellfile,
ppluint64  bytes 
)
inherited

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 kann der Wert auch keiner als die Anzahl Bytes sein oder auch 0.
Zu beachten
Die Funktion verwendet einen internen Buffer zum Zwischenspeichern der gelesenen Daten.
ppluint64 ppl6::CMemFile::DoCopy ( CFileObject quellfile,
ppluint64  bytes 
)
virtual

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 kann der Wert auch keiner als die Anzahl Bytes sein oder auch 0.
Zu beachten
Die Funktion verwendet einen internen Buffer zum Zwischenspeichern der gelesenen Daten.

Erneute Implementation von ppl6::CFileObject.

bool ppl6::CMemFile::Eof ( ) const
virtual

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 ebenfalls false zurückgegeben.

Erneute Implementation von ppl6::CFileObject.

char * ppl6::CMemFile::Fgets ( char *  buffer,
size_t  num = 1024 
)
virtual

Gets 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, im Fehlerfall NULL.

Erneute Implementation von ppl6::CFileObject.

wchar_t * ppl6::CFileObject::Fgetws ( wchar_t *  buffer,
size_t  num = 1024 
)
virtualinherited

Gets liest höchstens num minus ein Zeichen (nicht Bytes) 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, im Fehlerfall NULL.
Zu beachten
Die Funktion ist unter Umständen nicht auf jedem Betriebssystem verfügbar. In diesem Fall wird Fehlercode 246 zurückgegeben.

Erneute Implementation in ppl6::CFile.

CString ppl6::CFileObject::Filename ( ) const
inherited
Include:
#include <ppl6.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"
int ppl6::CMemFile::Flush ( )
virtual

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 CFileObject::Sync verwenden.

Rückgabe
Bei erfolgreicher Ausführung wird 1 zurückgegeben, ansonsten 0.

Erneute Implementation von ppl6::CFileObject.

size_t ppl6::CMemFile::Fread ( void *  ptr,
size_t  size,
size_t  nmemb 
)
virtual

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 kleinere Zahl oder 0 zurückgegeben. Falls das Dateiende erreicht wurde oder ein anderer Fehler aufgetreten ist, kann der Fehlercode über den üblichen Weg ausgelesen werden.

Erneute Implementation von ppl6::CFileObject.

int ppl6::CMemFile::Fseek ( ppluint64  offset,
int  origin 
)
virtual

Die Funktion Fseek 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:
  • SEEK_SET offset wird vom Beginn der Datei berechnet
  • SEEK_CUR offset wird von der aktuellen Dateiposition gerechnet
  • SEEK_END offset wird vom Ende der Datei aus nach vorne berechnet
Rückgabe
Bei Erfolg gibt die Funktion 1 zurück, im Fehlerfall 0.

Erneute Implementation von ppl6::CFileObject.

pplint64 ppl6::CMemFile::Ftell ( )
virtual

Die Funktion Ftell liefert den aktuellen Wert des Dateipositionszeigers für den Stream zurück.

Rückgabe
Position des Zeigers innerhalb der Datei. Im Fehlerfall wird -1 zurückgegeben.

Erneute Implementation von ppl6::CFileObject.

size_t ppl6::CMemFile::Fwrite ( const void *  ptr,
size_t  size,
size_t  nmemb 
)
virtual

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 kleinere Zahl oder 0 zurückgegeben. Der Fehler kann auf dem üblichen Weg ausgelesen werden.

Erneute Implementation von ppl6::CFileObject.

int ppl6::CMemFile::Getc ( )
virtual

Getc 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 -1.

Erneute Implementation von ppl6::CFileObject.

const char * ppl6::CFileObject::GetFilename ( ) const
inherited
Include:
#include <ppl6.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"
int ppl6::CFileObject::GetFileNo ( ) const
virtualinherited

Die Funktion liefert den Dateideskriptor als Integer zurück, wie er von den Systemfunktionen open , read , write und close genutzt wird.

Rückgabe
Liefert die Filenummer zurück, oder -1, wenn die Datei nicht geöffnet war.

Erneute Implementation in ppl6::CFile.

int ppl6::CFileObject::Gets ( CString buffer,
size_t  num = 1024 
)
inherited

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, im Fehlerfall 0. Der Inhalt von buffer ist im Fehlerfall undefiniert.
char * ppl6::CFileObject::Gets ( char *  buffer,
size_t  num = 1024 
)
inherited
CString ppl6::CFileObject::Gets ( size_t  num = 1024)
inherited

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 CString-Objekt mit den gelesenen Daten zurück. Im Fehlerfall ist das Objekt leer (CString::IsEmpty()).
int ppl6::CFileObject::Getwc ( )
virtualinherited

Getwc liest das nächste 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 -1;
Zu beachten
Die Funktion ist unter Umständen nicht auf jedem Betriebssystem verfügbar. In diesem Fall wird Fehlercode 246 zurückgegeben.

Erneute Implementation in ppl6::CFile.

int ppl6::CFileObject::Getws ( CWString buffer,
size_t  num = 1024 
)
inherited

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, im Fehlerfall 0. Der Inhalt von buffer ist im Fehlerfall undefiniert.
wchar_t * ppl6::CFileObject::Getws ( wchar_t *  buffer,
size_t  num = 1024 
)
inherited
CWString ppl6::CFileObject::Getws ( size_t  num = 1024)
inherited

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 CWString-Objekt mit den gelesenen Daten zurück. Im Fehlerfall ist das Objekt leer (CString::IsEmpty()).
bool ppl6::CMemFile::IsOpen ( ) const
virtual
Include:
#include <ppl6.h>
Beschreibung:
Mit dieser Funktion kann geprüft werden, ob die mit CFile assoziierte Datei gerade geöffnet ist.
Rückgabe
Die Funktion liefert true zurück, wenn die Datei offen ist, ansonsten false.

Erneute Implementation von ppl6::CFileObject.

char * ppl6::CFileObject::Load ( )
inherited

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 vim 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 NULL.
int ppl6::CFileObject::Load ( CVar object)
inherited

Mit dieser Funktion wird der komplette Inhalt der geöffneten Datei in das angegebene Objekt geladen. Unterstützt werden zur Zeit folgende Objekte:

Parameter
[out]objectDas gewünschte Zielobjekt
Rückgabe
Liefert 1 zurück, wenn der Inhalt geladen werden konnte, sonst 0.
int ppl6::CFileObject::LockExclusive ( bool  block = true)
virtualinherited

Mit LockExclusive wird die Datei exklusiv zum Schreiben gesperrt. Andere Prozesse können nicht auf die Datei zugreifen, solange die Sperre besteht.

Parameter
blockGibt an, ob die Funktion warten soll (blocken), bis die Datei gesperrt werden kann (block=true) oder sofort mit einer Fehlermeldung zurückkehren soll (block=false).
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
Siehe auch
Siehe auch CFileObject::LockShared und CFileObject::Unlock

Erneute Implementation in ppl6::CFile.

int ppl6::CFileObject::LockShared ( bool  block = true)
virtualinherited

Mit LockShared wird die Datei zum Lesen gesperrt. Andere Prozesse können weiterhin auf die Datei zugreifen, allerdings ebenfalls nur lesend.

Parameter
blockGibt an, ob die Funktion warten soll (blocken), bis die Datei gesperrt werden kann (block=true) oder sofort mit einer Fehlermeldung zurückkehren soll (block=false).
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
Siehe auch
Siehe auch CFileObject::LockExclusive und CFileObject::Unlock

Erneute Implementation in ppl6::CFile.

pplint64 ppl6::CFileObject::Lof ( ) const
inherited

Diese Funktion liefert die Größe der geöffneten Datei in Bytes zurück.

Rückgabe
Größe der Datei in Bytes, oder -1, wenn ein Fehler aufgetreten ist.
Zu beachten
Die Funktion ruft selbst nur die Funktion CFileObject::Size auf, die daher aus Geschwindigkeitsgründen vorzuziehen ist.
const char * ppl6::CFileObject::Map ( )
inherited

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 NULL.
const char * ppl6::CMemFile::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 CFileObject::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 NULL.

Erneute Implementation von ppl6::CFileObject.

char * ppl6::CMemFile::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 CFileObject::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 NULL.

Erneute Implementation von ppl6::CFileObject.

CString ppl6::CFileObject::MD5Sum ( )
inherited
int ppl6::CMemFile::Open ( void *  adresse,
ppluint32  size 
)

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.

Parameter
adressePointer auf den zu verwendenden Speicherbereich
sizeGröße des Speicherbereichs
Rückgabe
Die Funktion gibt bei Erfolg 1 zurück, im Fehlerfall 0. Ein Fehler kann nur auftreten, wenn einer der Parameter adresse oder size einen Nullwert aufweisen.
int ppl6::CMemFile::Open ( const CMemoryReference memory)

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.

Parameter
memoryReferenz auf eine CMemoryReference-Klasse, die den zu verwendenden Speicherbereich enthält
Rückgabe
Die Funktion gibt bei Erfolg 1 zurück, im Fehlerfall 0. Ein Fehler kann nur auftreten, wenn einer der Parameter adresse oder size einen Nullwert aufweisen.
int ppl6::CMemFile::Putc ( int  c)
virtual

Putc schreibt das Zeichen c, umgesetzt in ein unsigned char, in den Ausgabestrom.

Parameter
cZu schreibendes Zeichen
Rückgabe
Bei Erfolg wird das geschriebende Zeichen als Integer Wert zurückgegeben, im Fehlerfall -1;

Erneute Implementation von ppl6::CFileObject.

int ppl6::CFileObject::Puts ( const CString str)
inherited

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
Bei Erfolg wird 1 zurückgegeben, im Fehlerfall 0.
int ppl6::CMemFile::Puts ( const char *  str)
virtual

Puts schreibt die Zeichenkette str ohne sein nachfolgendes 0-Byte in den Ausgabestrom.

Parameter
strPointer auf den zu schreibenden String
Rückgabe
Bei Erfolg wird 1 zurückgegeben, im Fehlerfall 0.

Erneute Implementation von ppl6::CFileObject.

int ppl6::CFileObject::Putsf ( const char *  fmt,
  ... 
)
inherited

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
Bei Erfolg wird 1 zurückgegeben, im Fehlerfall 0.
int ppl6::CFileObject::Putwc ( wchar_t  c)
virtualinherited

Putwc schreibt das Wide-Character Zeichen c in den Ausgabestrom.

Parameter
cZu schreibendes Zeichen
Rückgabe
Bei Erfolg wird das geschriebende Zeichen als Integer Wert zurückgegeben, im Fehlerfall -1;
Zu beachten
Die Funktion ist unter Umständen nicht auf jedem Betriebssystem verfügbar. In diesem Fall wird Fehlercode 246 zurückgegeben.

Erneute Implementation in ppl6::CFile.

int ppl6::CFileObject::Putws ( const CWString str)
inherited

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
Bei Erfolg wird 1 zurückgegeben, im Fehlerfall 0.
int ppl6::CFileObject::Putws ( const wchar_t *  str)
virtualinherited

Puts schreibt die Zeichenkette str ohne sein nachfolgendes 0-Byte in den Ausgabestrom.

Parameter
strPointer auf den zu schreibenden String
Rückgabe
Bei Erfolg wird 1 zurückgegeben, im Fehlerfall 0.
Zu beachten
Die Funktion ist unter Umständen nicht auf jedem Betriebssystem verfügbar. In diesem Fall wird Fehlercode 246 zurückgegeben.

Erneute Implementation in ppl6::CFile.

size_t ppl6::CFileObject::Read ( void *  target,
size_t  bytes,
ppluint64  fileposition 
)
inherited

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 kleinere Zahl oder 0 zurückgegeben. Falls das Dateiende erreicht wurde oder ein anderer Fehler aufgetreten ist, kann der Fehlercode über den üblichen Weg ausgelesen werden.
size_t ppl6::CFileObject::Read ( void *  target,
size_t  bytes 
)
inherited

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 kleinere Zahl oder 0 zurückgegeben. Falls das Dateiende erreicht wurde oder ein anderer Fehler aufgetreten ist, kann der Fehlercode über den üblichen Weg ausgelesen werden.
size_t ppl6::CFileObject::Read ( CVar target,
size_t  bytes 
)
inherited

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 kleinere Zahl oder 0 zurückgegeben. Falls das Dateiende erreicht wurde oder ein anderer Fehler aufgetreten ist, kann der Fehlercode über den üblichen Weg ausgelesen werden.
Zu beachten
Folgende CVar Datentypen werden derzeit unterstützt:
int ppl6::CMemFile::Seek ( ppluint64  position)
virtual

Diese Funktion bewegt den internen Dateizeiger auf die gewünschte Stelle

Parameter
[in]positionGewünschte Position innerhalb der Datei
Rückgabe
Liefert 1 zurück, wenn der Dateizeiger erfolgreich auf die gewünschte Position bewegt werden konnte, sonst 0. Bei Auftreten eines Fehlers kann sich die Dateiposition dennoch geändert haben und sollte daher mit CFileObject::Ftell abgefragt werden.

Erneute Implementation von ppl6::CFileObject.

void ppl6::CFileObject::SetFilename ( const CString filename)
inherited
Include:
#include <ppl6.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 ppl6::CFileObject::SetFilenamef ( const char *  filename,
  ... 
)
inherited
Include:
#include <ppl6.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 ppl6::CFileObject::SetMapReadAhead ( size_t  bytes)
virtualinherited

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 in ppl6::CFile.

pplint64 ppl6::CMemFile::Size ( ) const
virtual

Diese Funktion liefert die Größe der geöffneten Datei in Bytes zurück.

Rückgabe
Größe der Datei in Bytes, oder -1, wenn ein Fehler aufgetreten ist.
Zu beachten
Die Funktion ist CFileObject::Lof vorzuziehen.

Erneute Implementation von ppl6::CFileObject.

int ppl6::CMemFile::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, liefert sie false (0) zurück und ein entsprechender Fehlercode wird gesetzt.
Seit
Die Funktion wurde mit Version 6.2.5 eingeführt

Erneute Implementation von ppl6::CFileObject.

int ppl6::CFileObject::Truncate ( ppluint64  length)
virtualinherited

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
Bei Erfolg gibt die Funktion 1 zurück, im Fehlerfall 0.

Erneute Implementation in ppl6::CFile.

int ppl6::CFileObject::Unlock ( )
virtualinherited

Mit Unlock wird eine mit LockShared oder LockExclusive eingerichtete Sperre wieder aufgehoben, so dass auch andere Prozesse wieder uneingeschränkt auf die Datei zugreifen können.

Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
Siehe auch
Siehe auch CFileObject::LockShared und CFileObject::LockExclusive

Erneute Implementation in ppl6::CFile.

void ppl6::CMemFile::Unmap ( )
virtual

Erneute Implementation von ppl6::CFileObject.

size_t ppl6::CFileObject::Write ( const void *  source,
size_t  bytes,
ppluint64  fileposition 
)
inherited

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 0
size_t ppl6::CFileObject::Write ( const void *  source,
size_t  bytes 
)
inherited

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 0
size_t ppl6::CFileObject::Write ( const CVar object,
size_t  bytes = 0 
)
inherited

Mit dieser Funktion wird der Speicherinhalt eines CVar-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 CVar Objekt
bytesAnzahl zu schreibender Bytes
Rückgabe
Bei Erfolg liefert die Funktion die Anzahl geschriebener Bytes zurück, im Fehlerfall 0
Zu beachten
Folgende CVar Datentypen werden derzeit unterstützt:

Dokumentation der Datenelemente

char* ppl6::CMemFile::buffer
private
char* ppl6::CMemFile::MemBase
private
ppluint64 ppl6::CMemFile::pos
private
ppluint64 ppl6::CMemFile::size
private

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