CciElement* cpiParent( int* returnCode, const CciElement* targetElement);
Se ha esito positivo, viene restituito l'indirizzo dell'elemento di sintassi richiesto. Se non è presente alcun elemento parent, viene restituito zero. Se si verifica un errore, viene restituito un valore zero (CCI_NULL_ADDR) e il parametro returnCode indica il motivo dell'errore.
Questo esempio è estratto dal file del programma di analisi di esempio BipSampPluginParser.c (da riga 116 a 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) /* Ignora gli spazi vuoti */ skipWhiteSpace( (PARSER_CONTEXT_ST *)context ); /* Si è alla fine del buffer? */ if (pc->iIndex == pc->iSize) return(0); } /* Si è all'interno di una tag? */ if (pc->iInTag) { if (pc->iCurrentCharacter == chCloseAngle) { /* E' stata raggiunta la fine di una tag */ pc->iInTag = 0; advance( (PARSER_CONTEXT_ST *)context, parser ); } else if (pc->iCurrentCharacter == chForwardSlash) { /* E' possibile che sia stata raggiunta la fine di una tag vuota*/ 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); }