GlobalObjects
Lade ...
Suche ...
Keine Treffer
glo::ClassInfoIndex::IndexAttributeItem Klassenreferenz

Information für den Index aus welcher Klasse welches Attribut mit wie viel Zeichen zum Index gehört. Mehr ...

#include <GloClassInfoIndex.h>

Öffentliche Methoden

 IndexAttributeItem (const IndexAttributeItem &rT)
 
 IndexAttributeItem (const std::string &rsIndexPath, int iSignificantCharacter, bool bIsNum)
 
 IndexAttributeItem (const std::vector< AttributeID > &rIndexPathVector, int iSignificantCharacter, bool bIsNum)
 
virtual ~IndexAttributeItem ()
 
int adjustAttributeTypeIfExisting (const AttributeID &rAttributeID, EnDataType eNewType, SchemaInterface *pSchemaInterface)
 
bool changeAtributeIdIfExisting (const AttributeID &rExistingAttributeID, const AttributeID &rNewAttributeID)
 
int eraseAttributeIdIfExisting (const AttributeID &rAttributeID)
 
long getAttributeIdPositionInIndex (const AttributeID &rAttributeID) const
 
std::vector< AttributeIDgetIndexPath () const
 
std::string getIndexPathAsIdString () const
 
std::string getIndexPathAsNameString (const SchemaInterface &rSchemaInterface) const
 
std::size_t getIndexPathSize () const
 
bool getIsNum () const
 
AttributeID getLastIndexClassInfoAttribute () const
 
int getSignificantCharacter () const
 
bool isInIndexPath (const AttributeID &rAttributeID) const
 
ClassInfoIndex::IndexAttributeItemoperator= (const IndexAttributeItem &rT)
 
void setIndexPath (const std::string &rsIndexPath)
 
void setIndexPath (const std::vector< AttributeID > &rIndexPathVector)
 
void setIsNum (bool bIsNum)
 
void setSignificantCharacter (int iSignificantCharacter)
 
bool operator== (const ClassInfoIndex::IndexAttributeItem &rT) const
 Vergleichsoperator, es werden alle Attribute verglichen.
 
bool operator!= (const ClassInfoIndex::IndexAttributeItem &rT) const
 Vergleichsoperator, es werden alle Attribute verglichen.
 

Private Methoden

 IndexAttributeItem ()
 

Private Attribute

bool m_bIsNum
 
int m_iInstanzInfo
 
std::vector< AttributeIDm_IndexPathVector
 
int m_iSignificantCharacter
 

Ausführliche Beschreibung

Information für den Index aus welcher Klasse welches Attribut mit wie viel Zeichen zum Index gehört.

Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ IndexAttributeItem() [1/4]

glo::ClassInfoIndex::IndexAttributeItem::IndexAttributeItem ( )
private

Der Standard-Konstruktor steht nicht zur Verfügung.

◆ IndexAttributeItem() [2/4]

glo::ClassInfoIndex::IndexAttributeItem::IndexAttributeItem ( const std::vector< AttributeID > & rIndexPathVector,
int iSignificantCharacter,
bool bIsNum )

Konstruktor mit Parameterübergabe.

Parameter
[in]rIndexPathVectorDer Pfad zum Index. Siehe auch m_IndexPathVector.
[in]iSignificantCharacterDie Anzahl der Zeichen welche für den Index genutzt werden. Wenn 0, sind alle Zeichen signifikant.
[in]bIsNumWenn true, wird der Index als Zahl betrachtet (Leerzeichen werden ggf. an den Anfang eingefügt). Wenn false, wird der Index als String betrachtet ( es werden ggf. Leerzeichen ans Ende angehängt).

◆ IndexAttributeItem() [3/4]

glo::ClassInfoIndex::IndexAttributeItem::IndexAttributeItem ( const std::string & rsIndexPath,
int iSignificantCharacter,
bool bIsNum )

Konstruktor mit Parameterübergabe.

Parameter
[in]rsIndexPathDer Pfad zum Index als String, wobei die einzelnen AttributeID's getrennt durch einen Punkt getrennt sind.
Z.B.: wenn der gelieferte String folgendermaßen aussieht: "4.34.6.2.5.5" bedeutet das, daß der Indexpfad aus drei AttributeID's besteht -> '4.34', '6.2' und '5.5'. die erste Ziffer ist die Klassen-ID und die zweite Ziffer die eindeutige Position.
[in]iSignificantCharacterDie Anzahl der Zeichen welche für den Index genutzt werden. Wenn 0, sind alle Zeichen signifikant.
[in]bIsNumWenn true, wird der Index als Zahl betrachtet (Spaces werden ggf. an den Anfang eingefügt). Wenn false, wird der Index als String betrachtet ( es werden ggf. Spaces ans Ende angehängt).

