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.
CciFactory* cpiCreateParserFactory( int* Rückkehrcode, CciChar* Name);
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.
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); }