cpiParent

Finalidad

Esta función devuelve la dirección del objeto de elemento de sintaxis que es el elemento superior del elemento de destino especificado.

Sintaxis

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

Parámetros

returnCode
Recibe el código de retorno de la función (salida).
targetElement
Especifica la dirección del objeto de elemento de sintaxis de destino (entrada).

Valores de retorno

Si la función se ejecuta correctamente, se devuelve la dirección del objeto de sintaxis solicitado. Si no hay un elemento superior, se devuelve cero. Si se produce un error, se devuelve cero (CCI_NULL_ADDR), y el parámetro returnCode indica la causa de dicho error.

Ejemplo

Este ejemplo se ha tomado del archivo de analizador de ejemplo BipSampPluginParser.c (de la línea 116 a la 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) 

  /* Omitir los espacios en blanco */
  skipWhiteSpace( (PARSER_CONTEXT_ST *)context );

  /* ¿Estamos en el final del almacenamiento intermedio? */
  if (pc->iIndex == pc->iSize)
        return(0);
  }

  /* ¿Estamos dentro de un código? */
  if (pc->iInTag) {

    if (pc->iCurrentCharacter == chCloseAngle) {

      /* Hemos llegado al final de un código */
      pc->iInTag = 0;
      advance( (PARSER_CONTEXT_ST *)context, parser );
    }
    else if (pc->iCurrentCharacter == chForwardSlash) {

      /* Es posible que hayamos llegado al final de un código vacío */
      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);
      }

Conceptos relacionados
Analizadores definidos por el usuario
Extensiones definidas por el usuario

Tareas relacionadas
Creación de un analizador en C

Referencia relacionada
Funciones de programa de utilidad de analizador