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
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
as08250_