cpiCreateElement

Finalidad

Crea un elemento de sintaxis por omisión que no está conectado a un árbol de sintaxis. El elemento es propiedad del analizador especificado. El elemento está incompleto porque no se ha establecido ninguno de sus atributos (por ejemplo el tipo o nombre).

Sintaxis

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

Parámetros

returnCode
Recibe el código de retorno de la función (salida).
Los códigos de retorno posibles son:
  • CCI_SUCCESS
  • CCI_EXCEPTION
  • CCI_FAILURE
  • CCI_INV_PARSER_OBJECT
parser
Especifica la dirección del objeto de analizador (entrada).

Valores de retorno

Si la ejecución se realiza satisfactoriamente, se devuelve la dirección del objeto de elemento nuevo. De lo contrario, se devuelve un valor de cero (CCI_NULL_ADDR) y returnCode indica la razón del error.

Ejemplo

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

/* Avanzar hasta 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 a formato de intermediario */
          data = CciNString((char *)startMarker, markedSize, pc->iCcsid);

          /* Crear un elemento de nombre-valor nuevo 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 en C
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
as08400_