cpiDefineParserClass

Zweck

Diese Funktion definiert den Namen einer Parser-Klasse, die von einer Parser-Factory unterstützt wird. functbl ist ein Zeiger auf eine virtuelle Funktionstabelle, die Zeiger auf die C-Implementierungsfunktionen enthält, d. h. die Funktionen, die die Funktion des Parsers selbst bereitstellen.

Syntax

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

Parameter

returnCode
Empfängt den Rückkehrcode von der Funktion (Ausgabe). Mögliche Rückkehrcodes sind:
  • 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
Gibt die Adresse des Factory-Objekts an, das den angegebenen Parser unterstützt (Eingabe). Die Adresse wird von cpiCreateParserFactory zurückgegeben.
name
Der Name der Parser-Klasse, die definiert werden soll (Eingabe). Die maximal zulässige Länge einer Parser-Klasse beträgt 8 Zeichen.
functbl
Die Adresse der CPI_VFT-Struktur, die Zeiger auf die Implementierungsfunktionen enthält (Eingabe).

Rückgabewerte

Keine. Wenn ein Fehler auftritt, gibt returnCode die Fehlerursache an.

Beispiel

Dieses Beispiel wurde aus der Parser-Beispieldatei BipSampPluginParser.c entnommen (Zeile 862 bis 901):

void LilFactoryExportPrefix * LilFactoryExportSuffix bipGetParserFactory()
{
/* Variablen deklarieren */
CciFactory*     factoryObject;
int             rc;
static CPI_VFT  vftable = {CPI_VFT_DEFAULT};
/* Vor dem Fortfahren müssen alle statischen Konstanten initialisiert werden, */
/* die unter Umständen von dem Plug-in verwendet werden. */
initParserConstants();
/* Konfigurations-Funktionstabelle mit Zeigern auf Parser-Implementierungsfunktionen */
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;
/* Erstellen der Parser-Factory für dieses Plug-in */
factoryObject = cpiCreateParserFactory(&rc, constParserFactory);
if (factoryObject) {
/* Definition der Nachrichtenklassen, die von dieser Factory unterstützt werden */
cpiDefineParserClass(&rc, factoryObject, constPXML, &vftable);
}
else {
/* Fehler: Parser-Factory kann nicht erstellt werden */
}
/* Rückkehradresse dieses Factory-Objekts zum Broker */
return(factoryObject);
}
Zugehörige Konzepte
Benutzerdefinierte Parser
Benutzerdefinierte Erweiterungen
Zugehörige Tasks
Parser in C erstellen
Zugehörige Verweise
cpiCreateParserFactory
C-Parser-Dienstprogrammfunktionen
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 18.05.2006
as08250_