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.
void cpiDefineParserClass( int* returnCode, CciFactory* factoryObject, CciChar* name, CPI_VFT* functbl);
Nessuno. Se si verifica un errore, il parametro returnCode indica il motivo dell'errore.
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); }