cpiParent

Scopo

Restituisce l'indirizzo dell'oggetto elemento di sintassi che è il parent dell'elemento di destinazione specificato.

Sintassi

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

Parametri

returnCode
Riceve il codice di ritorno dalla funzione (output).
I codici di ritorno possibili sono:
  • CCI_SUCCESS
  • CCI_EXCEPTION
  • CCI_INV_ELEMENT_OBJECT
targetElement
Specifica l'indirizzo dell'oggetto elemento di sintassi di destinazione (input).

Valori di restituzione

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.

Esempio

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);
      }
Concetti correlati
Programmi di analisi definiti dall'utente
Estensioni definite dall'utente
Attività correlate
Creazione di un programma di analisi in C
Riferimenti correlati
Funzioni di utilità del programma di analisi in C
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
as08310_