int FCC_Procesar( void * datos_filtro, TTubo * entrada, TTubo * salida, int eof )
{
palabra nueva,palabra_agregar,palabra_aux;
char cant[5];
// Casteo los datos filtro a un puntero a TFiltroContarCon
TFiltroContarCon * FiltroContarCon = (TFiltroContarCon*) datos_filtro;
if (!C_Vacia( *entrada )) {
C_Sacar( entrada, &nueva );
if ( strcmp( nueva, FiltroContarCon->ultimaPalabra ) == 0 ){ // Son iguales --> sumo contador y la emito
FiltroContarCon->cantidad=(FiltroContarCon->cantidad)+1;
strcpy(cant,"");
itoa(FiltroContarCon->cantidad,cant,10);
strcpy(palabra_agregar,"00");
strcat(palabra_agregar,cant);
strcat (palabra_agregar,";");
strcat(palabra_agregar,nueva);
C_Agregar( salida,&palabra_agregar );
strcpy( FiltroContarCon->ultimaPalabra,"");
strcpy( FiltroContarCon->ultimaPalabra, nueva );
return FALSE;
}
else // Son distintas
{
(FiltroContarCon->cantidad)=1;
strcpy(cant,"");
itoa(FiltroContarCon->cantidad,cant,10);
strcpy(palabra_agregar,"00");
strcat(palabra_agregar,cant);
strcat (palabra_agregar,";");
strcat(palabra_agregar,nueva);
C_Agregar( salida,&palabra_agregar );
strcpy( FiltroContarCon->ultimaPalabra,"");
strcpy( FiltroContarCon->ultimaPalabra, nueva );
return FALSE;
}
}
else {
if ( eof ){
return TRUE;
}
else return FALSE;
}
};