#pragma once #include // --- Namespace SystemUtils: utilidades multiplataforma para operaciones del sistema --- namespace SystemUtils { // --- Enums --- enum class Result { // Códigos de resultado para operaciones del sistema 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 }; // --- Estructuras --- struct FolderConfig { // Configuración para creación de carpetas bool create_parents{true}; // Crear carpetas padre si no existen bool fail_if_exists{false}; // Fallar si la carpeta ya existe int permissions{0755}; // Permisos Unix (ignorado en Windows) // Constructor con valores por defecto FolderConfig() = default; }; // --- Funciones --- auto createApplicationFolder(const std::string& app_name, std::string& out_path) -> Result; // Crea la carpeta del sistema donde guardar datos de la aplicación auto createApplicationFolder(const std::string& app_name, std::string& out_path, const FolderConfig& config) -> Result; // Crea la carpeta del sistema con configuración personalizada auto createFolder(const std::string& path) -> Result; // Crea una carpeta en la ruta especificada auto createFolder(const std::string& path, const FolderConfig& config) -> Result; // Crea una carpeta con configuración personalizada auto getApplicationDataPath(const std::string& app_name) -> std::string; // Obtiene la ruta de datos de la aplicación (sin crearla) auto folderExists(const std::string& path) -> bool; // Verifica si una carpeta existe auto resultToString(Result result) -> const char*; // Convierte un código de resultado a string descriptivo auto getHomeDirectory() -> std::string; // Obtiene el directorio home del usuario auto getTempDirectory() -> std::string; // Obtiene el directorio temporal del sistema } // namespace SystemUtils