Define o nome de uma classe de analisador que é suportada por uma fábrica de analisador. functbl é um ponteiro para uma tabela de função virtual que contém ponteiros para as funções de implementação C, ou seja, as funções que fornecem a função do analisador em si.
void cpiDefineParserClass( int* returnCode, CciFactory* factoryObject, CciChar* name, CPI_VFT* functbl);
Nenhuma. Se ocorrer um erro, returnCode indicará o motivo do erro.
Este exemplo foi tirado do arquivo do analisador de amostra BipSampPluginParser.c (linhas 862 a 901):
void LilFactoryExportPrefix * LilFactoryExportSuffix bipGetParserFactory() { /* Declarar variáveis */ CciFactory* factoryObject; int rc; static CPI_VFT vftable = {CPI_VFT_DEFAULT}; /* Antes de prosseguir é preciso inicializar todas as constantes estáticas */ /* que podem ser utilizadas pelo plug-in. */ initParserConstants(); /* Configurar a tabela de função com ponteiros para funções de implementação de analisador */ 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; /* Criar a fábrica de analisador para este plugin */ factoryObject = cpiCreateParserFactory(&rc, constParserFactory); if (factoryObject) { /* Definir as classes de mensagem suportadas pela fábrica */ cpiDefineParserClass(&rc, factoryObject, constPXML, &vftable); } else { /* Erro: Incapaz de criar a fábrica de analisador */ } /* Retornar o endereço deste objeto de fábrica para o intermediário */ return(factoryObject); }