Rawdog is a lean, dependency-free Swift package created to simplify and expedite the binary encoding and decoding process for programming objects.
The RAW
target serves as the central feature of this library, encompassing core protocols, extensions, and essential documentation for the effective use of rawdog
.
Every aspect of the RAW
module is thoroughly documented using swift-docc
for user-friendly accessibility. To offer a quick snapshot, the module's structure is as follows:
The RAW
target exposes macros that make it effortless to code complex or verbose expressions in swift with minimal syntax.
StaticBufferType
attach to a struct or class to define it as a type who's primary function is to represent a fixed byte buffer. the macro will implement all of the convenience functions and protocols to make the attached type primarily function as a storage type for an underlying static buffer variable.
The fundamental components of the RAW
module draw their inspiration from the LMDB and its MDB_val
structure. Over time, I found immense value in this structure and the protocols built around it, initially developed in my QuickLMDB library, and implemented them in numerous Swift projects.
As I increasingly incorporated this structure and its related protocols from QuickLMDB into my regular coding routines, I decided to create a separate library – rawdog and its RAW
module – by forking QuickLMDB and its data handling protocols. This decision aimed to help projects standardize, secure, and simplify data transfer methods, fostering an environment that equally accommodates Swift and C programming languages.
This project follows the tagging semantics outlined in SemVer 2.0.0.