Diese Funktion gibt die Adresse des Syntaxelementobjekts, das das übergeordnete Element des angegebenen Zielelements ist, zurück.
CciElement* cpiParent(
int* returnCode,
const CciElement* targetElement);
Falls erfolgreich, wird die Adresse des erforderlichen Syntaxelements zurückgegeben. Wenn kein übergeordnetes Element vorhanden ist, wird null zurückgegeben. Wenn ein Fehler auftritt, wird null (CCI_NULL_ADDR) zurückgegeben, und der Rückkehrcodeparameter gibt den Grund für den Fehler an.
Das folgende Beispiel stammt aus der Musterparserdatei BipSampPluginParser.c:
void* parseNextItem(
CciParser* parser,
CciContext* context,
CciElement* element
){
void* Endmarke;
void* Startmarke;
PARSER_CONTEXT_ST* pc = (PARSER_CONTEXT_ST *)context;
CciElement* Rückkehrelement = Element;
CciElement* neues Element;
size_t markedSize;
const CciChar* Daten;
int rc;
if (pc->trace)
/* Überspringen Sie jeden Leerraum */
skipWhiteSpace( (PARSER_CONTEXT_ST *)context );
/* Sind wir am Ende des Puffers? */
if (pc->iIndex == pc->iSize)
return(0);
}
/* Sind wir innerhalb eines Tags? */
if (pc->iInTag) {
if (pc->iCurrentCharacter == chCloseAngle) {
/* Wir sind am Ende eines Tags angelangt */
pc->iInTag = 0;
advance( (PARSER_CONTEXT_ST *)context, parser );
}
else if (pc->iCurrentCharacter == chForwardSlash) {
/* Wir haben möglicherweise das Ende eines leeren Tags erreicht */
advance( (PARSER_CONTEXT_ST *)context, parser );
if (pc->iCurrentCharacter == chCloseAngle) {
pc->iInTag = 0;
advance( (PARSER_CONTEXT_ST *)context, parser );
cpiSetElementCompleteNext(&rc, element, 1);
returnElement = cpiParent(&rc, element);
}