cpiDefineParserClass

Finalidade

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.

Sintaxe

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

Parâmetros

returnCode
Recebe o código de retorno da função (saída).Os possíveis códigos de retorno são:
  • 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 o endereço do objeto de fábrica que suporta o analisador nomeado (entrada). O endereço é retornado de cpiCreateParserFactory.
name
O nome da classe de analisador a ser definida (entrada). O comprimento máximo de um nome de classe de analisador é de 8 caracteres.
functbl
O endereço da estrutura CPI_VFT que contém ponteiros para as funções de implementação (entrada).

Valores de Retorno

Nenhuma. Se ocorrer um erro, returnCode indicará o motivo do erro.

Amostra

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);
}
Conceitos relacionados
Analisadores Definidos pelo Usuário
Extensões Definidas pelo Usuário
Tarefas relacionadas
Criando um Analisador em C
Referências relacionadas
cpiCreateParserFactory
Funções de Utilitários do Analisador C
Notices | Trademarks | Downloads | Library | Support | Feedback
Copyright IBM Corporation 1999, 2006 Last updated: 5월 25, 2006
as08250_