cpiCreateParserFactory

Zweck

Erstellt eine einzelne Instanz der benannten Parserfactory im Nachrichtenbroker. Sie darf nur in der Initialisierungsfunktion bipGetParserFactory angegeben werden, die aufgerufen wird, wenn der 'lil' vom Nachrichtenbroker geladen wird. Wenn cpiCreateParserFactory zu einem anderen Zeitpunkt aufgerufen wird, sind die Ergebnisse unvorhersehbar.

Syntax

CciFactory* cpiCreateParserFactory(
  int*      Rückkehrcode,
  CciChar*  Name);

Parameter

Rückkehrcode
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

Falls erfolgreich, wird die Adresse des Parserfactoryobjekts zurückgegeben. Andernfalls wird als Wert Null (CCI_NULL_ADDR) zurückgegeben, und der Rückkehrcode gibt den Grund für den Fehler an.

Beispielprogramm

Dieses Beispiel stammt aus der Musterparserdatei BipSampPluginParser.c (Zeile 862 bis 901):

void LilFactoryExportPrefix * LilFactoryExportSuffix bipGetParserFactory()
{
  /* Variablen deklarieren */
  CciFactory*     Factoryobjekt;
  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();

  /* Funktionstabelle mit Zeigern auf Parserimplementierungsfunktionen erstellen */
  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;

  /* Die Parserfactory für dieses Plug-in erstellen */
  factoryObject = cpiCreateParserFactory(&rc, constParserFactory);
  if (factoryObject) {
    /* Die von der Factory unterstützten Nachrichtenklassen definieren */
    cpiDefineParserClass(&rc, factoryObject, constPXML, &vftable);
  }
  else {
    /* Fehler: Parserfactory kann nicht erstellt werden */
  }

  /* Adresse dieses Factoryobjekts an den Broker zurückgeben */
  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, 2006 Letzte Aktualisierung: 23. Aug. 2006
as08240_