shimmering clarity standard library https://docs.shimmering-clarity.net/scsl/
Go to file
Kyle Isom 7f0a814b3f Vector: IsParallel now works.
There should be a devlog entry shortly describing this, but the
code for IsParallel wasn't working on arm64 (Linux or Darwin).
Floating point math is weird.
2023-10-22 15:18:40 -07:00
.circleci With Trunk in CI disabled, try Alpine again. 2023-10-22 03:24:36 -07:00
.idea Vector: IsParallel now works. 2023-10-22 15:18:40 -07:00
.trunk add trunk config to repo 2023-10-20 03:05:12 -07:00
cmake Add badges to README. 2023-10-19 11:16:13 -07:00
include Vector: IsParallel now works. 2023-10-22 15:18:40 -07:00
src With Trunk in CI disabled, try Alpine again. 2023-10-22 03:24:36 -07:00
test Add SimpleConfig. 2023-10-22 01:45:04 -07:00
.clang-format Add trunk to repo, import clang-format. 2023-10-19 22:04:15 -07:00
.clang-tidy clang-tidy fixes, documentation, refactoring. 2023-10-21 02:07:59 -07:00
.gitignore add trunk config to repo 2023-10-20 03:05:12 -07:00
CMakeLists.txt With Trunk in CI disabled, try Alpine again. 2023-10-22 03:24:36 -07:00
LICENSE Cleanup code and docs; add missing header. 2023-10-16 04:01:35 -07:00
Makefile Cleanup code and docs; add missing header. 2023-10-16 04:01:35 -07:00
README.md README.md: use the correct badge for CircleCI. 2023-10-19 21:19:53 -07:00
scsl.pc.in Renaming to scsl. 2023-10-14 18:38:01 -07:00
scslConfig.cmake Add trailing newline to cmake config. 2023-10-16 21:23:26 -07:00
trunk Add trunk to repo, import clang-format. 2023-10-19 22:04:15 -07:00

README.md

scsl : The Shimmering Clarity Standard C++ Library

CircleCI

image

scsl is a collection of software I found myself needing to use repeatedly.

Full Doxygen documentation is available.

Introduction

This is a collection of C++ code that I find useful in building things. It arose from two main use cases.

The modem

On the one hand, I was building a wireless modem for some Z80 computers I have. I needed to be able to store a phonebook of SSIDs and WPA keys, as well as short names to host:port descriptors. I had a limited amount of persistent NVRAM storage and no SD card or other removeable media, so typical desktop-oriented serialization mechanisms weren't going to really work well. Furthermore, when working with microcontrollers, I prefer not to dynamically allocate memory as much as possible. This led to building out Arena, TLV::Record to store the records, and finally Dictionary to make use of both of them.

Closely related to this, I've been working on building an ARM-based handheld computer, for which I would also need a memory arena.

The text editors

Some time ago, I wrote a console text editor of my own; then later, started working on a graphical editor. For this, I needed some data structures to manage memory in the editor. Thus, Buffer was born.

Finally

I'd been writing Go professionally for a while, but C was my first love. I recently started a job that is mostly in C++, and the best way for me to learn is to build a bunch of stuff with it. So, I took a bunch of micro- controller stuff I'd been writing and started building out some other stuff.

License

Copyright 2023 K. Isom kyle@imap.cc

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.