Esta función establece el distintivo 'previous child complete' (hijo anterior 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 error.
Este ejemplo se ha tomado del archivo de analizador de ejemplo BipSampPluginParser.c:
/* 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);