git repos / PlatformFolders

blame: html/doxygen/4.2.0/index.html

normal view · raw

d359b830 Poul Sander 2022-02-06 17:49 1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
d359b830 Poul Sander 2022-02-06 17:49 2
<html xmlns="http://www.w3.org/1999/xhtml">
d359b830 Poul Sander 2022-02-06 17:49 3
<head>
d359b830 Poul Sander 2022-02-06 17:49 4
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
d359b830 Poul Sander 2022-02-06 17:49 5
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
d359b830 Poul Sander 2022-02-06 17:49 6
<meta name="generator" content="Doxygen 1.9.1"/>
d359b830 Poul Sander 2022-02-06 17:49 7
<meta name="viewport" content="width=device-width, initial-scale=1"/>
d359b830 Poul Sander 2022-02-06 17:49 8
<title>Platform folders: PlatformFolders &lt;a href=&quot;https://travis-ci.org/sago007/PlatformFolders&quot;&gt;&lt;img src=&quot;https://travis-ci.org/sago007/PlatformFolders.svg?branch=master&quot; alt=&quot;Build Status&quot;/&gt;&lt;/a&gt; &lt;a href=&quot;https://ci.appveyor.com/project/sago007/platformfolders&quot;&gt;&lt;img src=&quot;https://img.shields.io/appveyor/ci/sago007/PlatformFolders.svg?label=Windows&quot; alt=&quot;AppVeyor&quot;/&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/sago007/PlatformFolders/master/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/sago007/PlatformFolders.svg&quot; alt=&quot;license&quot;/&gt;&lt;/a&gt; &lt;a href=&quot;https://gitter.im/PlatformFolders/Lobby?utm_source=badge&amp;utm_medium=badge&amp;utm_campaign=pr-badge&amp;utm_content=badge&quot;&gt;&lt;img src=&quot;https://badges.gitter.im/PlatformFolders/Lobby.svg&quot; alt=&quot;Join the chat at https://gitter.im/PlatformFolders/Lobby&quot;/&gt;&lt;/a&gt; &lt;a href=&quot;https://www.codacy.com/app/github_43/PlatformFolders?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=sago007/PlatformFolders&amp;utm_campaign=Badge_Grade&quot;&gt;&lt;img src=&quot;https://api.codacy.com/project/badge/Grade/729e36adcf5c4523bd136de1b33441cb&quot; alt=&quot;Codacy Badge&quot;/&gt;&lt;/a&gt;</title>
d359b830 Poul Sander 2022-02-06 17:49 9
<link href="tabs.css" rel="stylesheet" type="text/css"/>
d359b830 Poul Sander 2022-02-06 17:49 10
<script type="text/javascript" src="jquery.js"></script>
d359b830 Poul Sander 2022-02-06 17:49 11
<script type="text/javascript" src="dynsections.js"></script>
d359b830 Poul Sander 2022-02-06 17:49 12
<link href="search/search.css" rel="stylesheet" type="text/css"/>
d359b830 Poul Sander 2022-02-06 17:49 13
<script type="text/javascript" src="search/searchdata.js"></script>
d359b830 Poul Sander 2022-02-06 17:49 14
<script type="text/javascript" src="search/search.js"></script>
d359b830 Poul Sander 2022-02-06 17:49 15
<link href="doxygen.css" rel="stylesheet" type="text/css" />
d359b830 Poul Sander 2022-02-06 17:49 16
</head>
d359b830 Poul Sander 2022-02-06 17:49 17
<body>
d359b830 Poul Sander 2022-02-06 17:49 18
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
d359b830 Poul Sander 2022-02-06 17:49 19
<div id="titlearea">
d359b830 Poul Sander 2022-02-06 17:49 20
<table cellspacing="0" cellpadding="0">
d359b830 Poul Sander 2022-02-06 17:49 21
 <tbody>
d359b830 Poul Sander 2022-02-06 17:49 22
 <tr style="height: 56px;">
d359b830 Poul Sander 2022-02-06 17:49 23
  <td id="projectalign" style="padding-left: 0.5em;">
d359b830 Poul Sander 2022-02-06 17:49 24
   <div id="projectname">Platform folders
d359b830 Poul Sander 2022-02-06 17:49 25
   &#160;<span id="projectnumber">4.2.0</span>
d359b830 Poul Sander 2022-02-06 17:49 26
   </div>
