cpiSetElementCompleteNext
This function sets the 'next child complete' flag in the target syntax element to the specified value.
Syntax
void cpiSetElementCompleteNext(
int* returnCode,
CciElement* targetElement,
CciBool value);
Parameters
- returnCode
- Receives the return code from the function (output). Possible return codes are:
- CCI_SUCCESS
- CCI_EXCEPTION
- CCI_INV_ELEMENT_OBJECT
- targetElement
- Specifies the address of the target syntax element object (input).
- value
- The value to be set in the flag (input).
Return values
None. If an error occurs, returnCode indicates the reason for the error.
Sample
This example is taken from the sample parser file BipSampPluginParser.c:
/* Get a pointer to the start of the tag */
startMarker = (char*)pc->iBuffer+(int)pc->iIndex;
/* Skip over the tag */
goToNameEnd( (PARSER_CONTEXT_ST *)context, parser );
/* Get a pointer to the end of the tag */
endMarker = (char*)pc->iBuffer+(int)pc->iIndex;
/* Compute the size of the tag */
markedSize = (size_t)endMarker-(int)startMarker;
/* Convert the tag into integration node form */
data = CciNString((char *)startMarker, markedSize, pc->iCcsid);
/* Create a new name element for the tag */
newElement = cpiCreateElement(&rc, parser);
cpiSetElementType(&rc, newElement, CCI_ELEMENT_TYPE_NAME);
cpiSetElementName(&rc, newElement, data);
cpiSetElementCompletePrevious(&rc, newElement, 0);
cpiSetElementCompleteNext(&rc, newElement, 0);
if (pc->trace) {
const char * mbData = mbString(data, pc->iCcsid);
fprintf(pc->tracefile, "PLUGIN: New tag found\n");
fprintf(pc->tracefile, "PLUGIN: Created new NAME element;
object=0x%x type=0x%x name=",
newElement, CCI_ELEMENT_TYPE_NAME);
fprintf(pc->tracefile, "%s\n", mbData);
fflush(pc->tracefile);
free((void *)mbData);
}
/* Free the memory allocated in CciNString() */
free((void *)data);
/* Add the element */
cpiAddAsLastChild(&rc, element, newElement);
cpiSetElementCompletePrevious(&rc, element, 1);