cpiParent

Finalidade

Retorna o endereço do objeto de elemento de sintaxe que é o pai do elemento de destino especificado.

Sintaxe

CciElement* cpiParent(
    int*            returnCode,
    const CciElement*  targetElement);

Parâmetros

returnCode
Recebe o código de retorno da função (saída).
Os possíveis códigos de retorno são:
  • CCI_SUCCESS
  • CCI_EXCEPTION
  • CCI_INV_ELEMENT_OBJECT
targetElement
Especifica o endereço do objeto do elemento de sintaxe de destino (entrada).

Valores de Retorno

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.

Amostra

Este exemplo foi tirado do arquivo do analisador de amostra BipSampPluginParser.c (linhas 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)

    /* 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);
      }
Conceitos relacionados
Analisadores Definidos pelo Usuário
Extensões Definidas pelo Usuário
Tarefas relacionadas
Criando um Analisador em C
Referências relacionadas
Funções de Utilitários do Analisador C
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
as08310_