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

Verwaltung eines einzelnen Speicherblocks. Mehr ...

Abgeleitet von ppl7::ByteArrayPtr.

Öffentliche Methoden

 ByteArray ()
 Konstruktor ohne Argumente. Mehr ...
 
 ByteArray (const ByteArrayPtr &other)
 Copy-Konstruktor. Mehr ...
 
 ByteArray (const ByteArray &other)
 Copy-Konstruktor. Mehr ...
 
 ByteArray (const String &str)
 Konstruktor durch String. Mehr ...
 
 ByteArray (const void *adr, size_t size)
 Konstruktor mit Angabe einer Speicheradresse und Größe. Mehr ...
 
 ByteArray (size_t size)
 Konstruktor mit Speicher-Allokierung. Mehr ...
 
 ~ByteArray ()
 Destruktor der Klasse. Mehr ...
 
const void * adr () const
 Adresse des Speicherblocks auslesen. Mehr ...
 
void * append (void *adr, size_t size)
 Speicherbereich anhängen. Mehr ...
 
void * append (const ByteArrayPtr &other)
 Speicherbereich aus einem ByteArray-Objekt anhängen. Mehr ...
 
void * calloc (size_t size)
 Speicher allokieren und mit 0 initialisieren. Mehr ...
 
void clear ()
 Speicher freigeben. Mehr ...
 
void * copy (const void *adr, size_t size)
 Speicherbereich kopieren. Mehr ...
 
void * copy (const ByteArrayPtr &other)
 Speicherbereich aus einem anderen ByteArray-Objekt kopieren. Mehr ...
 
ppluint32 crc32 () const
 CRC32-Prüfsumme berechnen. Mehr ...
 
void free ()
 Speicher freigeben. Mehr ...
 
void * fromBase64 (const String &base64)
 
void * fromHex (const String &hex)
 
unsigned char get (size_t pos) const
 
void hexDump () const
 
void hexDump (size_t bytes) const
 
void hexDump (size_t offset, size_t bytes) const
 
bool isEmpty () const
 Prüfen, ob der Referenzierte Speicher eine Größe von 0 hat. Mehr ...
 
bool isNull () const
 Prüfen, ob Speicher referenziert ist. Mehr ...
 
void * malloc (size_t size)
 Speicher allokieren. Mehr ...
 
String md5 () const
 MD5-Summe berechnen. Mehr ...
 
int memcmp (const ByteArrayPtr &other) const
 
void memset (int value)
 Speicher mit bestimmtem Wert füllen. Mehr ...
 
 operator const char * () const
 Adresse des Speicherblocks auslesen. Mehr ...
 
 operator const unsigned char * () const
 Adresse des Speicherblocks auslesen. Mehr ...
 
 operator const void * () const
 Adresse des Speicherblocks auslesen. Mehr ...
 
bool operator!= (const ByteArrayPtr &other) const
 
bool operator< (const ByteArrayPtr &other) const
 
bool operator<= (const ByteArrayPtr &other) const
 
ByteArrayoperator= (const ByteArrayPtr &other)
 Speicherreferenz von anderem ByteArray-Objekt kopieren. Mehr ...
 
ByteArrayoperator= (const ByteArray &other)
 Speicherreferenz von anderem ByteArray-Objekt kopieren. Mehr ...
 
ByteArrayoperator= (const String &str)
 
bool operator== (const ByteArrayPtr &other) const
 
bool operator> (const ByteArrayPtr &other) const
 
bool operator>= (const ByteArrayPtr &other) const
 
unsigned char operator[] (size_t pos) const
 Einzelnes Byte aus dem Speicherbereich kopieren. Mehr ...
 
void * prepend (void *adr, size_t size)
 Speicherbereich davor hängen. Mehr ...
 
void * prepend (const ByteArrayPtr &other)
 Speicherbereich aus einem ByteArray-Objekt davorhängen. Mehr ...
 
const void * ptr () const
 Adresse des Speicherblocks auslesen. Mehr ...
 
void set (size_t pos, unsigned char value)
 
size_t size () const
 Größe des Speicherblocks auslesen. Mehr ...
 
String toBase64 () const
 Speicherbereich als Base64 in einen String exportieren. Mehr ...
 
