Creates a single instance of the named parser factory in the message broker. It must be invoked only in the initialization function bipGetParserFactory which is called when the 'lil' is loaded by the message broker. If cpiCreateParserFactory is invoked at any other time, the results are unpredictable.
CciFactory* cpiCreateParserFactory( int* returnCode, CciChar* name);
If successful, the address of the parser factory object is returned. Otherwise, a value of zero (CCI_NULL_ADDR) is returned, and returnCode indicates the reason for the error.
This example is taken from the sample parser file BipSampPluginParser.c (lines 862 to 901):
void LilFactoryExportPrefix * LilFactoryExportSuffix bipGetParserFactory() { /* Declare variables */ CciFactory* factoryObject; int rc; static CPI_VFT vftable = {CPI_VFT_DEFAULT}; /* Before we proceed we need to initialise all the static constants */ /* that may be used by the plug-in. */ initParserConstants(); /* Setup function table with pointers to parser implementation functions */ 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; /* Create the parser factory for this plugin */ factoryObject = cpiCreateParserFactory(&rc, constParserFactory); if (factoryObject) { /* Define the classes of message supported by the factory */ cpiDefineParserClass(&rc, factoryObject, constPXML, &vftable); } else { /* Error: Unable to create parser factory */ } /* Return address of this factory object to the broker */ return(factoryObject); }
Notices |
Trademarks |
Downloads |
Library |
Support |
Feedback
![]() ![]() |
as08240_ |