cpiCreateElement

Finalidad

Esta función crea un elemento de sintaxis por omisión que no está unido a un árbol de sintaxis. El elemento pertenece al analizador especificado. El elemento es incompleto en cuanto a que ninguno de sus atributos (como el tipo o el nombre) está establecido.

Sintaxis

CciElement* cpiCreateElement(
  int*        returnCode,
  CciParser*  parser);

Parámetros

returnCode
Recibe el código de retorno de la función (salida).
parser
Especifica la dirección del objeto de analizador (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

Este ejemplo se ha tomado del archivo de analizador de ejemplo BipSampPluginParser.c (de la línea 198 a la 225):

/* 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 = cpiCreateElement(&rc, parser);
          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
cpiCreateAndInitializeElement
Funciones de programa de utilidad de analizador