const char * toCharPtr () const
 Adresse des Speicherblocks auslesen. Mehr ...
 
String toHex () const
 Speicherbereich als Hexwerte in einen String exportieren. Mehr ...
 
void use (void *adr, size_t size)
 Referenz auf Speicherbereich setzen. Mehr ...
 
void use (const ByteArrayPtr &other)
 Referenz auf Speicherbereich von einer anderen ByteArrayPtr-Instanz kopieren. Mehr ...
 
void useadr (void *adr, size_t size)
 Speicherverwaltung übernehmen. Mehr ...
 

Ausführliche Beschreibung

Beschreibung:
Mit dieser Klasse kann ein einzelner Speicherblock verwaltet werden. Dieser besteht immer aus einer Speicheraddresse und der Größe des Speicherbereichs in Bytes. Die Klasse stellt sicher, dass am Ende des allokierten Speicherbereichs immer ein 0-Byte angehangen wird, ausser bei Verwendung der Funktion ByteArray::useadr. Dadurch kann bei Verwendung der Pointer-Operatoren der Speicher direkt als Eingabe für C-Strings verwendet werden.
Der Speicherbereich kann mit ByteArray::set gesetzt werden und mit ByteArray::adr und ByteArray::size ausgelesen werden. Außerdem kann mit dem Operator [] ein bestimmtes Byte aus dem Speicherbereich ausgelesen werden.
Im Gegensatz zu ByteArrayPtr verwaltet die Klasse den Speicherbereich selbst. Das heisst der verwaltete Speicher wird bei Veränderungen oder Beendigung der Klasse automatisch freigegeben.
Mit ByteArray::malloc oder ByteArray::calloc wird Speicher allokiert, mit ByteArray::free kann er vorzeitig wieder freigegeben werden. Mit ByteArray::copy wird der Speicher eines anderen ByteArray- oder ByteArrayPtr-Objekts oder aus einer angegebenen Speicheradresse dupliziert.
Mit ByteArray::set oder durch den Konstruktor angegebener Speicherbereich wird nicht dupliziert, wird aber fortan von der Klasse verwaltet, das heisst die Anwendung darf diesen nicht selbst freigeben.
Siehe auch
Seit
Diese Klasse wurde mit Version 6.3.3 eingeführt

Beschreibung der Konstruktoren und Destruktoren

ppl7::ByteArray::ByteArray ( )
Beschreibung:
Dieser Konstruktor erstellt eine Inszanz der Klasse ohne einen zugeweisenen Speicherbereich
ppl7::ByteArray::ByteArray ( const ByteArrayPtr other)
Beschreibung:
Mit diesem Konstruktor wird der Speicherbereich eines anderen ByteArray- oder ByteArrayPtr- Objekts kopiert.
Parameter
[in]otherReferenz auf eine andere ByteArray- oder ByteArrayPtr-Klasse
ppl7::ByteArray::ByteArray ( const ByteArray other)
Beschreibung:
Mit diesem Konstruktor wird der Speicherbereich eines anderen ByteArray- oder ByteArrayPtr- Objekts kopiert.
Parameter
[in]otherReferenz auf eine andere ByteArray- oder ByteArrayPtr-Klasse
ppl7::ByteArray::ByteArray ( const String str)
Beschreibung:
Mit diesem Konstruktor wird der Speicherbereich eines Strings in das Objekt kopiert.
Parameter
[in]otherReferenz auf eine String-Klasse
ppl7::ByteArray::ByteArray ( const void *  adr,
size_t  size 
)
Beschreibung:
Mit diesem Konstruktor wird eine neue Instanz der Klasse erzeugt, und der mit adr und size angegebenen Speicherbereich kopiert.
Parameter
[in]adrPointer auf den Beginn des Speicherbereichs
[in]sizeGröße des Speicherbereichs in Bytes
ppl7::ByteArray::ByteArray ( size_t  size)
Beschreibung:
Mit diesem Konstruktor wird eine Instanz der Klasse erzeugt, die einen Speicherblock mit der Größe size allokiert und diesen selbst verwaltet.
Parameter
[in]sizeGewünschte Größe des Speicherblocks in Bytes
Ausnahmebehandlung
OutOfMemoryExceptionDiese Exception wird geworfen, wenn der Speicher nicht allokiert werden konnte
ppl7::ByteArray::~ByteArray ( )
Beschreibung:
Der Destruktor sort dafür, dass der allokierte Speicher mittes "free" wieder freigegeben wird.

