cpiCreateParserFactory

Finalidade

Cria uma única instância da fábrica de analisador nomeada no intermediário de mensagens. Ela deve ser chamada somente na função de inicialização bipGetParserFactory que é chamada quando a 'lil' é carregada pelo intermediário de mensagens. Se cpiCreateParserFactory for chamada em qualquer outro momento, os resultados são imprevisíveis.

Sintaxe

CciFactory* cpiCreateParserFactory(
  int*            returnCode,
  CciChar*  name);

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_FAILURE
  • CCI_INV_FACTORY_NAME
  • CCI_INV_OBJECT_NAME
name
Especifica o nome da fábrica que está sendo criada (entrada).

Valores de Retorno

Se bem-sucedida, o endereço do objeto de fábrica de analisador é retornado. Caso contrário, um valor de zero (CCI_NULL_ADDR) é retornado e returnCode indica a razão 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
cpiDefineParserClass
Funções de Utilitários do Analisador C
Notices | Trademarks | Downloads | Library | Support | Feedback
Copyright IBM Corporation 1999, 2006 Last updated: 5월 25, 2006
as08240_