user.odin 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package os2
  2. import "base:runtime"
  3. // ```
  4. // Windows: C:\Users\Alice
  5. // macOS: /Users/Alice
  6. // Linux: /home/alice
  7. // ```
  8. @(require_results)
  9. user_home_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) {
  10. return _user_home_dir(allocator)
  11. }
  12. // Files that applications can regenerate/refetch at a loss of speed, e.g. shader caches
  13. //
  14. // Sometimes deleted for system maintenance
  15. //
  16. // ```
  17. // Windows: C:\Users\Alice\AppData\Local
  18. // macOS: /Users/Alice/Library/Caches
  19. // Linux: /home/alice/.cache
  20. // ```
  21. @(require_results)
  22. user_cache_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) {
  23. return _user_cache_dir(allocator)
  24. }
  25. // User-hidden application data
  26. //
  27. // ```
  28. // Windows: C:\Users\Alice\AppData\Local ("C:\Users\Alice\AppData\Roaming" if `roaming`)
  29. // macOS: /Users/Alice/Library/Application Support
  30. // Linux: /home/alice/.local/share
  31. // ```
  32. //
  33. // NOTE: (Windows only) `roaming` is for syncing across multiple devices within a *domain network*
  34. @(require_results)
  35. user_data_dir :: proc(allocator: runtime.Allocator, roaming := false) -> (dir: string, err: Error) {
  36. return _user_data_dir(allocator, roaming)
  37. }
  38. // Non-essential application data, e.g. history, ui layout state
  39. //
  40. // ```
  41. // Windows: C:\Users\Alice\AppData\Local
  42. // macOS: /Users/Alice/Library/Application Support
  43. // Linux: /home/alice/.local/state
  44. // ```
  45. @(require_results)
  46. user_state_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) {
  47. return _user_state_dir(allocator)
  48. }
  49. // Application log files
  50. //
  51. // ```
  52. // Windows: C:\Users\Alice\AppData\Local
  53. // macOS: /Users/Alice/Library/Logs
  54. // Linux: /home/alice/.local/state
  55. // ```
  56. @(require_results)
  57. user_log_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) {
  58. return _user_log_dir(allocator)
  59. }
  60. // Application settings/preferences
  61. //
  62. // ```
  63. // Windows: C:\Users\Alice\AppData\Local ("C:\Users\Alice\AppData\Roaming" if `roaming`)
  64. // macOS: /Users/Alice/Library/Application Support
  65. // Linux: /home/alice/.config
  66. // ```
  67. //
  68. // NOTE: (Windows only) `roaming` is for syncing across multiple devices within a *domain network*
  69. @(require_results)
  70. user_config_dir :: proc(allocator: runtime.Allocator, roaming := false) -> (dir: string, err: Error) {
  71. return _user_config_dir(allocator, roaming)
  72. }
  73. // ```
  74. // Windows: C:\Users\Alice\Music
  75. // macOS: /Users/Alice/Music
  76. // Linux: /home/alice/Music
  77. // ```
  78. @(require_results)
  79. user_music_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) {
  80. return _user_music_dir(allocator)
  81. }
  82. // ```
  83. // Windows: C:\Users\Alice\Desktop
  84. // macOS: /Users/Alice/Desktop
  85. // Linux: /home/alice/Desktop
  86. // ```
  87. @(require_results)
  88. user_desktop_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) {
  89. return _user_desktop_dir(allocator)
  90. }
  91. // ```
  92. // Windows: C:\Users\Alice\Documents
  93. // macOS: /Users/Alice/Documents
  94. // Linux: /home/alice/Documents
  95. // ```
  96. @(require_results)
  97. user_documents_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) {
  98. return _user_documents_dir(allocator)
  99. }
  100. // ```
  101. // Windows: C:\Users\Alice\Downloads
  102. // macOS: /Users/Alice/Downloads
  103. // Linux: /home/alice/Downloads
  104. // ```
  105. @(require_results)
  106. user_downloads_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) {
  107. return _user_downloads_dir(allocator)
  108. }
  109. // ```
  110. // Windows: C:\Users\Alice\Pictures
  111. // macOS: /Users/Alice/Pictures
  112. // Linux: /home/alice/Pictures
  113. // ```
  114. @(require_results)
  115. user_pictures_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) {
  116. return _user_pictures_dir(allocator)
  117. }
  118. // ```
  119. // Windows: C:\Users\Alice\Public
  120. // macOS: /Users/Alice/Public
  121. // Linux: /home/alice/Public
  122. // ```
  123. @(require_results)
  124. user_public_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) {
  125. return _user_public_dir(allocator)
  126. }
  127. // ```
  128. // Windows: C:\Users\Alice\Videos
  129. // macOS: /Users/Alice/Movies
  130. // Linux: /home/alice/Videos
  131. // ```
  132. @(require_results)
  133. user_videos_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) {
  134. return _user_videos_dir(allocator)
  135. }