◆ IndexAttributeItem() [4/4]

glo::ClassInfoIndex::IndexAttributeItem::IndexAttributeItem ( const IndexAttributeItem & rT)

Copy-Konstruktor.

Parameter
[in]rTVon diesem Objekt werden die Daten übernommen.

◆ ~IndexAttributeItem()

virtual glo::ClassInfoIndex::IndexAttributeItem::~IndexAttributeItem ( )
virtual

Destruktor.

Dokumentation der Elementfunktionen

◆ adjustAttributeTypeIfExisting()

int glo::ClassInfoIndex::IndexAttributeItem::adjustAttributeTypeIfExisting ( const AttributeID & rAttributeID,
EnDataType eNewType,
SchemaInterface * pSchemaInterface )

Prüft, ob übergebene AttributeID im m_IndexPathVector enthalten ist.
Wenn als Pfad zum eigentlichen Indexattribut enthalten, darf der Typ nur ClassInfoAttribute::eEMBEDDED und ClassInfoAttribute::ePOINTER sein.
Wenn als das eigentliche Index-Attribut enthalten, wird ggf. ClassInfoIndex::IndexAttributeItem::m_iSignificantCharacter (wird bei Bedarf nur gekürzt, ansonsten belassen) und ClassInfoIndex::IndexAttributeItem::m_bIsNum an den neuen Typ angepasst oder wenn nicht als Index-Attribut geeignet aus dem Index entfernt.

Parameter
[in]rAttributeIDDie AttributeID, bei deren entsprechenden Attribut eine Typänderung vorgenommen wurde.
[in]eNewTypeDer neue Typ das Attributes.
[in]pSchemaInterfaceDas SchemaInterface wird gebraucht, um Attribute zu prüfen.
Rückgabe
Wenn 1, konnte der Indexeintrag angepasst werden.
Wenn 0, ist übergebene AttributeID nicht im m_IndexPathVector enthalten oder es war nichts zu tun (z.B. eNewType war schon).
Ein Wert < 0 zeigt einen Fehler an bzw. eine Anpassung ist nicht möglich.

◆ changeAtributeIdIfExisting()

bool glo::ClassInfoIndex::IndexAttributeItem::changeAtributeIdIfExisting ( const AttributeID & rExistingAttributeID,
const AttributeID & rNewAttributeID )

Prüft, ob erste übergebene AttributeID im m_IndexPathVector enthalten ist und ändert diese in die zweite übergebene AttributeID.
Wenn sich z.B. die Position eines Atrtributs in einer ClassInfo geändert hat, änderts sich in der AttributeID die AttributeID::m_ulFieldPos. Damit ein Indexattribute auf das richtige Attribut zeigt, werden hier alle Einträge im m_IndexPathVector geprüft und ggf. angepasst.

Parameter
[in]rExistingAttributeIDDie zu ändernde AttributeID.
[in]rNewAttributeIDDie AttributeID mit den zu übernehmenden Werten.
Rückgabe
Wenn true, ist eine AttributeID mit Werten der rExistingAttributeID im m_IndexPathVector vorhanden und in die Werte von rNewAttributeID geändert worden.
Zu beachten
Wenn rExistingAttributeID und rNewAttributeID gleich sind, wird nichts unternommen und es wird false geliefert.

◆ eraseAttributeIdIfExisting()

int glo::ClassInfoIndex::IndexAttributeItem::eraseAttributeIdIfExisting ( const AttributeID & rAttributeID)

Prüft, ob übergebene AttributeID im m_IndexPathVector enthalten ist und entfernt diesen Eintrag.

Parameter
[in]rAttributeIDDie AttributeID.
Rückgabe
Wenn 1, wurde der Indexeintrag entfernt.
Wenn 0, ist übergebene AttributeID nicht im m_IndexPathVector enthalten.
Ein Wert ERR_CORRUPT_INDEX bedeutet, das der letzte Eintrag entfernt worden ist.

◆ getAttributeIdPositionInIndex()

long glo::ClassInfoIndex::IndexAttributeItem::getAttributeIdPositionInIndex ( const AttributeID & rAttributeID) const

Prüft, ob übergebene AttributeID im m_IndexPathVector enthalten ist und liefert die Position im m_IndexPathVector.