d359b830 Poul Sander 2022-02-06 17:49 27
  </td>
d359b830 Poul Sander 2022-02-06 17:49 28
 </tr>
d359b830 Poul Sander 2022-02-06 17:49 29
 </tbody>
d359b830 Poul Sander 2022-02-06 17:49 30
</table>
d359b830 Poul Sander 2022-02-06 17:49 31
</div>
d359b830 Poul Sander 2022-02-06 17:49 32
<!-- end header part -->
d359b830 Poul Sander 2022-02-06 17:49 33
<!-- Generated by Doxygen 1.9.1 -->
d359b830 Poul Sander 2022-02-06 17:49 34
<script type="text/javascript">
d359b830 Poul Sander 2022-02-06 17:49 35
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
d359b830 Poul Sander 2022-02-06 17:49 36
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
d359b830 Poul Sander 2022-02-06 17:49 37
/* @license-end */
d359b830 Poul Sander 2022-02-06 17:49 38
</script>
d359b830 Poul Sander 2022-02-06 17:49 39
<script type="text/javascript" src="menudata.js"></script>
d359b830 Poul Sander 2022-02-06 17:49 40
<script type="text/javascript" src="menu.js"></script>
d359b830 Poul Sander 2022-02-06 17:49 41
<script type="text/javascript">
d359b830 Poul Sander 2022-02-06 17:49 42
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
d359b830 Poul Sander 2022-02-06 17:49 43
$(function() {
d359b830 Poul Sander 2022-02-06 17:49 44
  initMenu('',true,false,'search.php','Search');
d359b830 Poul Sander 2022-02-06 17:49 45
  $(document).ready(function() { init_search(); });
d359b830 Poul Sander 2022-02-06 17:49 46
});
d359b830 Poul Sander 2022-02-06 17:49 47
/* @license-end */</script>
d359b830 Poul Sander 2022-02-06 17:49 48
<div id="main-nav"></div>
d359b830 Poul Sander 2022-02-06 17:49 49
</div><!-- top -->
d359b830 Poul Sander 2022-02-06 17:49 50
<!-- window showing the filter options -->
d359b830 Poul Sander 2022-02-06 17:49 51
<div id="MSearchSelectWindow"
d359b830 Poul Sander 2022-02-06 17:49 52
     onmouseover="return searchBox.OnSearchSelectShow()"
d359b830 Poul Sander 2022-02-06 17:49 53
     onmouseout="return searchBox.OnSearchSelectHide()"
d359b830 Poul Sander 2022-02-06 17:49 54
     onkeydown="return searchBox.OnSearchSelectKey(event)">
d359b830 Poul Sander 2022-02-06 17:49 55
</div>
d359b830 Poul Sander 2022-02-06 17:49 56
d359b830 Poul Sander 2022-02-06 17:49 57
<!-- iframe showing the search results (closed by default) -->
d359b830 Poul Sander 2022-02-06 17:49 58
<div id="MSearchResultsWindow">
d359b830 Poul Sander 2022-02-06 17:49 59
<iframe src="javascript:void(0)" frameborder="0" 
d359b830 Poul Sander 2022-02-06 17:49 60
        name="MSearchResults" id="MSearchResults">
d359b830 Poul Sander 2022-02-06 17:49 61
</iframe>
d359b830 Poul Sander 2022-02-06 17:49 62
</div>
d359b830 Poul Sander 2022-02-06 17:49 63
d359b830 Poul Sander 2022-02-06 17:49 64
<div class="PageDoc"><div class="header">
d359b830 Poul Sander 2022-02-06 17:49 65
  <div class="headertitle">
