cpiDefineParserClass

Finalidad

Define el nombre de una clase de analizador soportada por una fábrica de analizador. functbl es un puntero a una tabla de funciones virtual que contiene punteros a las funciones de implementación en C, es decir, las funciones que proporcionan la función del propio analizador.

Sintaxis

void cpiDefineParserClass(
  int*         returnCode,
  CciFactory*  factoryObject,
  CciChar*     name,
  CPI_VFT*     functbl);

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_INV_FACTORY_OBJECT
  • CCI_INV_PARSER_NAME
  • CCI_PARSER_NAME_TOO_LONG
  • CCI_INV_OBJECT_NAME
  • CCI_INV_VFTP
  • CCI_MISSING_IMPL_FUNCTION
  • CCI_INV_IMPL_FUNCTION
  • CCI_NAME_EXISTS
factoryObject
Especifica la dirección del objeto de fábrica que soporta el analizador mencionado (entrada). La dirección se devuelve de cpiCreateParserFactory.
name
Nombre de la clase de analizador que se debe definir (entrada). La longitud máxima de un nombre de clase de analizador es de 8 caracteres.
functbl
Dirección de la estructura CPI_VFT que contiene punteros a las funciones de implementación (entrada).

Valores de retorno

Ninguno. Si se produce un error, returnCode indica la razón del mismo.

Ejemplo

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

void LilFactoryExportPrefix * LilFactoryExportSuffix bipGetParserFactory()
{
  /* Declarar variables */
  CciFactory*     factoryObject;
  int             rc;
  static CPI_VFT  vftable = {CPI_VFT_DEFAULT};

  /* Antes de continuar es necesario inicializar todas las constantes estáticas */
  /* que es posible que utilice el plug-in.                                 */
  initParserConstants();

  /* Configurar tabla de funciones con punteros a funciones de implementación de analizador */
  vftable.iFpCreateContext            = cpiCreateContext;
  vftable.iFpParseBufferEncoded       = cpiParseBufferEncoded;
  vftable.iFpParseFirstChild          = cpiParseFirstChild;
  vftable.iFpParseLastChild           = cpiParseLastChild;
  vftable.iFpParsePreviousSibling     = cpiParsePreviousSibling;
  vftable.iFpParseNextSibling         = cpiParseNextSibling;
  vftable.iFpWriteBufferEncoded       = cpiWriteBufferEncoded;
  vftable.iFpDeleteContext            = cpiDeleteContext;
  vftable.iFpSetElementValue          = cpiSetElementValue;
  vftable.iFpElementValue             = cpiElementValue;
  vftable.iFpNextParserClassName      = cpiNextParserClassName;
  vftable.iFpSetNextParserClassName   = cpiSetNextParserClassName;
  vftable.iFpNextParserEncoding       = cpiNextParserEncoding;
  vftable.iFpNextParserCodedCharSetId = cpiNextParserCodedCharSetId;

  /* Crear la fábrica de analizador para este plug-in */
  factoryObject = cpiCreateParserFactory(&rc, constParserFactory);
  if (factoryObject) {
    /* Definir las clases de mensaje soportadas por la fábrica */
    cpiDefineParserClass(&rc, factoryObject, constPXML, &vftable);
  }
  else {
    /* Error: No se ha podido crear fábrica de analizador */
  }

  /* Devolver la dirección de este objeto de fábrica al intermediario */
  return(factoryObject);
}
Conceptos relacionados
Analizadores definidos por el usuario
Extensiones definidas por el usuario
Tareas relacionadas
Creación de un analizador en C
Referencia relacionada
cpiCreateParserFactory
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
as08250_