Esta función crea una sola instancia de la fábrica del analizador nombrada en el intermediario de mensajes. Sólo debe invocarse en la función de inicialización bipGetParserFactory, que se invoca cuando el intermediario de mensajes carga la 'lil'. Si se invoca cpiCreateParserFactory en cualquier otro momento, los resultados son imprevisibles.
CciFactory* cpiCreateParserFactory( int* returnCode, CciChar* name);
Si la función se ejecuta correctamente, se devuelve la dirección del objeto de fábrica del analizador. De lo contrario, se devuelve el valor cero (CCI_NULL_ADDR), y returnCode indica la causa del error.
Este ejemplo se ha tomado del archivo de analizador de ejemplo BipSampPluginParser.c (de la línea 862 a la 901):
void LilFactoryExportPrefix * LilFactoryExportSuffix bipGetParserFactory() { /* Declarar variables */ CciFactory* factoryObject; int rc; static CPI_VFT vftable = {CPI_VFT_DEFAULT}; /* Antes de seguir, debemos inicializar todas las constantes estáticas */ /* que el plug-in pueda utilizar. */ initParserConstants(); /* Configurar tabla de funciones con punteros para analizar funciones */ /* de implementación */ 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 del analizador para este plug-in */ factoryObject = cpiCreateParserFactory(&rc, constParserFactory); if (factoryObject) { /* Definir las clases de mensaje que soporta la fábrica */ cpiDefineParserClass(&rc, factoryObject, constPXML, &vftable); } else { /* Error: No se ha podido crear la fábrica del analizador */ } /* Devolver 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
cpiDefineParserClass
Funciones de programa de utilidad de analizador
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
as08240_ |