#pragma once
#include "base_head.h"

class C_error;
class StrArray;
class UTILES_EXPORT Cdir_manager//clase para manejar carpetas
{
public:

	//carpetas-------------------------------------------------------
	char dir_work[FILENAME_MAX];
	char dir_exe[FILENAME_MAX];
	char dir_log[FILENAME_MAX];
	char dir_datos[FILENAME_MAX];
	//archivos-------------------------------------------------------
	char path_conf[FILENAME_MAX];
	//rutas de ejecucion---------------------------------------------
	char dir_ejecucion[FILENAME_MAX];
	char path_ejecutable[FILENAME_MAX];
	//funciones------------------------------------------------------
	Cdir_manager(void);
	~Cdir_manager(void);
	//funciones------------------------------------------------------
	void absoluta(char *ruta);
	void relativa(char *ruta);

	BOOL lee_reg(char* clave, C_error *er=NULL);
	BOOL rellena_dirs_ejecucion();
	//funciones estaticas---------------------------------------
	static char* dir_anterior(char*dir);//da el directorio anterior
	static char* nombre_archivo(char *path,char*nombre);//devuelve en nombre el nombre del archivo
	static char* extension_archivo(char *path);//te da la extension de un path o de un nombre de archivo
	static char* cambia_extension_archivo(char *path, char *pathDst, char *newext);//te da la extension de un path o de un nombre de archivo
	static BOOL crea_dir(char *path);//asegura que existe los directorios indicados
	static BOOL borra_archivos(char *paht, char *ext, BOOL recursivo = FALSE);//borra archivos de una extension dada, si ext es null borra todos
	//funciones de listado-----------
	static BOOL listar_elementos(char *dir,StrArray *files,StrArray *dirs,C_error *er=NULL);//dice los files y las dir dentro de un dir(no recursivo)
	static BOOL lista_files(char *dir,StrArray *files,BOOL recursivo=FALSE,C_error *er=NULL,char *omite=NULL);
	
	static BOOL listar( char* dir,StrArray *files,StrArray *dirs=NULL,BOOL recursivo=FALSE,C_error *er=NULL,char *omite=NULL );//funcion generica de listar
	//devuelve version de el archivo
	static char* getVersionFile(char *path, char *buf);//buffer de 64 sobra
};
