CciElement* cpiParent( int* returnCode, const CciElement* targetElement);
Bei erfolgreicher Ausführung wird die Adresse des angeforderten Syntaxelements zurückgegeben. Wenn kein übergeordnetes Element vorhanden ist, wird der Wert null zurückgegeben. Wenn ein Fehler auftritt, wird der Wert null (CCI_NULL_ADDR) zurückgegeben, und der Parameter returnCode gibt die Fehlerursache an.
Dieses Beispiel wurde aus der Parser-Beispieldatei BipSampPluginParser.c entnommen (Zeile 116 bis 173):
void* parseNextItem( CciParser* parser, CciContext* context, CciElement* element ){ void* endMarker; void* startMarker; PARSER_CONTEXT_ST* pc = (PARSER_CONTEXT_ST *)context; CciElement* returnElement = element; CciElement* newElement; size_t markedSize; const CciChar* data; int rc; if (pc->trace) /* Leerzeichen überspringen */ skipWhiteSpace( (PARSER_CONTEXT_ST *)context ); /* Ist das Ende des Puffers erreicht? */ if (pc->iIndex == pc->iSize) return(0); } /* Ist die aktuelle Position innerhalb eines Tags? */ if (pc->iInTag) { if (pc->iCurrentCharacter == chCloseAngle) { /* Das Ende eines Tags wurde erreicht */ pc->iInTag = 0; advance( (PARSER_CONTEXT_ST *)context, parser ); } else if (pc->iCurrentCharacter == chForwardSlash) { /* Möglicherweise wurde 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); }