Parameter
[in]rAttributeIDDie zu prüfende AttributeID.
Rückgabe
Wenn ERR_RANGE, wurde die AttributeID nicht im m_IndexPathVector gefunden.
Ansonsten ist das die Position (angefangen bei 0) in der m_IndexPathVector, wo die übergebene AttributeID referenziert wird.

◆ getIndexPath()

std::vector< AttributeID > glo::ClassInfoIndex::IndexAttributeItem::getIndexPath ( ) const

Liefert den Indexpfad aus m_IndexPathVector als Kopie.

Rückgabe
Der IndexPathVector.

◆ getIndexPathAsIdString()

std::string glo::ClassInfoIndex::IndexAttributeItem::getIndexPathAsIdString ( ) const

Liefert den Indexpfad aus m_IndexPathVector als String, wobei die einzelnen AttributeID's getrennt durch einen Punkt geliefert werden.
Z.B.: wenn der gelieferte String folgendermaßen aussieht: "4.34.6.2.5.5" bedeutet das, daß der Indexpfad aus drei AttributeID's besteht -> '4.34', '6.2' und '5.5'. die erste Ziffer ist die Klassen-ID und die zweite Ziffer die eindeutige Position des Index-Attributs.

Rückgabe
Der IndexPath als String.
Siehe auch
AttributeID

◆ getIndexPathAsNameString()

std::string glo::ClassInfoIndex::IndexAttributeItem::getIndexPathAsNameString ( const SchemaInterface & rSchemaInterface) const

Liefert den Indexpfad aus m_IndexPathVector als String, wobei die einzelnen Klassen- und Attributname getrennt durch einen Punkt geliefert werden.

Parameter
[in]rSchemaInterfaceDas SchemaInterface wird gebraucht, um die Namen der Index-Attribute zu ermitteln.
Rückgabe
Der IndexPath als String.

◆ getIndexPathSize()

std::size_t glo::ClassInfoIndex::IndexAttributeItem::getIndexPathSize ( ) const

Liefert die Anzahl der Einträge (size) von m_IndexPathVector.

Rückgabe
Der IndexPathVector.

◆ getIsNum()

bool glo::ClassInfoIndex::IndexAttributeItem::getIsNum ( ) const

Liefert, ob der Index numerisch oder nicht. Wenn true, wird der Index als Zahl betrachtet (Spaces werden ggf. an den Anfang eingefügt). Wenn false, wird der Index als String betrachtet (es werden ggf. Spaces ans Ende angehängt).

Rückgabe
Siehe Beschreibung.

◆ getLastIndexClassInfoAttribute()

AttributeID glo::ClassInfoIndex::IndexAttributeItem::getLastIndexClassInfoAttribute ( ) const

Liefert aus dem m_IndexPathVector die AttributeID vom letzten KlassenAttribut im Indexpfad.

Rückgabe
Die letzte AttributeID aus dem Indexpfad. Wenn diese NULL_PTR, das sollte immer geprüft werden, giebt es keinen Indexpfad.

◆ getSignificantCharacter()

int glo::ClassInfoIndex::IndexAttributeItem::getSignificantCharacter ( ) const

Liefert die Anzahl der Zeichen, welche für den Index genutzt werden. Wenn 0, sind alle Zeichen signifikant.

Rückgabe
Die Anzahl der Zeichen welche für den Index genutzt werden.

◆ isInIndexPath()

bool glo::ClassInfoIndex::IndexAttributeItem::isInIndexPath ( const AttributeID & rAttributeID) const

Prüft, ob übergebene AttributeID im m_IndexPathVector enthalten ist.

Parameter
[in]rAttributeIDDie zu prüfende AttributeID.
Rückgabe
Wenn true, ist das übergebene AttributeID im m_IndexPathVector.

◆ operator!=()

bool glo::ClassInfoIndex::IndexAttributeItem::operator!= ( const ClassInfoIndex::IndexAttributeItem & rT) const

Vergleichsoperator, es werden alle Attribute verglichen.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

◆ operator=()

ClassInfoIndex::IndexAttributeItem & glo::ClassInfoIndex::IndexAttributeItem::operator= ( const IndexAttributeItem & rT)

Zuweisungsoperator.

Parameter
[in]rTVon diesem Objekt werden die Daten übernommen.

◆ operator==()

bool glo::ClassInfoIndex::IndexAttributeItem::operator== ( const ClassInfoIndex::IndexAttributeItem & rT) const

Vergleichsoperator, es werden alle Attribute verglichen.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

◆ setIndexPath() [1/2]

