AuroraRuntime/Include/Aurora/IO/FS/Resources.hpp

69 lines
2.5 KiB
C++

/***
Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: Resources.hpp
Date: 2021-6-10
Author: Reece
***/
#pragma once
namespace Aurora::IO::FS
{
/**
* @brief Provides an application specific storage path for sharing data amongst Aurora applications sharing the same branding info (defer to the init structure)
*/
AUKN_SYM AuOptional<const AuString &> GetSystemDomain();
/**
* @brief Provides an application specific storage path for user-local application data, isolated with respect to your Aurora application brand info (defer to the init structure)
*/
AUKN_SYM AuOptional<const AuString &> GetProfileDomain();
AUKN_SYM bool GetSystemResourcePath(const AuString &fileName, AuString &path);
/**
* @brief Get package path
* This could be a read-only path if relevant to the platform
* This may be `/storage/emulated/0/Android/data/` (`Context#getExternalFilesDir(java.lang.String)`)
* `/Applications/<mac bundle>`
* `\\some uwp path`
* ...on platforms with read-only application specific data directories
* @param path
* @return
*/
AUKN_SYM AuOptional<const AuString &> GetPackagePath();
/**
* @brief Pulls the application directory as defined by the operating system standard file system hierarchy
* Otherwise, XDG_CONFIG_CONFIG or %appdata%.
* This directory might be sandboxed to the user or application by the operating system.
*/
AUKN_SYM AuOptional<const AuString &> GetAppData();
/**
* @brief Pulls the users home directory, untouched
*/
AUKN_SYM AuOptional<const AuString &> GetUserHome();
/**
* @brief Global application data that requires no special permissions to access.
* This could be an SD-Card or user profile.
* This could be the root of the user managable aplication directory.
*/
AUKN_SYM AuOptional<const AuString &> GetWritableAppdata();
/**
* @brief Global application data that requires special permissions to access, usually configured by a system account during installation
*/
AUKN_SYM AuOptional<const AuString &> GetRootAppdata();
/**
* @brief Get user installable application directory
*/
AUKN_SYM AuOptional<const AuString &> GetUserProgramsFolder();
AUKN_SYM AuOptional<AuString> NewTempFile();
AUKN_SYM AuOptional<AuString> NewTempDirectory();
}