Dokumentation der Elementfunktionen

const void * ppl7::ByteArrayPtr::adr ( ) const
inherited
Beschreibung:
Mit dieser Funktion wird die Adresse des Speicherblocks ausgelesen
Rückgabe
Adresse des Speicherblocks
void * ppl7::ByteArray::append ( void *  adr,
size_t  size 
)
Beschreibung:
Mit dieser Funktion wird der durch adr und size angegebene Speicherbereich an die bereits in der Klasse vorhandenen Daten angehangen. Die Klasse allokiert dafür zunächst den erforderlichen Speicher und kopiert dann die Daten.
Parameter
[in]adr
[in]size
Rückgabe
Bei erfolgreichem Kopieren liefert die Funktion einen Pointer auf den neu allokierten Speicherbereich zurück. Im Fehlerfall wird eine Exception geworfen.
Ausnahmebehandlung
OutOfMemoryExceptionSpeicher konnte nicht allokiert werden
NullPointerExceptionEin übergebener Parameter war 0
ExceptionSpeicherbereich konnte nicht kopiert werden
Zu beachten
Falls die Klasse vor Aufruf bereits Speicher verwaltet hat, wird dieser zuerst freigegeben.
void * ppl7::ByteArray::append ( const ByteArrayPtr other)
Beschreibung:
Mit dieser Funktion wird der durch other referenzierte Speicherbereich an die Daten dieser Instanz der ByteArray-Klasse angehangen. Dazu wird Speicher reallokiert und kopiert.
Parameter
[in]otherReferenz auf das ByteArray- oder ByteArrayPtr-Objekt, von dem der Speicher kopiert werden soll.
Rückgabe
Bei erfolgreichem Kopieren liefert die Funktion einen Pointer auf den neu allokierten Speicherbereich zurück. Im Fehlerfall wird eine Exception geworfen.
Ausnahmebehandlung
OutOfMemoryExceptionSpeicher konnte nicht allokiert werden
NullPointerExceptionEin übergebener Parameter war 0
ExceptionSpeicherbereich konnte nicht kopiert werden
void * ppl7::ByteArray::calloc ( size_t  size)
Beschreibung:
Mit dieser Funktion wird ein neuer Speicherblock mit der Größe von size Bytes allokiert, der Inhalt mit 0 initialisiert und dessen Adresse als Ergebnis zurückgeliefert. Das ByteArray-Objekt übernimmt die Verwaltung des Speicherblocks.
Parameter
[in]sizeGewünschte Größe des Speicherblocks.
Rückgabe
Pointer auf den Beginn des allokierten Speichers, oder NULL, wenn ein Fehler beim Allokieren aufgetreten ist. Ein entsprechender Fehlercode wird gesetzt.
void ppl7::ByteArray::clear ( )
Beschreibung:
Wird der Speicher vom ByteArray-Objekt verwaltet, wird dieser durch Aufruf dieser Funktion wieder freigegeben. Bei nichtverwaltetem Speicher wird lediglich die interne Referenz auf NULL gesetzt, aber der Speicher nicht freigegeben.
void * ppl7::ByteArray::copy ( const void *  adr,
size_t  size 
)
Beschreibung:
Mit dieser Funktion wird der durch adr und size angegebene Speicherbereich in die ByteArray-Klasse kopiert. Die Klasse allokiert dafür zunächst den erforderlichen Speicher und übernimmt dessen Verwaltung.
Parameter
[in]adr
[in]size
Rückgabe
Bei erfolgreichem Kopieren liefert die Funktion einen Pointer auf den neu allokierten Speicherbereich zurück. Im Fehlerfall wird eine Exception geworfen.
Ausnahmebehandlung
OutOfMemoryExceptionSpeicher konnte nicht allokiert werden
ExceptionSpeicherbereich konnte nicht kopiert werden
Zu beachten
Falls die Klasse vor Aufruf bereits Speicher verwaltet hat, wird dieser zuerst freigegeben.
void * ppl7::ByteArray::copy ( const ByteArrayPtr other)
Beschreibung:
Mit dieser Funktion wird der durch other referenzierte Speicherbereich in diese Instanz der ByteArray-Klasse kopiert. Die Klasse allokiert dafür zunächst den dafür erforderlichen Speicher und übernimmt dessen Verwaltung.
Parameter
[in]otherReferenz auf das ByteArray- oder ByteArrayPtr-Objekt, von dem der Speicher kopiert werden soll.
Rückgabe
Bei erfolgreichem Kopieren liefert die Funktion einen Pointer auf den neu allokierten Speicherbereich zurück. Im Fehlerfall wird eine Exception geworfen.
Ausnahmebehandlung
OutOfMemoryExceptionSpeicher konnte nicht allokiert werden
NullPointerExceptionEin übergebener Parameter war 0
ExceptionSpeicherbereich konnte nicht kopiert werden
ppluint32 ppl7::ByteArrayPtr::crc32 ( ) const
inherited
Beschreibung:
Diese Funktion liefert die CRC32-Prüfsumme des Speicherbereichs zurück.
Rückgabe
CRC32-Prüfsumme
void ppl7::ByteArray::free ( )
Beschreibung:
Wird der Speicher vom ByteArray-Objekt verwaltet, wird dieser durch Aufruf dieser Funktion wieder freigegeben. Bei nichtverwaltetem Speicher wird lediglich die interne Referenz auf NULL gesetzt, aber der Speicher nicht freigegeben.
void* ppl7::ByteArray::fromBase64 ( const String base64)
void * ppl7::ByteArray::fromHex ( const String hex)
unsigned char ppl7::ByteArrayPtr::get ( size_t  pos) const
inherited
void ppl7::ByteArrayPtr::hexDump ( ) const
inherited
void ppl7::ByteArrayPtr::hexDump ( size_t  bytes) const
inherited
void ppl7::ByteArrayPtr::hexDump ( size_t  offset,
size_t  bytes 
) const
inherited
bool ppl7::ByteArrayPtr::isEmpty ( ) const
inherited
Beschreibung:
Mit dieser Funktion kann geprüft werden, ob die Klasse zur Zeit eine Referenz auf einen Speicherbereich enthält und dieser größer als 0 Byte ist.
Rückgabe
Enthält die Klasse keine Referenz auf einen Speicherbereich, der mindestens 1 Byte gross ist, liefert die Funktion true zurück, andernfalls false.
bool ppl7::ByteArrayPtr::isNull ( ) const
inherited
Beschreibung:
Mit dieser Funktion kann geprüft werden, ob die Klasse zur Zeit eine Referenz auf einen Speicherbereich enthält.
Rückgabe
Enthält die Klasse keine Referenz auf einen Speicherbereich, liefert die Funktion true zurück, andernfalls false.
void * ppl7::ByteArray::malloc ( size_t  size)
Beschreibung:
Mit dieser Funktion wird ein neuer Speicherblock mit der Größe von size Bytes allokiert und dessen Adresse als Ergebnis zurückgeliefert. Das ByteArray-Objekt übernimmt die Verwaltung des Speicherblocks.
Parameter
[in]sizeGewünschte Größe des Speicherblocks.
Rückgabe
Pointer auf den Beginn des allokierten Speichers, oder NULL, wenn ein Fehler beim Allokieren aufgetreten ist. Ein entsprechender Fehlercode wird gesetzt.
String ppl7::ByteArrayPtr::md5 ( ) const
inherited

