cpiCreateAndInitializeElement

Finalidad

Crea un elemento de sintaxis, propiedad del analizador especificado, que no está conectado 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).
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). Esta dirección se pasa al analizador como parámetro de la función de implementación cpiCreateContext.
type
Especifica el tipo del elemento que se está creando (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 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

/* 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 = 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: Creado nuevo elemento NAMEVALUE; 
                    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 en C
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
as08390_