d359b830 Poul Sander 2022-02-06 17:49 66
<div class="title">PlatformFolders <a href="https://travis-ci.org/sago007/PlatformFolders"><img src="https://travis-ci.org/sago007/PlatformFolders.svg?branch=master" alt="Build Status" style="pointer-events: none;" class="inline"/></a> <a href="https://ci.appveyor.com/project/sago007/platformfolders"><img src="https://img.shields.io/appveyor/ci/sago007/PlatformFolders.svg?label=Windows" alt="AppVeyor" style="pointer-events: none;" class="inline"/></a> <a href="https://raw.githubusercontent.com/sago007/PlatformFolders/master/LICENSE"><img src="https://img.shields.io/github/license/sago007/PlatformFolders.svg" alt="license" style="pointer-events: none;" class="inline"/></a> <a href="https://gitter.im/PlatformFolders/Lobby?utm_source=badge&amp;utm_medium=badge&amp;utm_campaign=pr-badge&amp;utm_content=badge"><img src="https://badges.gitter.im/PlatformFolders/Lobby.svg" alt="Join the chat at https://gitter.im/PlatformFolders/Lobby" style="pointer-events: none;" class="inline"/></a> <a href="https://www.codacy.com/app/github_43/PlatformFolders?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=sago007/PlatformFolders&amp;utm_campaign=Badge_Grade"><img src="https://api.codacy.com/project/badge/Grade/729e36adcf5c4523bd136de1b33441cb" alt="Codacy Badge" class="inline"/></a> </div>  </div>
d359b830 Poul Sander 2022-02-06 17:49 67
</div><!--header-->
d359b830 Poul Sander 2022-02-06 17:49 68
<div class="contents">
d359b830 Poul Sander 2022-02-06 17:49 69
<div class="textblock"><p><a class="anchor" id="md_README"></a> A C++ library to look for directories like <code>My Documents</code>, <code>~/.config</code>, <code>APPDATA%</code>, etc. so that you do not need to write platform-specific code</p>
d359b830 Poul Sander 2022-02-06 17:49 70
<p><a href="https://github.com/sago007/PlatformFolders">Source code</a> • <a href="https://github.com/sago007/PlatformFolders/releases/latest">Latest release</a> • <a href="https://sago007.github.io/PlatformFolders/html/doxygen/">Doxygen documentation</a></p>
d359b830 Poul Sander 2022-02-06 17:49 71
<h1><a class="anchor" id="autotoc_md1"></a>
d359b830 Poul Sander 2022-02-06 17:49 72
Rationale</h1>
d359b830 Poul Sander 2022-02-06 17:49 73
<p>There are a lot of platform abstraction libraries available. You can get graphics abstraction libraries, GUI abstraction libraries and file abstraction libraries.</p>
d359b830 Poul Sander 2022-02-06 17:49 74
<p>But folder abstraction seems to be more difficult. My problem was that the code that found the place to save data was platform dependent. This cluttered my code and often I would not discover that it did not compile until moving it to the different platforms.</p>
d359b830 Poul Sander 2022-02-06 17:49 75
<p><a href="https://sago007.blogspot.dk/2015/10/abstraction-for-special-folders.html">I have written a bit more about it here.</a></p>
d359b830 Poul Sander 2022-02-06 17:49 76
<p>There are some alternatives that you might consider instead:</p>
d359b830 Poul Sander 2022-02-06 17:49 77
<ul>
d359b830 Poul Sander 2022-02-06 17:49 78
<li><a href="https://doc.qt.io/qt-5/qstandardpaths.html">QStandardPaths</a></li>
d359b830 Poul Sander 2022-02-06 17:49 79
<li><a href="https://developer.gnome.org/glib/stable/glib-Miscellaneous-Utility-Functions.html">glib</a></li>
d359b830 Poul Sander 2022-02-06 17:49 80
</ul>
d359b830 Poul Sander 2022-02-06 17:49 81
<p>Both are properly more mature than this library. However they are both parts of large frameworks and using them with libraries outside the framework may not be that simple.</p>
d359b830 Poul Sander 2022-02-06 17:49 82
<h1><a class="anchor" id="autotoc_md2"></a>
d359b830 Poul Sander 2022-02-06 17:49 83
Operating System Support</h1>
d359b830 Poul Sander 2022-02-06 17:49 84
<h2><a class="anchor" id="autotoc_md3"></a>
d359b830 Poul Sander 2022-02-06 17:49 85
Windows</h2>
d359b830 Poul Sander 2022-02-06 17:49 86
<p>For Windows, the current version fetches the folders using SHGetKnownFolderPath. This requires Vista or newer.</p>
d359b830 Poul Sander 2022-02-06 17:49 87
<h2><a class="anchor" id="autotoc_md4"></a>
d359b830 Poul Sander 2022-02-06 17:49 88
Linux</h2>
d359b830 Poul Sander 2022-02-06 17:49 89
<p>This library uses the <a href="https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG user-dirs.</a></p>
d359b830 Poul Sander 2022-02-06 17:49 90
<p>It should work on any Unix system that has the following headers available: <code>pwd.h</code>, <code>unistd.h</code>, and <code>sys/types.h</code></p>
d359b830 Poul Sander 2022-02-06 17:49 91
<h2><a class="anchor" id="autotoc_md5"></a>
d359b830 Poul Sander 2022-02-06 17:49 92
macOS</h2>
d359b830 Poul Sander 2022-02-06 17:49 93
<p>Version 4.0.0 and forward uses hardcoded values for the directories on Mac OS X. Unlike the other operating systems the folders cannot be moved on a Mac and the translation is done in the UI. The versions 2.X and 3.X uses the deprecated FSFindFolder, which requires the CoreServices framework during linking. Version 1.X simple used the XDG specification.</p>
d359b830 Poul Sander 2022-02-06 17:49 94
<h1><a class="anchor" id="autotoc_md6"></a>
d359b830 Poul Sander 2022-02-06 17:49 95
Usage</h1>
d359b830 Poul Sander 2022-02-06 17:49 96
<p>This project should be compatible with things like <a href="https://cmake.org/cmake/help/latest/module/ExternalProject.html?highlight=externalproject_add#command:externalproject_add">Cmake's ExternalProject_Add</a> if you wish to use it in your project.</p>
d359b830 Poul Sander 2022-02-06 17:49 97
<p>You can also follow the <a href="#building">build step</a> below to install at a system level, and use <a href="https://cmake.org/cmake/help/latest/command/find_package.html">Cmake's find_package</a>.</p>
d359b830 Poul Sander 2022-02-06 17:49 98
<div class="fragment"><div class="line"># Specifying a version is optional -- note it follows Semver</div>
d359b830 Poul Sander 2022-02-06 17:49 99
<div class="line">find_package(platform_folders 3.1.0 REQUIRED)</div>
d359b830 Poul Sander 2022-02-06 17:49 100
<div class="line"># Which imports the linkable library &quot;sago::platform_folders&quot;</div>
d359b830 Poul Sander 2022-02-06 17:49 101
<div class="line"># Use it like so...</div>
d359b830 Poul Sander 2022-02-06 17:49 102
<div class="line">target_link_libraries(EXEORLIBNAME PRIVATE sago::platform_folders)</div>
d359b830 Poul Sander 2022-02-06 17:49 103
</div><!-- fragment --><p>Alternatively, you can just copy the <a href="https://github.com/sago007/PlatformFolders/tree/master/sago">sago</a> folder into your program and manually link everything. If you use the last option and are using a library version from before 4.0.0: Remember to link to the CoreServices lib when compiling on Mac. This typically means passing "-framework CoreServices" during the linking phase.</p>
d359b830 Poul Sander 2022-02-06 17:49 104
<p>Note that if you build in-tree, you can link against the Cmake alias <code>sago::platform_folders</code> just like if you had used find_package.</p>
d359b830 Poul Sander 2022-02-06 17:49 105
<h2><a class="anchor" id="autotoc_md7"></a>
d359b830 Poul Sander 2022-02-06 17:49 106
Building</h2>
d359b830 Poul Sander 2022-02-06 17:49 107
<p><b>Notes:</b></p>
d359b830 Poul Sander 2022-02-06 17:49 108
<ul>
d359b830 Poul Sander 2022-02-06 17:49 109
<li>Until 4.0.0 macOS required the CoreServices framework during linking.</li>
d359b830 Poul Sander 2022-02-06 17:49 110
<li>If you don't want to install, remove the <code>--target install</code> command.</li>
d359b830 Poul Sander 2022-02-06 17:49 111
</ul>
d359b830 Poul Sander 2022-02-06 17:49 112
<p>Linux/macOS:</p>
d359b830 Poul Sander 2022-02-06 17:49 113
<div class="fragment"><div class="line">mkdir -p build &amp;&amp; cd build</div>
d359b830 Poul Sander 2022-02-06 17:49 114
<div class="line">cmake -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Release ..</div>
d359b830 Poul Sander 2022-02-06 17:49 115
<div class="line">sudo cmake --build . --target install</div>
d359b830 Poul Sander 2022-02-06 17:49 116
</div><!-- fragment --><p>Windows:</p>
d359b830 Poul Sander 2022-02-06 17:49 117
<div class="fragment"><div class="line">mkdir build &amp;&amp; cd build</div>
d359b830 Poul Sander 2022-02-06 17:49 118
<div class="line">cmake -DBUILD_TESTING=OFF ..</div>
d359b830 Poul Sander 2022-02-06 17:49 119
<div class="line">runas /user:Administrator &quot;cmake --build . --config Release --target install&quot;</div>
d359b830 Poul Sander 2022-02-06 17:49 120
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md8"></a>
d359b830 Poul Sander 2022-02-06 17:49 121
Example Usage</h1>
d359b830 Poul Sander 2022-02-06 17:49 122
<p>This sample program gets all folders from the system:</p>
d359b830 Poul Sander 2022-02-06 17:49 123
<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;sago/platform_folders.h&gt;</span></div>
d359b830 Poul Sander 2022-02-06 17:49 124
<div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div>
d359b830 Poul Sander 2022-02-06 17:49 125
<div class="line"><span class="preprocessor">#include &lt;string&gt;</span></div>
d359b830 Poul Sander 2022-02-06 17:49 126
<div class="line"> </div>
d359b830 Poul Sander 2022-02-06 17:49 127
<div class="line"><span class="keywordtype">int</span> main()</div>
d359b830 Poul Sander 2022-02-06 17:49 128
<div class="line">{</div>
d359b830 Poul Sander 2022-02-06 17:49 129
<div class="line">    std::cout &lt;&lt; <span class="stringliteral">&quot;Config: &quot;</span> &lt;&lt; <a class="code" href="namespacesago.html#aa6c6da4e6fe460076ac069e176622f59">sago::getConfigHome</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
d359b830 Poul Sander 2022-02-06 17:49 130
<div class="line">    std::cout &lt;&lt; <span class="stringliteral">&quot;Data: &quot;</span> &lt;&lt; <a class="code" href="namespacesago.html#a85c382a039426b76aa408961ac2149ee">sago::getDataHome</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
d359b830 Poul Sander 2022-02-06 17:49 131
<div class="line">    std::cout &lt;&lt; <span class="stringliteral">&quot;State: &quot;</span> &lt;&lt; <a class="code" href="namespacesago.html#a8ffd6a057a03d7bd41932bf3fed69874">sago::getStateDir</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
d359b830 Poul Sander 2022-02-06 17:49 132
<div class="line">    std::cout &lt;&lt; <span class="stringliteral">&quot;Cache: &quot;</span> &lt;&lt; <a class="code" href="namespacesago.html#a426458c0e30383f23ecab17bdf55a407">sago::getCacheDir</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
d359b830 Poul Sander 2022-02-06 17:49 133
<div class="line">    std::cout &lt;&lt; <span class="stringliteral">&quot;Documents: &quot;</span> &lt;&lt; <a class="code" href="namespacesago.html#aa44dc2057a9acdb38a10e41a60b7bb82">sago::getDocumentsFolder</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
d359b830 Poul Sander 2022-02-06 17:49 134
<div class="line">    std::cout &lt;&lt; <span class="stringliteral">&quot;Desktop: &quot;</span> &lt;&lt; <a class="code" href="namespacesago.html#ac9fc8e0a8f97b7066548223d43720ce8">sago::getDesktopFolder</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
d359b830 Poul Sander 2022-02-06 17:49 135
<div class="line">    std::cout &lt;&lt; <span class="stringliteral">&quot;Pictures: &quot;</span> &lt;&lt; <a class="code" href="namespacesago.html#a45b407f0581bf3ac349682eb2481c630">sago::getPicturesFolder</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
d359b830 Poul Sander 2022-02-06 17:49 136
<div class="line">    std::cout &lt;&lt; <span class="stringliteral">&quot;Music: &quot;</span> &lt;&lt; <a class="code" href="namespacesago.html#aef0ecc52b536a96e2f3096b43acbfcbe">sago::getMusicFolder</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
d359b830 Poul Sander 2022-02-06 17:49 137
<div class="line">    std::cout &lt;&lt; <span class="stringliteral">&quot;Video: &quot;</span> &lt;&lt; <a class="code" href="namespacesago.html#a8eda16d34cba4c0f82a6e80077660780">sago::getVideoFolder</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
d359b830 Poul Sander 2022-02-06 17:49 138
<div class="line">    std::cout &lt;&lt; <span class="stringliteral">&quot;Download: &quot;</span> &lt;&lt; <a class="code" href="namespacesago.html#a650b888f2d54cadfbe3347f3c9c40059">sago::getDownloadFolder</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
d359b830 Poul Sander 2022-02-06 17:49 139
<div class="line">    std::cout &lt;&lt; <span class="stringliteral">&quot;Save Games 1: &quot;</span> &lt;&lt; <a class="code" href="namespacesago.html#ab568df2aa5ea8492975bbefb206a6145">sago::getSaveGamesFolder1</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
d359b830 Poul Sander 2022-02-06 17:49 140
<div class="line">    std::cout &lt;&lt; <span class="stringliteral">&quot;Save Games 2: &quot;</span> &lt;&lt; <a class="code" href="namespacesago.html#afc7986187926c19b217427a73bdae16e">sago::getSaveGamesFolder2</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
d359b830 Poul Sander 2022-02-06 17:49 141
<div class="line">    <span class="keywordflow">return</span> 0;</div>
d359b830 Poul Sander 2022-02-06 17:49 142
<div class="line">}</div>
d359b830 Poul Sander 2022-02-06 17:49 143
<div class="ttc" id="anamespacesago_html_a426458c0e30383f23ecab17bdf55a407"><div class="ttname"><a href="namespacesago.html#a426458c0e30383f23ecab17bdf55a407">sago::getCacheDir</a></div><div class="ttdeci">std::string getCacheDir()</div></div>
d359b830 Poul Sander 2022-02-06 17:49 144
<div class="ttc" id="anamespacesago_html_a45b407f0581bf3ac349682eb2481c630"><div class="ttname"><a href="namespacesago.html#a45b407f0581bf3ac349682eb2481c630">sago::getPicturesFolder</a></div><div class="ttdeci">std::string getPicturesFolder()</div></div>
d359b830 Poul Sander 2022-02-06 17:49 145
<div class="ttc" id="anamespacesago_html_a650b888f2d54cadfbe3347f3c9c40059"><div class="ttname"><a href="namespacesago.html#a650b888f2d54cadfbe3347f3c9c40059">sago::getDownloadFolder</a></div><div class="ttdeci">std::string getDownloadFolder()</div></div>
d359b830 Poul Sander 2022-02-06 17:49 146
<div class="ttc" id="anamespacesago_html_a85c382a039426b76aa408961ac2149ee"><div class="ttname"><a href="namespacesago.html#a85c382a039426b76aa408961ac2149ee">sago::getDataHome</a></div><div class="ttdeci">std::string getDataHome()</div></div>
d359b830 Poul Sander 2022-02-06 17:49 147
<div class="ttc" id="anamespacesago_html_a8eda16d34cba4c0f82a6e80077660780"><div class="ttname"><a href="namespacesago.html#a8eda16d34cba4c0f82a6e80077660780">sago::getVideoFolder</a></div><div class="ttdeci">std::string getVideoFolder()</div></div>
d359b830 Poul Sander 2022-02-06 17:49 148
<div class="ttc" id="anamespacesago_html_a8ffd6a057a03d7bd41932bf3fed69874"><div class="ttname"><a href="namespacesago.html#a8ffd6a057a03d7bd41932bf3fed69874">sago::getStateDir</a></div><div class="ttdeci">std::string getStateDir()</div></div>
d359b830 Poul Sander 2022-02-06 17:49 149
<div class="ttc" id="anamespacesago_html_aa44dc2057a9acdb38a10e41a60b7bb82"><div class="ttname"><a href="namespacesago.html#aa44dc2057a9acdb38a10e41a60b7bb82">sago::getDocumentsFolder</a></div><div class="ttdeci">std::string getDocumentsFolder()</div></div>
d359b830 Poul Sander 2022-02-06 17:49 150
<div class="ttc" id="anamespacesago_html_aa6c6da4e6fe460076ac069e176622f59"><div class="ttname"><a href="namespacesago.html#aa6c6da4e6fe460076ac069e176622f59">sago::getConfigHome</a></div><div class="ttdeci">std::string getConfigHome()</div></div>
d359b830 Poul Sander 2022-02-06 17:49 151
<div class="ttc" id="anamespacesago_html_ab568df2aa5ea8492975bbefb206a6145"><div class="ttname"><a href="namespacesago.html#ab568df2aa5ea8492975bbefb206a6145">sago::getSaveGamesFolder1</a></div><div class="ttdeci">std::string getSaveGamesFolder1()</div></div>
d359b830 Poul Sander 2022-02-06 17:49 152
<div class="ttc" id="anamespacesago_html_ac9fc8e0a8f97b7066548223d43720ce8"><div class="ttname"><a href="namespacesago.html#ac9fc8e0a8f97b7066548223d43720ce8">sago::getDesktopFolder</a></div><div class="ttdeci">std::string getDesktopFolder()</div></div>
d359b830 Poul Sander 2022-02-06 17:49 153
<div class="ttc" id="anamespacesago_html_aef0ecc52b536a96e2f3096b43acbfcbe"><div class="ttname"><a href="namespacesago.html#aef0ecc52b536a96e2f3096b43acbfcbe">sago::getMusicFolder</a></div><div class="ttdeci">std::string getMusicFolder()</div></div>
d359b830 Poul Sander 2022-02-06 17:49 154
<div class="ttc" id="anamespacesago_html_afc7986187926c19b217427a73bdae16e"><div class="ttname"><a href="namespacesago.html#afc7986187926c19b217427a73bdae16e">sago::getSaveGamesFolder2</a></div><div class="ttdeci">std::string getSaveGamesFolder2()</div></div>
d359b830 Poul Sander 2022-02-06 17:49 155
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md9"></a>
d359b830 Poul Sander 2022-02-06 17:49 156
Example Output</h2>
d359b830 Poul Sander 2022-02-06 17:49 157
<h3><a class="anchor" id="autotoc_md10"></a>
d359b830 Poul Sander 2022-02-06 17:49 158
On Linux</h3>
d359b830 Poul Sander 2022-02-06 17:49 159
<div class="fragment"><div class="line">Config: /home/poul/.config</div>
d359b830 Poul Sander 2022-02-06 17:49 160
<div class="line">Data: /home/poul/.local/share</div>
d359b830 Poul Sander 2022-02-06 17:49 161
<div class="line">State: /home/poul/.local/state</div>
d359b830 Poul Sander 2022-02-06 17:49 162
<div class="line">Cache: /home/poul/.cache</div>
d359b830 Poul Sander 2022-02-06 17:49 163
<div class="line">Documents: /home/poul/Dokumenter</div>
d359b830 Poul Sander 2022-02-06 17:49 164
<div class="line">Desktop: /home/poul/Skrivebord</div>
d359b830 Poul Sander 2022-02-06 17:49 165
<div class="line">Pictures: /home/poul/Billeder</div>
d359b830 Poul Sander 2022-02-06 17:49 166
<div class="line">Music: /home/poul/Musik</div>
d359b830 Poul Sander 2022-02-06 17:49 167
<div class="line">Video: /home/poul/Videoklip</div>
d359b830 Poul Sander 2022-02-06 17:49 168
<div class="line">Download: /home/poul/Hentede filer</div>
d359b830 Poul Sander 2022-02-06 17:49 169
<div class="line">Save Games 1: /home/poul/.local/share</div>
d359b830 Poul Sander 2022-02-06 17:49 170
<div class="line">Save Games 2: /home/poul/.local/share</div>
d359b830 Poul Sander 2022-02-06 17:49 171
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md11"></a>
d359b830 Poul Sander 2022-02-06 17:49 172
On Windows</h3>
d359b830 Poul Sander 2022-02-06 17:49 173
<div class="fragment"><div class="line">Config: C:\users\poul\Application Data</div>
d359b830 Poul Sander 2022-02-06 17:49 174
<div class="line">Data: C:\users\poul\Application Data</div>
d359b830 Poul Sander 2022-02-06 17:49 175
<div class="line">State: C:\users\poul\Local Settings\Application Data</div>
d359b830 Poul Sander 2022-02-06 17:49 176
<div class="line">Cache: C:\users\poul\Local Settings\Application Data</div>
d359b830 Poul Sander 2022-02-06 17:49 177
<div class="line">Documents: C:\users\poul\Mine dokumenter</div>
d359b830 Poul Sander 2022-02-06 17:49 178
<div class="line">Desktop: C:\users\poul\Skrivebord</div>
d359b830 Poul Sander 2022-02-06 17:49 179
<div class="line">Pictures: C:\users\poul\Mine Billeder</div>
d359b830 Poul Sander 2022-02-06 17:49 180
<div class="line">Music: C:\users\poul\Min Musik</div>
d359b830 Poul Sander 2022-02-06 17:49 181
<div class="line">Video: C:\users\poul\Mine Film</div>
d359b830 Poul Sander 2022-02-06 17:49 182
<div class="line">Download: C:\users\poul\Downloads</div>
d359b830 Poul Sander 2022-02-06 17:49 183
<div class="line">Save Games 1: C:\users\poul\Mine dokumenter\My Games</div>
d359b830 Poul Sander 2022-02-06 17:49 184
<div class="line">Save Games 2: C:\users\poul\Saved Games</div>
d359b830 Poul Sander 2022-02-06 17:49 185
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md12"></a>
d359b830 Poul Sander 2022-02-06 17:49 186
On macOS</h3>
d359b830 Poul Sander 2022-02-06 17:49 187
<div class="fragment"><div class="line">Config: /Users/poul/Library/Application Support</div>
d359b830 Poul Sander 2022-02-06 17:49 188
<div class="line">Data: /Users/poul/Library/Application Support</div>
d359b830 Poul Sander 2022-02-06 17:49 189
<div class="line">State: /Users/poul/Library/Application Support</div>
d359b830 Poul Sander 2022-02-06 17:49 190
<div class="line">Cache: /Users/poul/Library/Caches</div>
d359b830 Poul Sander 2022-02-06 17:49 191
<div class="line">Documents: /Users/poul/Documents</div>
d359b830 Poul Sander 2022-02-06 17:49 192
<div class="line">Desktop: /Users/poul/Desktop</div>
d359b830 Poul Sander 2022-02-06 17:49 193
<div class="line">Pictures: /Users/poul/Pictures</div>
d359b830 Poul Sander 2022-02-06 17:49 194
<div class="line">Music: /Users/poul/Music</div>
d359b830 Poul Sander 2022-02-06 17:49 195
<div class="line">Video: /Users/poul/Movies</div>
d359b830 Poul Sander 2022-02-06 17:49 196
<div class="line">Download: /Users/poul/Downloads</div>
d359b830 Poul Sander 2022-02-06 17:49 197
<div class="line">Save Games 1: /Users/poul/Library/Application Support</div>
d359b830 Poul Sander 2022-02-06 17:49 198
<div class="line">Save Games 2: /Users/poul/Library/Application Support</div>
d359b830 Poul Sander 2022-02-06 17:49 199
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md13"></a>
d359b830 Poul Sander 2022-02-06 17:49 200
Compiler Compatibility</h1>
d359b830 Poul Sander 2022-02-06 17:49 201
<p>Versions up to 3.X.X should compile with any C++98 compiler.\ Versions from 4.0.0 and up require a C++11 compatible compiler.</p>
d359b830 Poul Sander 2022-02-06 17:49 202
<p>The aim is to always support the default C++ compiler on the oldest supported version of Ubuntu. This is a very basic library and it is not supposed to force you to upgrade.</p>
d359b830 Poul Sander 2022-02-06 17:49 203
<h1><a class="anchor" id="autotoc_md14"></a>
d359b830 Poul Sander 2022-02-06 17:49 204
Encoding</h1>
d359b830 Poul Sander 2022-02-06 17:49 205
<p>From version 3.0, Windows always encodes to UTF-8, and this will be the default on almost any other system. Before version 3.0, Windows was encoded in ANSI. Although the user may use any characters they want, I recommend that the program should have only ASCII characters in the source code itself.</p>
d359b830 Poul Sander 2022-02-06 17:49 206
<h1><a class="anchor" id="autotoc_md15"></a>
d359b830 Poul Sander 2022-02-06 17:49 207
Licence</h1>
d359b830 Poul Sander 2022-02-06 17:49 208
<p>Provided under the MIT license for the same reason XDG is licensed under it. So that you can quickly copy-paste the methods you need or just include the "sago"-folder. </p>
d359b830 Poul Sander 2022-02-06 17:49 209
</div></div><!-- PageDoc -->
d359b830 Poul Sander 2022-02-06 17:49 210
</div><!-- contents -->
d359b830 Poul Sander 2022-02-06 17:49 211
<!-- start footer part -->
d359b830 Poul Sander 2022-02-06 17:49 212
<hr class="footer"/><address class="footer"><small>
d359b830 Poul Sander 2022-02-06 17:49 213
Generated on Sun Feb 6 2022 18:17:54 for Platform folders by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
d359b830 Poul Sander 2022-02-06 17:49 214
</small></address>
d359b830 Poul Sander 2022-02-06 17:49 215
</body>
d359b830 Poul Sander 2022-02-06 17:49 216
</html>
1970-01-01 00:00 217