Diese Funktion berechnet die MD5-Summe der binären Daten und gibt diese als String zurück.

Rückgabe
Die Funktion liefert ein String-Objekt zurück. Bei Erfolg enthält dieses die MD5-Summe, im Fehlerfall wird eine Exception geworfen. Ein Fehler kann auftreten, wenn die Klasse keine Daten enthalten hat oder bei der Berechnung der MD5-Summe ein Fehler aufgetreten ist.
int ppl7::ByteArrayPtr::memcmp ( const ByteArrayPtr other) const
inherited
void ppl7::ByteArrayPtr::memset ( int  value)
inherited
Beschreibung:
Diese Funktion füllt den gesamten verwalteten Speicher mit dem Bytewert value
Parameter
[in]valueBytewert
ppl7::ByteArray::operator const char * ( ) const
Beschreibung:
Mit diesem Operator wird die Adresse des Speicherblocks ausgelesen.
Rückgabe
Adresse des Speicherblocks
Achtung
Die Adresse kann NULL sein, wenn kein Speicherblock allokiert ist!
ppl7::ByteArray::operator const unsigned char * ( ) const
Beschreibung:
Mit diesem Operator wird die Adresse des Speicherblocks ausgelesen.
Rückgabe
Adresse des Speicherblocks
Achtung
Die Adresse kann NULL sein, wenn kein Speicherblock allokiert ist!
ppl7::ByteArray::operator const void * ( ) const
Beschreibung:
Mit diesem Operator wird die Adresse des Speicherblocks ausgelesen.
Rückgabe
Adresse des Speicherblocks
Achtung
Die Adresse kann NULL sein, wenn kein Speicherblock allokiert ist!
bool ppl7::ByteArray::operator!= ( const ByteArrayPtr other) const
bool ppl7::ByteArray::operator< ( const ByteArrayPtr other) const
bool ppl7::ByteArray::operator<= ( const ByteArrayPtr other) const
ByteArray & ppl7::ByteArray::operator= ( const ByteArrayPtr other)
Beschreibung:
Mit diesem Operator wird der Speicherbereich eines anderen ByteArray- oder ByteArrayPtr-Objekts kopiert. Er ist identisch zur Funktion ByteArray::copy.
Parameter
[in]otherReferenz auf ein anderes ByteArray- oder ByteArrayPtr-Objekt.
Rückgabe
Referenz auf das Objekt
Ausnahmebehandlung
OutOfMemoryExceptionSpeicher konnte nicht allokiert werden
NullPointerExceptionEin übergebener Parameter war 0
ExceptionSpeicherbereich konnte nicht kopiert werden
ByteArray & ppl7::ByteArray::operator= ( const ByteArray other)
Beschreibung:
Mit diesem Operator wird der Speicherbereich eines anderen ByteArray- oder ByteArrayPtr-Objekts kopiert. Er ist identisch zur Funktion ByteArray::copy.
Parameter
[in]otherReferenz auf ein anderes ByteArray- oder ByteArrayPtr-Objekt.
Rückgabe
Referenz auf das Objekt
Ausnahmebehandlung
OutOfMemoryExceptionSpeicher konnte nicht allokiert werden
NullPointerExceptionEin übergebener Parameter war 0
ExceptionSpeicherbereich konnte nicht kopiert werden
ByteArray & ppl7::ByteArray::operator= ( const String str)
bool ppl7::ByteArray::operator== ( const ByteArrayPtr other) const
bool ppl7::ByteArray::operator> ( const ByteArrayPtr other) const
bool ppl7::ByteArray::operator>= ( const ByteArrayPtr other) const
unsigned char ppl7::ByteArray::operator[] ( size_t  pos) const
Beschreibung:
Mit dem Operator [] kann ein bestimmtes Byte pos aus dem Speicherbereich ausgelesen werden. Ist kein Speicher referenziert oder ist pos größer als der Speicherblock, wird eine Exception ausgelöst.
Parameter
[in]posAuszulesendes Byte, beginnend mit 0.
Rückgabe
Wert der Speicherstelle
Ausnahmebehandlung
OutOfBoundsEceptionDiese Exception wird geworfen, wenn die mit pos angegebene Speicherstelle ausseralb des referenzierten Speichers liegt oder kein Speicher referenziert ist.
void * ppl7::ByteArray::prepend ( void *  adr,
size_t  size 
)
Beschreibung:
Mit dieser Funktion wird der durch adr und size angegebene Speicherbereich vor die bereits in der Klasse vorhandenen Daten gehangen. Die Klasse allokiert dafür zunächst den erforderlichen Speicher und kopiert dann die Daten.
Parameter
[in]adr
[in]size
Rückgabe
Bei erfolgreichem Kopieren liefert die Funktion einen Pointer auf den neu allokierten Speicherbereich zurück. Im Fehlerfall wird eine Exception geworfen.
Ausnahmebehandlung
OutOfMemoryExceptionSpeicher konnte nicht allokiert werden
NullPointerExceptionEin übergebener Parameter war 0
ExceptionSpeicherbereich konnte nicht kopiert werden
Zu beachten
Falls die Klasse vor Aufruf bereits Speicher verwaltet hat, wird dieser zuerst freigegeben.
void * ppl7::ByteArray::prepend ( const ByteArrayPtr other)
Beschreibung:
Mit dieser Funktion wird der durch other referenzierte Speicherbereich vor die Daten dieser Instanz der ByteArray-Klasse gehangen. Dazu wird Speicher reallokiert und kopiert.
Parameter
[in]otherReferenz auf das ByteArray- oder ByteArrayPtr-Objekt, von dem der Speicher kopiert werden soll.
Rückgabe
Bei erfolgreichem Kopieren liefert die Funktion einen Pointer auf den neu allokierten Speicherbereich zurück. Im Fehlerfall wird eine Exception geworfen.
Ausnahmebehandlung
OutOfMemoryExceptionSpeicher konnte nicht allokiert werden
NullPointerExceptionEin übergebener Parameter war 0
ExceptionSpeicherbereich konnte nicht kopiert werden
const void * ppl7::ByteArrayPtr::ptr ( ) const
inherited
Beschreibung:
Mit dieser Funktion wird die Adresse des Speicherblocks ausgelesen
Rückgabe
Adresse des Speicherblocks
void ppl7::ByteArrayPtr::set ( size_t  pos,
unsigned char  value 
)
inherited
size_t ppl7::ByteArrayPtr::size ( ) const
inherited
Beschreibung:
Mit dieser Funktion kann die Größe des Speicherblocks ausgelesen werden.
Rückgabe
Größe des Speicherblocks oder 0, wenn kein Speicher zugeordnet ist.
String ppl7::ByteArrayPtr::toBase64 ( ) const
inherited
Beschreibung:
Der referenzierte Speicherbereich wird im Base64-Format als String exportiert.
Rückgabe
Inhalt des Speicherbereichs als Base64-String.
const char * ppl7::ByteArrayPtr::toCharPtr ( ) const
inherited
Beschreibung:
Mit diesem Operator wird die Adresse des Speicherblocks ausgelesen
Rückgabe
Adresse des Speicherblocks
String ppl7::ByteArrayPtr::toHex ( ) const
inherited
Beschreibung:
Der referenzierte Speicherbereich wird als String mit Hexadezimalwerten exportiert, wobei jedes Byte als zwei Zeichen langer Hexadezimalwert dargestellt wird.
Rückgabe
String mit Hexadezimal-Werten
void ppl7::ByteArrayPtr::use ( void *  adr,
size_t  size 
)
inherited
Beschreibung:
Mit dieser Funktion wird der Klasse der Speicherbereich mit der Adresse adr und der Größe size zugeordnet. Der Speicherbereich selbst wird von der Klasse nicht verwaltet, das heisst die Anwendung muss sich um dessen Freigabe kümmern.
Parameter
[in]adrStartadresse des Speicherbereichs
[in]sizeGröße des Speicherbereichs in Bytes
void ppl7::ByteArrayPtr::use ( const ByteArrayPtr other)
inherited
Beschreibung:
Mit dieser Funktion wird eine Referenz auf einen Speicherbereich von einer anderen ByteArrayPtr- oder ByteArray- Instanz kopiert.
Parameter
[in]otherReferenz auf ein anderes ByteArray-Objekt.
void ppl7::ByteArray::useadr ( void *  adr,
size_t  size 
)
Beschreibung:
Mit dieser Funktion wird der Klasse die Verwaltung des Speicherbereich mit der Adresse adr und der Größe size übergeben. Der Speicher muss zuvor mit "malloc" bzw. "calloc" allokiert worden sein und darf von der Anwendung selbst nicht mehr freigegeben werden.
Parameter
[in]adrStartadresse des Speicherbereichs
[in]sizeGröße des Speicherbereichs in Bytes
Zu beachten
Falls die Klasse vor Aufruf bereits Speicher verwaltet hat, wird dieser zuerst freigegeben.
Achtung
Bei Verwendung dieser Funktion wird kein 0-Byte am Ende des Speicherbereichs hinzugefügt. Fall das Objekt als Eingabe für eine C-String-Funktion verwendet werden soll, muss die Anwendung selbst dafür sorgen, dass am Ende ein 0-Byte vorhanden ist.

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