#pragma once #include // Utilidades multiplataforma para operaciones del sistema namespace SystemUtils { // Códigos de resultado para operaciones del sistema enum class Result { SUCCESS = 0, PERMISSION_DENIED, // Sin permisos para crear la carpeta PATH_TOO_LONG, // Ruta demasiado larga ALREADY_EXISTS, // Ya existe (solo si se considera error) INVALID_PATH, // Ruta inválida UNKNOWN_ERROR // Error desconocido }; // Configuración para creación de carpetas struct FolderConfig { bool create_parents; // Crear carpetas padre si no existen bool fail_if_exists; // Fallar si la carpeta ya existe int permissions; // Permisos Unix (ignorado en Windows) // Constructor con valores por defecto FolderConfig() : create_parents(true) , fail_if_exists(false) , permissions(0755) // rwxr-xr-x {} }; // Crea la carpeta del sistema donde guardar datos de la aplicación Result createApplicationFolder(const std::string& app_name, std::string& out_path); // Crea la carpeta del sistema con configuración personalizada Result createApplicationFolder(const std::string& app_name, std::string& out_path, const FolderConfig& config); // Crea una carpeta en la ruta especificada Result createFolder(const std::string& path); // Crea una carpeta con configuración personalizada Result createFolder(const std::string& path, const FolderConfig& config); // Obtiene la ruta de datos de la aplicación (sin crearla) std::string getApplicationDataPath(const std::string& app_name); // Verifica si una carpeta existe bool folderExists(const std::string& path); // Convierte un código de resultado a string descriptivo const char* resultToString(Result result); // Obtiene el directorio home del usuario std::string getHomeDirectory(); // Obtiene el directorio temporal del sistema std::string getTempDirectory(); } // namespace SystemUtils