<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.baszerr.eu/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>BaSzErr - prjs:system</title>
        <description></description>
        <link>https://www.baszerr.eu/</link>
        <lastBuildDate>Wed, 06 May 2026 09:34:06 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://www.baszerr.eu/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
            <title>BaSzErr</title>
            <link>https://www.baszerr.eu/</link>
        </image>
        <item>
            <title>system</title>
            <link>https://www.baszerr.eu/doku.php?id=prjs:system:system</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;system&quot;&gt;System&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
“System” is C++ (mostly) template library build from many small classes that are useful, doesn&amp;#039;t fit anywhere else and are too small to form a library alone. implements some small, common algorithms, threading helpers, math operations, plugins and more.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;System&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;system&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-281&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;library_content&quot;&gt;library content&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
available classes/functions are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; AtExit – object-oriented wrapper for atexit() standard library call.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; arraySum*FP – generic algorithm for summing floating points, with minimal loss on precision.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; AutoCptr – std::auto_ptr&amp;lt;&amp;gt; like wrapper for C-style pointers (allocated with malloc()). it is usefull when working with legacy C code.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; AutoDescriptor – class behaving just like std::auto_ptr&amp;lt;&amp;gt; but holding descriptors (int): sockets, files, etc…&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; AutoFILE – again std::auto_ptr&amp;lt;&amp;gt; like class, this time for holding C-streams (FILE*).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; AutoVariable – class for managing user-specified type in std::auto_ptr&amp;lt;&amp;gt; like way. it has been used to write AutoFILE, AutoDescriptor and AutoCptr but is not limited to those 3. it can be used of nearly resource spotted in practice.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Average – computes average and standard deviation on given sample of numbers.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; compareFP – compares floating point numbers withing given precision range.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DiskFile – represents file on disk. opens file on disk and returns its descriptor. allows to delete file.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DivingStack – template container implementation of diving stack algorithm.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Enum – “normal” enum type is very poor in both C and C++. this is a template wrapping user-specified enum type, so that it could be used in more human-readable manner. for example: &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code cpp&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; MyEnumType&lt;span class=&quot;sy4&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; Enum&lt;span class=&quot;sy1&quot;&gt;&amp;lt;&lt;/span&gt;...&lt;span class=&quot;sy1&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;...&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
MyEnumType e&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;MyEnumType&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;ENUM_VALUE_1&lt;/span&gt;&lt;span class=&quot;sy4&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span class=&quot;sy3&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;=&lt;/span&gt;MyEnumType&lt;span class=&quot;sy4&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;ENUM_VALUE_2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;...&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
...&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; FunctionName.hpp – helper macro that uses standard &amp;#039;function&amp;#039; or &amp;#039;pretty function&amp;#039; names, depending on the compiler.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; GlobalInit – helper to safely initialize libraries, that require some calls to be made before usage (mostly C libraries, but not only). ensures single-initialization, is thread-safe and can be used multiple times safely.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ignore – template that does nothing with the argument, except for preventing compiler complaining about unused variable (i.e. when used only in debug for assert()).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; IterableEnum – extension of Enum class that allows iterating through enum values.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MultiLock – locks multiple mutexes in a predefined order (i.e. always the same) to prevent deadlocks.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Plugins:: – implementation of generic plugins mechanism with shared-object files.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SafeValue – wrapper for non-thread safe values that allows using them in thread-aware environment&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Singleton – template class implementing Mayer&amp;#039;s singleton pattern on user provided type.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; StateMachine – easy to use representation of state machine. user implements its states and inheritates from this calls. than stepping to another state is done be base-calss call, etc…&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Sync – class allowing easy master-slave thread synchronization.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; TempFile – if you need a file and your not interested in details and file should be removed &lt;abbr title=&quot;As soon as possible&quot;&gt;ASAP&lt;/abbr&gt; when not needed TempFile is what you&amp;#039;re looking for.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Thread – thread wrapper, automatically joining thread when destroyed and catching all runtime errors.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; keepRange – template function, similar to std::min and std::max, but working on range of values to keep. allows also converting to &amp;#039;smaller&amp;#039; types (ex.: int to char), doing translation to best-match in new range.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; nonint_ioctl – ioctl() function wrapper that will not break when EINTR arrives.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; OneInstanceAtOnce – debug wrapper that checks if given object does is in at most one instance at every time.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SharedPtrNotNULL – boost::shared_ptr-like template that ensures pointer held inside is non-NULL. template also provides converting from non-const to const types, and derived to base class pointers.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ScopedPtrCustom – boost::scoped_ptr-like template that allows adding self-provided user function to free given pointer.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; likely.hpp – implements heuristics for branches.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SYSTEM_FUNCTION_NAME – wrapper that returns pretty-function name if available, or regular function name if not.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SignalRegistrator – C++ helper for registering signal handlers.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Timer – boost::timer equivalent for measuring real-time elapsed (instead of CPU-time).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Safe-Init-Locking – mechanism that ensures compile-time initialization of (global) mutexes and locking them to ensure thread-safe initialization.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;library content&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;library_content&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;282-4535&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;requirements&quot;&gt;requirements&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
System requires &lt;a href=&quot;https://www.baszerr.eu/doku.php?id=prjs:build_process:build_process&quot; class=&quot;wikilink1&quot; title=&quot;prjs:build_process:build_process&quot; data-wiki-id=&quot;prjs:build_process:build_process&quot;&gt;build_process&lt;/a&gt; in recent version. to make life easier it has been included in &lt;a href=&quot;#download&quot; title=&quot;prjs:system:system ↵&quot; class=&quot;wikilink1&quot;&gt;download&lt;/a&gt; package.
&lt;/p&gt;

&lt;p&gt;
you will need to have &lt;a href=&quot;http://boost.org&quot; class=&quot;urlextern&quot; title=&quot;http://boost.org&quot; rel=&quot;ugc nofollow&quot;&gt;boost&lt;/a&gt; library installed too.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;requirements&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;requirements&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;4536-4789&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;download&quot;&gt;download&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
get latest version of &lt;a href=&quot;https://github.com/el-bart/system&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/el-bart/system&quot; rel=&quot;ugc nofollow&quot;&gt;system library&lt;/a&gt; via github. you can download &lt;a href=&quot;https://github.com/el-bart/system/tags&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/el-bart/system/tags&quot; rel=&quot;ugc nofollow&quot;&gt;stable versions&lt;/a&gt; using proper tag as well.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;download&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;download&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4790-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 20:09:52 +0000</pubDate>
        </item>
    </channel>
</rss>
