この関数は、ターゲット構文エレメントにある 'previous child complete' フラグを、指定した値に設定します。
void cpiSetElementCompletePrevious(
int* returnCode,
CciElement* targetElement,
CciBool value);
なし。 エラーが発生した場合、returnCode がエラーの理由を示します。
この例は、サンプル・パーサー・ファイル 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 broker 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);