Tengo que crear version, borrar version , mostrar version y mostrar cambios.
Esto es lo que tengo que hacer:
Crear una nueva versión.
TipoRet CrearVersion(Archivo &a, char * version);
Crea una nueva versión del archivo si la versión especificada cumple con las siguientes reglas:
- El padre de la nueva versión a crear ya debe existir. Por ejemplo, si creo la versión 2.15.1, la versión
2.15 ya debe existir.
Las versiones del primer nivel no siguen esta regla, ya que no tienen versión padre.
- No pueden quedar “huecos” entre versiones hermanas. Por ejemplo, si creamos la versión 2.15.3, las
versiones 2.15.1 y 2.15.2 ya deben existir.
Si la versión especificada ya existe, entonces se inserta haciendo que los hermanos (las versiones
hermanas) se corran una posición a la derecha (aumentando una unidad). Por ejemplo si existen las
versiones 2.15.1, 2.15.2 y 2.15.3, y creo la 2.15.2, las versiones 2.15.2 y 2.15.3 existentes pasan a ser
2.15.3 y 2.15.4 respectivamente, para poder incorporar la versión 2.15.2 nueva (este corrimiento influye
en la numeración de todos los hijos –las subversiones– de las versiones afectadas).
Cada subversión de una versión X de un archivo incorpora, eventualmente, cambios (inserción y/o
supresión de líneas) a la versión X. Ver las operaciones relativas al texto que se describen más adelante
en este documento.
Ejemplo:
CrearVersion(a, "1");
CrearVersion(a, "2");
CrearVersion(a, "2.1");
MostrarVersiones(a);
Salida:
curriculum.txt
1
2
2.1
Retornos posibles:
OK Si se pudo crear la nueva versión con éxito.
ERROR Si la versión padre no existe (ver arriba).
NO_IMPLEMENTADA Cuando aún no se implementó. Es el tipo de retorno por defecto.
4) Borrar una versión, junto con sus hijos (subversiones), liberando toda la memoria involucrada.
TipoRet BorrarVersion(Archivo &a, char * version);
Elimina una versión del archivo si la version pasada por parámetro existe. En otro caso la operación
quedará sin efecto. Si la versión a eliminar posee subversiones, éstas deberán ser eliminadas también, así
como el texto asociado a cada una de las versiones. El texto será explicado más adelante.
No deben quedar números de versiones libres sin usar. Por lo tanto cuando se elimina una versión, las
versiones hermanas que le siguen deben decrementar su numeración (así también sus subversiones
dependientes). Por ejemplo, si existen las versiones 2.15.1, 2.15.2 y 2.15.3, y elimino la 2.15.1, la
Si las subversiones anteriores del mismo padre no existen (ver arriba).
versión 2.15.2 y la 2.15.3 pasan a ser 2.15.1 y 2.15.2 respectivamente, esto incluye a todas las
subversiones de estas versiones.
Si el archivo posee únicamente una versión (la 1), al eliminarla el archivo quedará vacío como cuando
fue creado, es decir, únicamente con su nombre y contenido nulo.
Ejemplo:
BorrarVersion(a, "1");
MostrarVersiones(a);
Salida:
curriculum.txt
1
1.1
Retornos posibles:
OK Si se pudo eliminar la versión con éxito.
ERROR Si version no existe.
NO_IMPLEMENTADA Cuando aún no se implementó. Es el tipo de retorno por defecto.
5) Mostrar todas las versiones de un archivo de forma jerárquica.
TipoRet MostrarVersiones(Archivo a);
FORMATO: En primer lugar muestra el nombre del archivo. Después de una línea en blanco lista todos
las versiones del archivo ordenadas por nivel jerárquico e indentadas según muestra el siguiente ejemplo
(cada nivel está indentado por un tabulador).
Ejemplo:
CrearVersion(a, "1.2");
CrearVersion(a, "2");
CrearVersion(a, "1.2.1");
MostrarVersiones(a);
Salida:
curriculum.txt
1
1.1
1.2
2
1.2.1
Si el archivo no contiene versiones se mostrará la siguiente salida.
Salida:
curriculum.txt
No hay versiones creadas
Retornos posibles:
OK Siempre retorna OK.
ERROR No existen errores posibles.
NO_IMPLEMENTADA Cuando aún no se implementó. Es el tipo de retorno por defecto.
Mostrar todas las modificaciones en el texto de una versión X, respecto a la versión padre de X.
TipoRet MostrarCambios(Archivo a, char * version);
Esta función muestra los cambios que se realizaron en el texto de la version parámetro, sin incluir los
cambios realizados en las versiones ancestras de la cual dicha versión depende.
FORMATO: En primer lugar muestra el nombre del archivo. Luego, separado por un guión se mostrará
la version. Después de una línea en blanco lista todos los cambios realizados al texto. Cada cambio se
muestra en una nueva línea. Si es una inserción comenzará con IL y si es un borrado con BL. Luego
separado por un tabulador se mostrará el número de la línea modificada y, sólo en el caso de una
inserción, luego de otro tabulador el texto insertado.
Ejemplo:
MostrarCambios(a, "1");
Salida:
curriculum.txt - 1
IL 1 Dirección: Rivera 1234
IL 2 Teléfono: 6111111
IL 1 Nombre: Juan Pérez
MostrarCambios(a, "1.1");
Salida:
curriculum.txt – 1.1
IL 4 Estado Civil: Soltero
BL 3
BL 3
Si la versión no contiene modificaciones se mostrará la salida indicada en el siguiente ejemplo.
Ejemplo:
MostrarCambios(a, "2");
Salida:
curriculum.txt – 2
No se realizaron modificaciones
Retornos posibles:
OK Si se pudieron mostrar los cambios, aún cuando éstos sean inexistentes.
ERROR Si version no existe.
NO_IMPLEMENTADA Cuando aún no se implementó. Es el tipo de retorno por defecto.
muchas gracias.