cpiDefineParserClass

Scopo

Definisce il nome di una classe di programma di analisi che è prevista da un produttore di tali programmi. functbl è un puntatore ad una tabella di funzioni virtuale contenente puntatori alle funzioni di implementazione in C, ovvero quelle funzioni che forniscono la funzione del programma di analisi stesso.

Sintassi

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

Parametri

returnCode
Riceve il codice di ritorno dalla funzione (output).
I codici di ritorno possibili sono:
  • 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
Specifica l'indirizzo dell'oggetto produttore che prevede il programma di analisi specificato (input). L'indirizzo viene restituito da cpiCreateParserFactory.
name
Il nome della classe del programma di analisi da definire (input). La lunghezza massima di un nome di classe di programma di analisi è 8 caratteri.
functbl
L'indirizzo della struttura CPI_VFT che contiene i puntatori alle funzioni di implementazione (input).

Valori di restituzione

Nessuno. Se si verifica un errore, il parametro returnCode indica il motivo dell'errore.

Esempio

Questo esempio è estratto dal file del programma di analisi di esempio BipSampPluginParser.c (da riga 862 a 901):

void LilFactoryExportPrefix * LilFactoryExportSuffix bipGetParserFactory()
{
  /* Dichiara le variabili */
  CciFactory*     factoryObject;
  int rc;
  static CPI_VFT  vftable = {CPI_VFT_DEFAULT};

  /* Prima di procedere è necessario inizializzare tutte le costanti statiche */
  /* che il plug-in potrebbe utilizzare.                                 */
  initParserConstants();

  /* Imposta tabella funzioni con puntatori sulle funzioni di implementazione del programma di analisi */
  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;

  /* Crea il produttore del programma di analisi per questo plugin */
  factoryObject = cpiCreateParserFactory(&rc, constParserFactory);
  if (factoryObject) {
    /* Definisce le classi di messaggio previste dal produttore */
    cpiDefineParserClass(&rc, factoryObject, constPXML, &vftable);
  }
  else {
    /* Errore: Impossibile creare il produttore del programma di analisi */
  }

  /* Restituisce l'indirizzo di questo oggetto produttore al broker */
  return(factoryObject);
}
Concetti correlati
Programmi di analisi definiti dall'utente
Estensioni definite dall'utente
Attività correlate
Creazione di un programma di analisi in C
Riferimenti correlati
cpiCreateParserFactory
Funzioni di utilità del programma di analisi in C
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
as08250_