/*
 * wFGmodifications.h -- Additional features for WinBoard by F. Gracia
 * $Id: wFGmodifications.h,v 2.1 2004/07/08 gracia $
 *
 * Copyright 1995 Free Software Foundation, Inc.
 *
 * ------------------------------------------------------------------------
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 * ------------------------------------------------------------------------
 */

/*-----------------------------------------------------*
 *																		 *
 * Conversión a PGN de otras notaciones ajedrecísticas *
 *																		 *
 *-----------------------------------------------------*/

VOID ConversionPopUp(void);
Boolean ConvertPositionsEvent(void);
LRESULT CALLBACK ConversionProc(HWND hDlg, UINT message,
										  WPARAM wParam, LPARAM lParam);

/*-----------------------------------------------------------------*
 *																						 *
 * Ampliación de las posibilidades a la hora de salvar una partida *
 *																						 *
 *-----------------------------------------------------------------*/

// Asigna valores iniciales a la estructura
// utilizada para coordinar el proceso
void InitCurrentGameData(void);
// Rutina encargada de presentar el recuadro,
// interpretar los resultados y ejecutar lo que corresponda
BOOLEAN ModifiedGameEvent(void);
// presentación del recuadro de elección de alternativas
VOID ModifiedGamePopUp( void );
// bucle de recepción y tratamiento de las decisiones
LRESULT CALLBACK ModifiedGameProc(HWND hDlg, UINT message,
											 WPARAM wParam, LPARAM lParam);

// Kernighan-Ritchie, El lenguaje de programación C: 179.
// Copia el contenido del fichero previamente abierto 'origen'
// al fichero 'destino', también previamente abierto.
// Ambos ficheros continuan abiertos tras la operación.
// Tanto la lectura como la escritura deben realizarse
// a la altura en que se encuentren los indicadores de
// desplazamiento dentro de los respectivos ficheros
// en el momento de invocarse la función,
// aunque nada se dice ni comprueba, probablemente porque
// se supone que la llamada se realiza nada más abrirlos.
void FileCopy( FILE * origen, FILE * destino );

// Copia 'limit' bytes del fichero 'origen'
// al fichero 'destino' desde y hacia las ubicaciones
// en que se encuentren al empezar dichos ficheros
// (salvo que 'origen' no sea tan largo,
// en cuyo caso la ejecución acaba con él)
// Devuelve el número de bytes transferidos
unsigned long int BoundedFileCopy( FILE * origen, FILE * destino,
									unsigned long int limit );

// Reemplaza una partida modificada de un fichero;
// los detalles de la operación se contienen
// en la estructura 'currentGame':
//		- si 'currentGame.replace == TRUE' la nueva
// versión sustituye a la antigua; si es falso,
// se copia tras ella ella
//		- los puntos en que ha de producirse la inserción se
// precisan en 'CurrentGame.firstInsertionPoint' y
// 'currentGame.secondInsertionPoint' como distancias al origen
//		- la ruta del fichero que hay que modificar se encuentra
// en 'currentGame.InFile'
int ReplaceInFile(void);

// Reelaboración de la lista solicitada referente
// al fichero 'currentGame.inFile'
BOOLEAN UpdateRecordedData(List * lista);

