ExchangeFileContents
|
Diese Klasse erlaubt das Bearbeiten eines Blobs (einfügen, kopieren, durchsuchen etc.). Mehr ...
#include <EuBlob.h>
Öffentliche Methoden | |
Blob () | |
Blob (char *pData, std::size_t nDataSize, bool bCopy=true) | |
Blob (const Blob &rBlob) | |
virtual | ~Blob () |
int | swap (Blob &rSwapBlob) |
int | setData (char *pData, std::size_t nDataSize, bool bCopy=true) |
void | setMemResponsible (bool bActiv=true) |
bool | isMemResponsible () |
void | clear () |
void | setNULL () |
virtual std::size_t | getData (char *&prBlob, bool bCopy=true) |
int | getData (char *&prBlob, std::size_t nStartPosition, std::size_t nSize) |
int | getBlob (Blob *&prBlob, std::size_t nStartPosition, std::size_t nSize) |
char | getChar (std::size_t nPosition) |
std::size_t | getSize () const |
bool | findForward (std::size_t &nFoundPosition, const char *pSearchMask, std::size_t nSearchMaskSize, bool bSearchAtTheBeginning) |
bool | findForward (std::size_t &nFoundPosition, const char *pSearchMask, std::size_t nSearchMaskSize) |
bool | findForwardNext (std::size_t &nFoundPosition, const char *pSearchMask, std::size_t nSearchMaskSize) |
bool | findBackward (std::size_t &nFoundPosition, const char *pSearchMask, std::size_t nSearchMaskSize, bool bSearchAtTheEnd) |
bool | findBackward (std::size_t &nFoundPosition, const char *pSearchMask, std::size_t nSearchMaskSize) |
bool | findBackwardNext (std::size_t &nFoundPosition, const char *pSearchMask, std::size_t nSearchMaskSize) |
int | setCurrentPosition (std::size_t nNewPosition) |
std::size_t | getCurrentPosition () const |
int | append (const char *pBuffer, std::size_t nBufferSize) |
int | append (const Blob *pBlob) |
int | append (const Blob &rBlob) |
int | insert (const char *pBuffer, std::size_t nBufferSize, std::size_t nBufferPosition) |
int | insert (const Blob *pBlob, std::size_t nBufferPosition) |
int | insert (const Blob &rBlob, std::size_t nBufferPosition) |
int | remove (std::size_t nNumberRemoveBytes, std::size_t nBufferPosition) |
int | replace (const char *pOldContent, std::size_t pOldContentSize, const char *pNewContent, std::size_t pNewContentSize) |
int | replaceAll (const char *pOldContent, std::size_t pOldContentSize, const char *pNewContent, std::size_t pNewContentSize) |
Blob & | operator+= (const Blob &rBlob) |
Blob & | operator= (const Blob &rBlob) |
Blob & | operator= (int iNULL) |
operator int () const | |
int | operator== (const Blob &rBlob) const |
int | operator!= (const Blob &rBlob) const |
bool | operator> (const Blob &rBlob) |
bool | operator< (const Blob &rBlob) |
bool | operator>= (const Blob &rBlob) |
bool | operator<= (const Blob &rBlob) |
Geschützte Attribute | |
char * | m_pBlob |
std::size_t | m_nSize |
std::size_t | m_nCurrentPosition |
bool | m_bMemResponsible |
Freundbeziehungen | |
Blob | operator+ (Blob lT, const Blob &rrT) |
Diese Klasse erlaubt das Bearbeiten eines Blobs (einfügen, kopieren, durchsuchen etc.).
eut::Blob::Blob | ( | ) |
Standard-Konstruktor.
eut::Blob::Blob | ( | char * | pData, |
std::size_t | nDataSize, | ||
bool | bCopy = true ) |
Konstruktor mit Parameterübergabe.
[in] | pData | Ein Zeiger auf einen allocierten Speicher. |
[in] | nDataSize | Die Größe von pData. |
[in] | bCopy | Wenn false, wird pData nicht kopiert, sondern nur m_pBlob auf pData gesetzt. |
eut::ErrorNException | Bei einem Fehler wird eine Exception geworfen. |
eut::Blob::Blob | ( | const Blob & | rBlob | ) |
Copy-Konstruktor.
[in] | rBlob | Von diesem Blob werden die Daten übernommen. |
|
virtual |
Destruktor, ggf. allocierter Speicher wird aufgeräumt.
int eut::Blob::append | ( | const Blob & | rBlob | ) |
Kopiert das übergebene Blob an das Blobende, wenn m_bMemResponsible == true.
[in] | rBlob | Die Referenz auf das anzuhängenden Blob. |
int eut::Blob::append | ( | const Blob * | pBlob | ) |
Kopiert den übergebenen Blob an das Blobende, wenn m_bMemResponsible == true.
[in] | pBlob | Der Zeiger auf das anzuhängenden Blob. |
int eut::Blob::append | ( | const char * | pBuffer, |
std::size_t | nBufferSize ) |
Kopiert den übergebenen Buffer an das Blobende, wenn m_bMemResponsible == true.
[in] | pBuffer | Der Zeiger auf den anzuhängenden Speicher. |
[in] | nBufferSize | Die Größe (Anzahl Bytes) von pBuffer. |
Codeschnipsel
void eut::Blob::clear | ( | ) |
Setzt m_pBlob auf nullptr.
Gibt den Speicher von m_pBlob frei wenn m_bMemResponsible = true und setzt alle Werte auf die Anfangsgröße.
bool eut::Blob::findBackward | ( | std::size_t & | nFoundPosition, |
const char * | pSearchMask, | ||
std::size_t | nSearchMaskSize ) |
Liefert die Position im Blob von übergebener Suchmaske. Gesucht wird vom Ende des Blobs in Richtung Anfang.
[in,out] | nFoundPosition | Wenn gefunden, die Position im Blob (kleinster Wert 1). |
[in] | pSearchMask | Die Suchmaske (z.B. char t_szSuchMaske[] = {0x0D, 0x0A};) |
[in] | nSearchMaskSize | Da nach allen Bytes gesucht werden kann, muss die Länge (Anzahl Bytes) übergeben. |
Wird zum Iterieren durch das Blob in Verbindung mit findBackwardNext (...) genutzt.
Codeschnipsel
bool eut::Blob::findBackward | ( | std::size_t & | nFoundPosition, |
const char * | pSearchMask, | ||
std::size_t | nSearchMaskSize, | ||
bool | bSearchAtTheEnd ) |
Liefert die Position im Blob von übergebener Suchmaske.
[in,out] | nFoundPosition | Wenn gefunden, die Position im Blob (kleinster Wert 1). |
[in] | pSearchMask | Die Suchmaske (z.B. char t_szSuchMaske[] = {0x0D, 0x0A};) |
[in] | nSearchMaskSize | Da nach allen Bytes gesucht werden kann, muss die Länge (Anzahl Bytes) übergeben. |
[in] | bSearchAtTheEnd | Wenn true, dann wird vom Ende des Blobs gesucht; bei false ab der aktuellen Position in Richtung Anfang. |
bool eut::Blob::findBackwardNext | ( | std::size_t & | nFoundPosition, |
const char * | pSearchMask, | ||
std::size_t | nSearchMaskSize ) |
Liefert die Position im Blob von übergebener Suchmaske. Gesucht wird ab der aktuellen Position des Blobs in Richtung Anfang.
[in,out] | nFoundPosition | Wenn gefunden, die Position im Blob (kleinster Wert 1). |
[in] | pSearchMask | Die Suchmaske (z.B. char t_szSuchMaske[] = {0x0D, 0x0A};) |
[in] | nSearchMaskSize | Da nach allen Bytes gesucht werden kann, muss die Länge (Anzahl Bytes) übergeben. |
bool eut::Blob::findForward | ( | std::size_t & | nFoundPosition, |
const char * | pSearchMask, | ||
std::size_t | nSearchMaskSize ) |
Liefert die Position im Blob von übergebener Suchmaske. Gesucht wird vom Anfang des Blobs in Richtung Ende.
[in,out] | nFoundPosition | Wenn gefunden, die Position im Blob (kleinster Wert 1). |
[in] | pSearchMask | Die Suchmaske (z.B. char t_szSuchMaske[] = {0x0D, 0x0A};) |
[in] | nSearchMaskSize | Da nach allen Bytes gesucht werden kann, muss die Länge (Anzahl Bytes) übergeben werden. |
Wird zum Iterieren durch das Blob in Verbindung mit findForwardNext (..) genutzt.
Codeschnipsel
bool eut::Blob::findForward | ( | std::size_t & | nFoundPosition, |
const char * | pSearchMask, | ||
std::size_t | nSearchMaskSize, | ||
bool | bSearchAtTheBeginning ) |
Liefert die Position im Blob von übergebener Suchmaske.
[in,out] | nFoundPosition | Wenn gefunden, die Position im Blob (kleinster Wert 1). |
[in] | pSearchMask | Die Suchmaske (z.B. char t_szSuchMaske[] = {0x0D, 0x0A};) |
[in] | nSearchMaskSize | Da nach allen Bytes gesucht werden kann, muss die Länge (Anzahl Bytes) übergeben werden. |
[in] | bSearchAtTheBeginning | Wenn true, dann wird vom Anfang des Blobs gesucht; bei false ab der aktuellen Position in Richtung Ende. |
bool eut::Blob::findForwardNext | ( | std::size_t & | nFoundPosition, |
const char * | pSearchMask, | ||
std::size_t | nSearchMaskSize ) |
Liefert die Position im Blob von übergebener Suchmaske. Gesucht wird ab der aktuellen Position des Blobs in Richtung Ende.
[in,out] | nFoundPosition | Wenn gefunden, die Position im Blob (kleinster Wert 1). |
[in] | pSearchMask | Die Suchmaske (z.B. char t_szSuchMaske[] = {0x0D, 0x0A};) |
[in] | nSearchMaskSize | Da nach allen Bytes gesucht werden kann, muss die Länge (Anzahl Bytes) übergeben werden. |
int eut::Blob::getBlob | ( | Blob *& | prBlob, |
std::size_t | nStartPosition, | ||
std::size_t | nSize ) |
Liefert einen Teilblob des Blobs als Zeiger auf neuen Blob.
[in,out] | prBlob | Zeiger auf neues Blob. |
[in] | nStartPosition | Die Startposition (kleinster Wert 1). |
[in] | nSize | Die Größe des Bereichs (Anzahl Bytes) welcher im gelieferten neuen Blob ist. |
char eut::Blob::getChar | ( | std::size_t | nPosition | ) |
Liefert ein einzelnen char.
[in] | nPosition | Position des gewünschten Char (kleinster Wert 1). |
std::size_t eut::Blob::getCurrentPosition | ( | ) | const |
Liefert die aktuelle Position von m_nCurrentPosition im Blob.
|
virtual |
Liefert in prBlob das Blob.
[in,out] | prBlob | Der Zeiger auf den Speicherbereich des Blobs. |
[in] | bCopy | Wenn Parameter bCopy auf true gesetzt ist, wird eine Kopie des Blobs geliefert. |
eut::ErrorNException | Es wird eine Exception geworfen, wenn kein Speicher allociert werden konnte. |
int eut::Blob::getData | ( | char *& | prBlob, |
std::size_t | nStartPosition, | ||
std::size_t | nSize ) |
Liefert einen Bereich des Blobs als char*.
[in,out] | prBlob | Zeiger auf den alloclierten Speicherbereich. |
[in] | nStartPosition | Die Startposition (kleinster Wert 1). |
[in] | nSize | Die Größe des Bereichs (Anzahl Bytes). |
std::size_t eut::Blob::getSize | ( | ) | const |
Liefert die Blobgröße (Anzahl Bytes).
int eut::Blob::insert | ( | const Blob & | rBlob, |
std::size_t | nBufferPosition ) |
int eut::Blob::insert | ( | const Blob * | pBlob, |
std::size_t | nBufferPosition ) |
int eut::Blob::insert | ( | const char * | pBuffer, |
std::size_t | nBufferSize, | ||
std::size_t | nBufferPosition ) |
Kopiert übergebenen Buffer in das eigene Blob in übergebene Position.
[in] | pBuffer | Zeiger auf einzufügenden Speicher. |
[in] | nBufferSize | Die Größe (Anzahl Bytes) von pBuffer. |
[in] | nBufferPosition | Die Position (kleinster Wert 1) im Blob, ab dem eingefügt werden soll. |
Codeschnipsel
bool eut::Blob::isMemResponsible | ( | ) |
Liefert die Verantwortung über den Speicher des Blobs.
eut::Blob::operator int | ( | ) | const |
int eut::Blob::operator!= | ( | const Blob & | rBlob | ) | const |
Vergleichsoperator.
Zuweisungsoperator welcher ein Blob erwartet und diesen an seine Daten anhängt.
[in] | rBlob | Von diesem Objekt werden die Daten übernommen. |
eut::ErrorNException | Bei einem Fehler wird eine Exception geworfen. |
bool eut::Blob::operator< | ( | const Blob & | rBlob | ) |
Vergleichsoperator.
bool eut::Blob::operator<= | ( | const Blob & | rBlob | ) |
Vergleichsoperator.
Zuweisungsoperator welcher ein Blob erwartet.
[in] | rBlob | Von diesem Objekt werden die Daten übernommen. |
Blob & eut::Blob::operator= | ( | int | iNULL | ) |
int eut::Blob::operator== | ( | const Blob & | rBlob | ) | const |
Vergleichsoperator.
bool eut::Blob::operator> | ( | const Blob & | rBlob | ) |
Vergleichsoperator.
bool eut::Blob::operator>= | ( | const Blob & | rBlob | ) |
Vergleichsoperator.
int eut::Blob::remove | ( | std::size_t | nNumberRemoveBytes, |
std::size_t | nBufferPosition ) |
Entfernt übergebene Anzahl von Bytes im eigenen Blob ab der übergebenen Position (inkl. dieser).
[in] | nNumberRemoveBytes | Die Anzahl der zu entfernenden Bytes. |
[in] | nBufferPosition | Die Position (kleinster Wert 1) im Blob, ab dem entfernt werden soll. |
int eut::Blob::replace | ( | const char * | pOldContent, |
std::size_t | pOldContentSize, | ||
const char * | pNewContent, | ||
std::size_t | pNewContentSize ) |
Sucht und entfernt ersten übergebenen Inhalt pOldContent ab Anfang einmalig aus dem Blob und fügt statt dessen den Inhalt pNewContent ein.
[in] | pOldContent | Der auszutauschende Inhalt. |
[in] | pOldContentSize | Die Länge des auszutauschenden Inhalts. |
[in] | pNewContent | Der neu einzufügende Inhalt. |
[in] | pNewContentSize | Die Länge des einzufügenden Inhalts. |
int eut::Blob::replaceAll | ( | const char * | pOldContent, |
std::size_t | pOldContentSize, | ||
const char * | pNewContent, | ||
std::size_t | pNewContentSize ) |
Sucht und entfernt alle Inhalte gleich dem ersten übergebenen Inhalt pOldContent aus dem Blob und fügt statt dessen jeweils den Inhalt aus pNewContent ein.
[in] | pOldContent | Der auszutauschende Inhalt. |
[in] | pOldContentSize | Die Länge des auszutauschenden Inhalts. |
[in] | pNewContent | Der neu einzufügende Inhalt. |
[in] | pNewContentSize | Die Länge des einzufügenden Inhalts. |
int eut::Blob::setCurrentPosition | ( | std::size_t | nNewPosition | ) |
int eut::Blob::setData | ( | char * | pData, |
std::size_t | nDataSize, | ||
bool | bCopy = true ) |
Setzt das Blob.
[in] | pData | Ein Zeiger auf einen allocierten Speicher. |
[in] | nDataSize | Die Größe von pData. |
[in] | bCopy | Wenn false, wird pData nicht kopiert, sondern nur m_pBlob auf pData gesetzt. |
void eut::Blob::setMemResponsible | ( | bool | bActiv = true | ) |
Setzt die Verantwortung über den Speicher des Blobs.
[in] | bActiv | Wenn true, übernimmt das Blob die Verantwortung für den Puffer; läßt die Bearbeitung zu und deletet den Puffer im Destruktor. Kann genutzt werden, wenn die aufrufende Instanz Speicher allociert hat und diesen übergeben möchte. Darf diesen dann aber nicht mehr bearbeiten oder löschen. |
void eut::Blob::setNULL | ( | ) |
Setzt m_pBlob auf nullptr und m_nSize und m_nCurrentPosition auf 0, ohne das m_pBlob aus dem Speicher zu entfernen!
int eut::Blob::swap | ( | Blob & | rSwapBlob | ) |
Es werden die Inhalte der Attribute dieses Objektes mit dem des übergebenen Objektes getauscht.
Das geht nur, wenn beide m_bMemResponsible bzw. beide nicht m_bMemResponsible sind.
[in,out] | rSwapBlob | Das Blob mit dem der Inhalt getauscht werden soll. |
|
protected |
Wenn ein char* übergeben wird, welcher nicht kopiert wurde bzw. in der Verantwortung der aufrufenden Instanz verbleiben soll, darf dieser Buffer nicht verändert oder gelöscht werden! Also ist hier die Info auf false gesetzt.
|
protected |
Die aktuelle Position im Blob (Start bei 0).
|
protected |
Die Größe des Blobs.
|
protected |
Das Blob.