cpiCreateParserFactory

Zweck

Diese Funktion erstellt eine einzelne Instanz der angegebenen Parser-Factory. Sie darf nur in der Initialisierungsfunktion bipGetParserFactory aufgerufen werden, die aufgerufen wird, wenn die LIL vom Nachrichtenbroker geladen wird. Wenn cpiCreateParserFactory zu einem anderen Zeitpunkt aufgerufen wird, sind die Ergebnisse unvorhersehbar.

Syntax

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

Parameter

returnCode
Empfängt den Rückkehrcode von der Funktion (Ausgabe). Mögliche Rückkehrcodes sind:
  • CCI_SUCCESS
  • CCI_EXCEPTION
  • CCI_FAILURE
  • CCI_INV_FACTORY_NAME
  • CCI_INV_OBJECT_NAME
name
Gibt den Namen der Factory an, die erstellt wird (Eingabe).

Rückgabewerte

Bei erfolgreicher Ausführung wird die Adresse des Parser-Factory-Objekts zurückgegeben. Andernfalls wird der Wert null (CCI_NULL_ADDR) zurückgegeben, und returnCode gibt die Fehlerursache an.

Beispiel

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

void LilFactoryExportPrefix * LilFactoryExportSuffix bipGetParserFactory()
{
  /* Declare variables */
  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
cpiDefineParserClass
C-Parser-Dienstprogrammfunktionen
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2005 Letzte Aktualisierung: Nov 17, 2005
as08240_