Establece el distintivo 'previous child complete' (siguiente hijo completo) del elemento de sintaxis de destino en el valor especificado.
void cpiSetElementCompletePrevious( int* returnCode, CciElement* targetElement, CciBool value);
Ninguno. Si se produce un error, returnCode indica la razón del mismo.
Este ejemplo se ha tomado del archivo de analizador de ejemplo BipSampPluginParser.c (líneas 289 a 318):
/* Obtener un puntero al inicio del código */ startMarker = (char*)pc->iBuffer+(int)pc->iIndex; /* Saltar el código */ goToNameEnd( (PARSER_CONTEXT_ST *)context, parser ); /* Obtener un puntero al final del código */ endMarker = (char*)pc->iBuffer+(int)pc->iIndex; /* Calcular el tamaño del código */ markedSize = (size_t)endMarker-(int)startMarker; /* Convertir el código a formato de intermediario */ data = CciNString((char *)startMarker, markedSize, pc->iCcsid); /* Crear un elemento de nombre nuevo para el código */ 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: Nuevo código encontrado\n"); fprintf(pc->tracefile, "PLUGIN: Creado nuevo elemento NAME; object=0x%x type=0x%x name=", newElement, CCI_ELEMENT_TYPE_NAME); fprintf(pc->tracefile, "%s\n", mbData); fflush(pc->tracefile); free((void *)mbData); } /* Liberar la memoria asignada en CciNString() */ free((void *)data); /* Añadir el elemento */ cpiAddAsLastChild(&rc, element, newElement); cpiSetElementCompletePrevious(&rc, element, 1);