void glo::ClassInfoIndex::IndexAttributeItem::setIndexPath ( const std::string & rsIndexPath)

Setzt den Indexpfad in m_IndexPathVector aus übergebenen String, wobei die einzelnen AttributeID's getrennt durch einen Punkt getrennt sind.
Z.B.: wenn der gelieferte String folgendermaßen aussieht: "4.34.6.2.5.5" bedeutet das, daß der Indexpfad aus drei AttributeID's besteht -> '4.34', '6.2' und '5.5'. die erste Ziffer ist die Klassen-ID und die zweite Ziffer die eindeutige Position.

Parameter
[in]rsIndexPathDer Indexpfad.

◆ setIndexPath() [2/2]

void glo::ClassInfoIndex::IndexAttributeItem::setIndexPath ( const std::vector< AttributeID > & rIndexPathVector)

Setzt den Indexpfad in m_IndexPathVector.

Parameter
[in]rIndexPathVectorDer Indexpfad.

◆ setIsNum()

void glo::ClassInfoIndex::IndexAttributeItem::setIsNum ( bool bIsNum)

Kennzeichnet den Index als numerisch oder nicht. Wenn true, wird der Index als Zahl betrachtet (Leerzeichen werden ggf. an den Anfang eingefügt). Wenn false, wird der Index als String betrachtet (es werden ggf. Leerzeichen ans Ende angehängt).

Parameter
[in]bIsNumSiehe Beschreibung.

◆ setSignificantCharacter()

void glo::ClassInfoIndex::IndexAttributeItem::setSignificantCharacter ( int iSignificantCharacter)

Setzt Anzahl der Zeichen welche für den Index genutzt werden. Wenn 0, sind alle Zeichen signifikant.

Parameter
[in]iSignificantCharacterDie Anzahl der Zeichen welche für den Index genutzt werden.

Dokumentation der Datenelemente

◆ m_bIsNum

bool glo::ClassInfoIndex::IndexAttributeItem::m_bIsNum
private

Wenn true, wird der Index als Zahl betrachtet (Leerzeichen werden ggf. an den Anfang eingefügt). Wenn false, wird der Index als String betrachtet (es werden ggf. Leerzeichen ans Ende angehängt).

◆ m_iInstanzInfo

int glo::ClassInfoIndex::IndexAttributeItem::m_iInstanzInfo
private

Für Debug-Zwecke kann beim Instantiieren hier ein Wert != 0 reingeschrieben werden.
Es muss in den ctor's und dtor ein Breakpoint bei der Zuweisung "int t_iBreakPoint = 1;" gesetzt werden.
Im dtor wird m_iInstanzInfo abgefragt und bei != 1 am Breakpoint bei "int t_iBreakPoint = 1;" angehalten.
Wozu das Ganze? Wenn z.B. mehrere Objekt dieser Klasse instantiiert werden und nur ein Teil wieder aus dem Speicher entfernt wird.
Wenn man die Stelle weiß, an der das jeweilige Objekt instantiiert wird, welches ein Speicherleck erzeugt, kann dort ein Haltepunkt gesetzt werden. Im ctor des Objekts dieser Klasse wird m_iInstanzInfo ein eindeutiger Wert zugewiesen. Durch Abfrage im dtor kann man nun ermitteln welches Objekt nicht aus dem Speicher entfernt wird.

◆ m_IndexPathVector

std::vector< AttributeID > glo::ClassInfoIndex::IndexAttributeItem::m_IndexPathVector
private

Ein Indexpfad ist immer so aufgebaut: "Klassenbezeichnung.Attributbezeichnung"
Die Klassenbezeichnung muss immer die der Klasse bzw. Oberklasse des zu indizierenden Objekts sein. Die Attributbezeichnung ist das Attribut, welches im Index genutzt wird.
Da eine Klasse z.B. auch eine eingebette Klassen als Attribut haben kann, können auch die Attribute der eingebetteten Klassen zum indizieren genutzt werden.
Solch ein Index ist immer so aufgebaut: "Klassenbezeichnung.Attributbezeichnung.2_Klassenbezeichnung.2_Attributbezeichnung[20]"
In diesem Vector ist der Indexpfad durch die enthaltenen Objekte vom Typ AttributeID realisiert.

Siehe auch
AttributeID

◆ m_iSignificantCharacter

int glo::ClassInfoIndex::IndexAttributeItem::m_iSignificantCharacter
private

Die Anzahl der Zeichen welche für den Index genutzt werden. Wenn 0, sind alle Zeichen signifikant.


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