Information für den Index aus welcher Klasse welches Attribut mit wie viel Zeichen zum Index gehört.
Mehr ...
#include <GloClassInfoIndex.h>
Information für den Index aus welcher Klasse welches Attribut mit wie viel Zeichen zum Index gehört.
- Copyright
- © 2010 Helmut Jakoby
- Autor
- Helmut Jakoby
◆ 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] | rIndexPathVector | Der Pfad zum Index. Siehe auch m_IndexPathVector. |
[in] | iSignificantCharacter | Die Anzahl der Zeichen welche für den Index genutzt werden. Wenn 0, sind alle Zeichen signifikant. |
[in] | bIsNum | 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). |
◆ IndexAttributeItem() [3/4]
glo::ClassInfoIndex::IndexAttributeItem::IndexAttributeItem |
( |
const std::string & | rsIndexPath, |
|
|
int | iSignificantCharacter, |
|
|
bool | bIsNum ) |
Konstruktor mit Parameterübergabe.
- Parameter
-
[in] | rsIndexPath | Der 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] | iSignificantCharacter | Die Anzahl der Zeichen welche für den Index genutzt werden. Wenn 0, sind alle Zeichen signifikant. |
[in] | bIsNum | 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). |
◆ IndexAttributeItem() [4/4]
glo::ClassInfoIndex::IndexAttributeItem::IndexAttributeItem |
( |
const IndexAttributeItem & | rT | ) |
|
Copy-Konstruktor.
- Parameter
-
[in] | rT | Von diesem Objekt werden die Daten übernommen. |
◆ ~IndexAttributeItem()
virtual glo::ClassInfoIndex::IndexAttributeItem::~IndexAttributeItem |
( |
| ) |
|
|
virtual |
◆ adjustAttributeTypeIfExisting()
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] | rAttributeID | Die AttributeID, bei deren entsprechenden Attribut eine Typänderung vorgenommen wurde. |
[in] | eNewType | Der neue Typ das Attributes. |
[in] | pSchemaInterface | Das 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] | rExistingAttributeID | Die zu ändernde AttributeID. |
[in] | rNewAttributeID | Die 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 | ) |
|
◆ getAttributeIdPositionInIndex()
long glo::ClassInfoIndex::IndexAttributeItem::getAttributeIdPositionInIndex |
( |
const AttributeID & | rAttributeID | ) |
const |
◆ getIndexPath()
std::vector< AttributeID > glo::ClassInfoIndex::IndexAttributeItem::getIndexPath |
( |
| ) |
const |
◆ 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] | rSchemaInterface | Das 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 |
◆ 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 |
◆ operator!=()
Vergleichsoperator, es werden alle Attribute verglichen.
- Parameter
-
[in] | rT | Das mit diesem zu vergleichende Objekt. |
◆ operator=()
Zuweisungsoperator.
- Parameter
-
[in] | rT | Von diesem Objekt werden die Daten übernommen. |
◆ operator==()
Vergleichsoperator, es werden alle Attribute verglichen.
- Parameter
-
[in] | rT | Das 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] | rsIndexPath | Der Indexpfad. |
◆ setIndexPath() [2/2]
void glo::ClassInfoIndex::IndexAttributeItem::setIndexPath |
( |
const std::vector< AttributeID > & | rIndexPathVector | ) |
|
Setzt den Indexpfad in m_IndexPathVector.
- Parameter
-
[in] | rIndexPathVector | Der 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] | bIsNum | Siehe 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] | iSignificantCharacter | Die Anzahl der Zeichen welche für den Index genutzt werden. |
◆ 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: