Provides common features used by multiple subprojects of ViaDuck.
- Compile-time code generation of enums, protocol classes and sqlite classes.
Bitfield
: Convenient bitfield manipulation functions (used in protocol classes)ConstexprString
: Compile-time string with concat support (used to generate sqlite queries)
- Custom logging infrastructure with various levels and outputs
ValidPtr
: Pointer that tracks the state of an encapsulated object
- Adapted
curve25519
implementation forOpenSSL
fromBoringSSL
- Platform-independent
Connection
class with support forSSL
,CertificateStorage
for pinning,SSLContext
for session resumption - Convenience methods for exact reading/writing, (de)serializing protocol classes
- Compiler with C++ 14 support
- Python 3.4+ with
cogapp
package - For Windows:
mingw-w64
infrastructure (32 or 64 bits)
- Add as git submodule
external/commons
- In CMakeLists:
add_subdirectory(external/commons)
and link againstcommons
Note: In order to build Commons with only the base module, set COMMONS_BASE_ONLY=ON
.
- Add own enums, protocol or sqlite classes as definitions to
gen/
subdirectories - See tests for usage examples
This library is subject to the GNU Lesser General Public License v3.0 (GNU LGPLv3).
Copyright (C) 2015-2023 The ViaDuck Project
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.