cpiCreateAndInitializeElement

Finalidad

Esta función crea un elemento de sintaxis, que pertenece al analizador especificado, que no está unido a un árbol de sintaxis. El elemento se inicializa parcialmente con los valores de los parámetros type, name, firstChildComplete y lastChildComplete.

Sintaxis

CciElement* cpiCreateAndInitializeElement(
  int*            returnCode,
  CciParser*      parser,
  CciElementType  type,
  const CciChar*  name,
  CciBool         firstChildComplete,
  CciBool         lastChildComplete);

Parámetros

returnCode
Recibe el código de retorno de la función (salida).
parser
Especifica la dirección del objeto de analizador (entrada). Esta dirección se pasa al plug-in como un parámetro de la función de implementación cpiCreateContext.
type
Especifica el tipo de elemento que se va a crear (entrada).
name
Especifica un nombre descriptivo para el elemento (entrada).
firstChildComplete
Especifica un valor para el distintivo firstChildComplete del elemento de sintaxis (entrada).
lastChildComplete
Especifica un valor para el distintivo lastChildComplete del elemento de sintaxis (entrada).

Valores de retorno

Si la función se ejecuta correctamente, se devuelve la dirección del nuevo objeto de elemento. De lo contrario, se devuelve el valor cero (CCI_NULL_ADDR), y returnCode indica la causa del error.

Ejemplo

/* Avanzar hacia el final del valor */
          while (pc->iCurrentCharacter != quoteChar) {
            advance( (PARSER_CONTEXT_ST *)context, parser );
          }

          /* Obtener un puntero al final del código                      */
          endMarker = (char*)pc->iBuffer+(int)pc->iIndex;

          /* Calcular el tamaño del código                               */
          markedSize = (size_t)endMarker-(int)startMarker;

          /* Convertir el valor de atributo en formato de intermediario  */
          data = CciNString((char *)startMarker, markedSize, pc->iCcsid);

          /* Crear un nuevo elemento nombre-valor para el atributo       */
          newElement = cpiCreateAndInitializeElement(&rc, parser, type, name);
          cpiSetElementType(&rc, newElement, CCI_ELEMENT_TYPE_NAME_VALUE);
          cpiSetElementName(&rc, newElement, data);
          if (pc->trace) {
            const char * mbData = mbString(data, pc->iCcsid);
            fprintf(pc->tracefile, "PLUGIN: Created new NAMEVALUE element; 
                    object=0x%x type=0x%x name=",
                    newElement, CCI_ELEMENT_TYPE_NAME_VALUE);
            fprintf(pc->tracefile, "%s\n", mbData);
            fflush(pc->tracefile);
            free((void *)mbData);
          }
          /* Liberar la memoria creada en CciNString()                   */
          free((void *)data);

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

Tareas relacionadas
Creación de un analizador en C

Referencia relacionada
cpiCreateElement
Funciones de programa de utilidad de analizador