Esta função retorna o endereço do objeto do elemento da sintaxe que é o pai do elemento de destino especificado.
CciElement* cpiParent(
int* returnCode,
const CciElement* targetElement);
Se bem-sucedida, o endereço do elemento de sintaxe pedido é retornado. Se não houver um elemento pai, zero é retornado. Se um erro ocorrer, zero (CCI_NULL_ADDR) é retornado e o parâmetro returnCode indica a razão do erro.
Este exemplo é obtido do arquivo analisador de amostra BipSampPluginParser.c:
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)
/* Ignorar qualquer espaço em branco */
skipWhiteSpace( (PARSER_CONTEXT_ST *)context );
/* Estamos no final do buffer? */
if (pc->iIndex == pc->iSize)
return(0);
}
/* Estamos na tag? */
if (pc->iInTag) {
if (pc->iCurrentCharacter == chCloseAngle) {
/* Alcançamos o final de uma tag */
pc->iInTag = 0;
advance( (PARSER_CONTEXT_ST *)context, parser );
}
else if (pc->iCurrentCharacter == chForwardSlash) {
/* Podemos ter alcançado o final de uma tag vazia */
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);
}