Renaming to scsl.
This commit is contained in:
parent
dd696e2c1f
commit
05790a95fa
8
Arena.cc
8
Arena.cc
|
@ -21,7 +21,7 @@
|
||||||
#include "Arena.h"
|
#include "Arena.h"
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
|
|
||||||
Arena::Arena()
|
Arena::Arena()
|
||||||
|
@ -280,7 +280,7 @@ Arena::Destroy()
|
||||||
std::ostream &
|
std::ostream &
|
||||||
operator<<(std::ostream &os, Arena &arena)
|
operator<<(std::ostream &os, Arena &arena)
|
||||||
{
|
{
|
||||||
auto cursor = arena.NewCursor();
|
auto cursor = arena.Start();
|
||||||
char cursorString[33] = {0};
|
char cursorString[33] = {0};
|
||||||
snprintf(cursorString, 32, "%#016llx",
|
snprintf(cursorString, 32, "%#016llx",
|
||||||
(long long unsigned int) cursor);
|
(long long unsigned int) cursor);
|
||||||
|
@ -346,7 +346,7 @@ uint8_t &
|
||||||
Arena::operator[](size_t index)
|
Arena::operator[](size_t index)
|
||||||
{
|
{
|
||||||
if (index > this->size) {
|
if (index > this->size) {
|
||||||
#if defined(KLIB_DESKTOP_BUILD) and !defined(KLIB_NO_ASSERT)
|
#if defined(SCSL_DESKTOP_BUILD) and !defined(SCSL_NO_ASSERT)
|
||||||
throw std::range_error("index out of range");
|
throw std::range_error("index out of range");
|
||||||
#else
|
#else
|
||||||
abort();
|
abort();
|
||||||
|
@ -356,4 +356,4 @@ Arena::operator[](size_t index)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
10
Arena.h
10
Arena.h
|
@ -33,7 +33,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
|
|
||||||
/// \enum ArenaType
|
/// \enum ArenaType
|
||||||
|
@ -55,7 +55,7 @@ enum class ArenaType
|
||||||
/// Arena is the class that implements a memory arena.
|
/// Arena is the class that implements a memory arena.
|
||||||
///
|
///
|
||||||
/// The Arena uses the concept of a cursor to point to memory in the arena. The
|
/// The Arena uses the concept of a cursor to point to memory in the arena. The
|
||||||
/// #NewCursor and #End methods return pointers to the start and end of the
|
/// #Start and #End methods return pointers to the start and end of the
|
||||||
/// arena memory.
|
/// arena memory.
|
||||||
///
|
///
|
||||||
/// The arena should be initialized with one of the Set methods (SetStatic,
|
/// The arena should be initialized with one of the Set methods (SetStatic,
|
||||||
|
@ -130,10 +130,10 @@ public:
|
||||||
/// \return Returns 0 on success and -1 on error.
|
/// \return Returns 0 on success and -1 on error.
|
||||||
int Open(const char *path);
|
int Open(const char *path);
|
||||||
|
|
||||||
/// NewCursor returns a pointer to the start of the memory in the arena.
|
/// Start returns a pointer to the start of the memory in the arena.
|
||||||
///
|
///
|
||||||
/// \return A pointer to the start of the arena memory.
|
/// \return A pointer to the start of the arena memory.
|
||||||
uint8_t *NewCursor() const
|
uint8_t *Start() const
|
||||||
{ return this->store; }
|
{ return this->store; }
|
||||||
|
|
||||||
/// End returns a pointer to the end of the arena memory.
|
/// End returns a pointer to the end of the arena memory.
|
||||||
|
@ -216,7 +216,7 @@ private:
|
||||||
std::ostream &operator<<(std::ostream &os, Arena &arena);
|
std::ostream &operator<<(std::ostream &os, Arena &arena);
|
||||||
|
|
||||||
|
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
#include "Buffer.h"
|
#include "Buffer.h"
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
|
|
||||||
/// The defaultCapacity for a new Buffer is a reasonably arbitrary starting
|
/// The defaultCapacity for a new Buffer is a reasonably arbitrary starting
|
||||||
|
@ -330,7 +330,7 @@ uint8_t &
|
||||||
Buffer::operator[](size_t index)
|
Buffer::operator[](size_t index)
|
||||||
{
|
{
|
||||||
if (index > this->length) {
|
if (index > this->length) {
|
||||||
#if defined(KLIB_DESKTOP_BUILD) and !defined(KLIB_NO_ASSERT)
|
#if defined(SCSL_DESKTOP_BUILD) and !defined(SCSL_NO_ASSERT)
|
||||||
throw std::range_error("array index out of bounds");
|
throw std::range_error("array index out of bounds");
|
||||||
#else
|
#else
|
||||||
abort();
|
abort();
|
||||||
|
@ -360,4 +360,4 @@ operator<<(std::ostream &os, const Buffer &buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
4
Buffer.h
4
Buffer.h
|
@ -16,7 +16,7 @@
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
/// Buffer is a basic line buffer.
|
/// Buffer is a basic line buffer.
|
||||||
///
|
///
|
||||||
|
@ -211,7 +211,7 @@ std::ostream &operator<<(std::ostream &os, const Buffer &buf);
|
||||||
/// differ.
|
/// differ.
|
||||||
inline bool operator!=(const Buffer &lhs, const Buffer &rhs) { return !(lhs == rhs); };
|
inline bool operator!=(const Buffer &lhs, const Buffer &rhs) { return !(lhs == rhs); };
|
||||||
|
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
||||||
|
|
||||||
#endif // KGE_BUFFER_H
|
#endif // KGE_BUFFER_H
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Doxygen support for klib.
|
# Doxygen support for scsl.
|
||||||
find_package(Doxygen)
|
find_package(Doxygen)
|
||||||
|
|
||||||
if (${DOXYGEN_FOUND})
|
if (${DOXYGEN_FOUND})
|
||||||
|
@ -6,11 +6,11 @@ set(DOXYGEN_GENERATE_MAN YES)
|
||||||
set(DOXYGEN_GENERATE_LATEX YES)
|
set(DOXYGEN_GENERATE_LATEX YES)
|
||||||
#set(DOXYGEN_EXTRACT_ALL YES)
|
#set(DOXYGEN_EXTRACT_ALL YES)
|
||||||
|
|
||||||
doxygen_add_docs(klib_docs
|
doxygen_add_docs(scsl_docs
|
||||||
${HEADER_FILES} ${SOURCE_FILES}
|
${HEADER_FILES} ${SOURCE_FILES}
|
||||||
USE_STAMP_FILE)
|
USE_STAMP_FILE)
|
||||||
add_dependencies(klib klib_docs)
|
add_dependencies(scsl scsl_docs)
|
||||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc/klib)
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc/scsl)
|
||||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man DESTINATION share)
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man DESTINATION share)
|
||||||
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
cmake_minimum_required(VERSION 3.25)
|
cmake_minimum_required(VERSION 3.25)
|
||||||
project(klib LANGUAGES CXX
|
project(scsl LANGUAGES CXX
|
||||||
VERSION 0.1.0
|
VERSION 0.1.0
|
||||||
DESCRIPTION "Kyle's C++ library")
|
DESCRIPTION "Shimmering Clarity Standard Library")
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 14)
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
set(CMAKE_VERBOSE_MAKEFILES TRUE)
|
set(CMAKE_VERBOSE_MAKEFILES TRUE)
|
||||||
|
@ -25,10 +25,10 @@ else ()
|
||||||
# nothing special for gcc at the moment
|
# nothing special for gcc at the moment
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
add_compile_definitions(DKLIB_DESKTOP_BUILD)
|
add_compile_definitions(SCSL_DESKTOP_BUILD)
|
||||||
add_compile_definitions(KLIB_VERSION=${PROJECT_VERSION})
|
add_compile_definitions(SCSL_VERSION=${PROJECT_VERSION})
|
||||||
|
|
||||||
set(HEADER_FILES klib.h
|
set(HEADER_FILES scsl.h
|
||||||
Arena.h
|
Arena.h
|
||||||
Buffer.h
|
Buffer.h
|
||||||
Dictionary.h
|
Dictionary.h
|
||||||
|
@ -51,55 +51,59 @@ set(SOURCE_FILES
|
||||||
WinHelpers.cc)
|
WinHelpers.cc)
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
add_library(klib
|
add_library(scsl
|
||||||
STATIC
|
STATIC
|
||||||
${SOURCE_FILES} ${HEADER_FILES})
|
${SOURCE_FILES} ${HEADER_FILES})
|
||||||
else ()
|
else ()
|
||||||
add_library(klib
|
add_library(scsl
|
||||||
STATIC
|
STATIC
|
||||||
${SOURCE_FILES} ${HEADER_FILES})
|
${SOURCE_FILES} ${HEADER_FILES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_executable(phonebook phonebook.cc)
|
add_executable(phonebook phonebook.cc)
|
||||||
target_link_libraries(phonebook klib)
|
target_link_libraries(phonebook scsl)
|
||||||
|
|
||||||
include(CTest)
|
include(CTest)
|
||||||
enable_testing()
|
enable_testing()
|
||||||
|
|
||||||
add_executable(tlv_test tlvTest.cc)
|
add_executable(tlv_test tlvTest.cc)
|
||||||
target_link_libraries(tlv_test klib)
|
target_link_libraries(tlv_test scsl)
|
||||||
add_test(tlvTest tlv_test)
|
add_test(tlvTest tlv_test)
|
||||||
|
|
||||||
add_executable(dictionary_test dictionaryTest.cc)
|
add_executable(dictionary_test dictionaryTest.cc)
|
||||||
target_link_libraries(dictionary_test klib)
|
target_link_libraries(dictionary_test scsl)
|
||||||
add_test(dictionaryTest dictionary_test)
|
add_test(dictionaryTest dictionary_test)
|
||||||
|
|
||||||
add_executable(buffer_test bufferTest.cc)
|
add_executable(buffer_test bufferTest.cc)
|
||||||
target_link_libraries(buffer_test klib)
|
target_link_libraries(buffer_test scsl)
|
||||||
add_test(bufferTest buffer_test)
|
add_test(bufferTest buffer_test)
|
||||||
|
|
||||||
add_executable(stringutil_test stringutil_test.cc)
|
add_executable(stringutil_test stringutil_test.cc)
|
||||||
target_link_libraries(stringutil_test klib)
|
target_link_libraries(stringutil_test scsl)
|
||||||
add_test(stringutilTest stringutil_test)
|
add_test(stringutilTest stringutil_test)
|
||||||
|
|
||||||
include(CMakePackageConfigHelpers)
|
include(CMakePackageConfigHelpers)
|
||||||
write_basic_package_version_file(
|
write_basic_package_version_file(
|
||||||
klibConfig.cmake
|
scslConfig.cmake
|
||||||
VERSION ${PACKAGE_VERSION}
|
VERSION ${PACKAGE_VERSION}
|
||||||
COMPATIBILITY AnyNewerVersion
|
COMPATIBILITY AnyNewerVersion
|
||||||
)
|
)
|
||||||
|
|
||||||
if (${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
|
if (NOT ${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
add_custom_target(cloc
|
add_custom_target(cloc
|
||||||
COMMAND cloc ${SOURCE_FILES} ${HEADER_FILES}
|
COMMAND cloc ${SOURCE_FILES} ${HEADER_FILES}
|
||||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||||
|
add_custom_target(deploy-docs
|
||||||
|
COMMAND rsync --progress -auvz ${CMAKE_CURRENT_BINARY_DIR}/html/* docs.shimmering-clarity.net:sites/cc/
|
||||||
|
DEPENDS scsl_docs
|
||||||
|
)
|
||||||
|
|
||||||
configure_file(klib.pc.in klib.pc @ONLY)
|
configure_file(scsl.pc.in scsl.pc @ONLY)
|
||||||
install(TARGETS klib LIBRARY DESTINATION lib)
|
install(TARGETS scsl LIBRARY DESTINATION lib)
|
||||||
install(TARGETS phonebook RUNTIME DESTINATION bin)
|
install(TARGETS phonebook RUNTIME DESTINATION bin)
|
||||||
install(FILES ${HEADER_FILES} DESTINATION include/klib)
|
install(FILES ${HEADER_FILES} DESTINATION include/scsl)
|
||||||
install(FILES klibConfig.cmake DESTINATION share/klib/cmake)
|
install(FILES scslConfig.cmake DESTINATION share/scsl/cmake)
|
||||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/klib.pc DESTINATION lib/pkgconfig)
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/scsl.pc DESTINATION lib/pkgconfig)
|
||||||
|
|
||||||
include(CMakePack.txt)
|
include(CMakePack.txt)
|
||||||
include(CMakeDocs.txt)
|
include(CMakeDocs.txt)
|
||||||
|
|
|
@ -2,17 +2,17 @@
|
||||||
include(InstallRequiredSystemLibraries)
|
include(InstallRequiredSystemLibraries)
|
||||||
|
|
||||||
set(CPACK_PACKAGE_VENDOR "Shimmering Clarity")
|
set(CPACK_PACKAGE_VENDOR "Shimmering Clarity")
|
||||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Common C++ functionality.")
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The Shimmering Clarity standard C++ library.")
|
||||||
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
|
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
|
||||||
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
||||||
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
|
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
|
||||||
|
|
||||||
# Debian settings
|
# Debian settings
|
||||||
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "K. Isom")
|
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Shimmering Clarity")
|
||||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The Shimmering Clarity C++ library")
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The Shimmering Clarity standard C++ library")
|
||||||
set(CPACK_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})
|
set(CPACK_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})
|
||||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc++1 (>= 3.7.0-1)")
|
|
||||||
set(CPACK_DEBIAN_PACKAGE_SECTION devel)
|
set(CPACK_DEBIAN_PACKAGE_SECTION devel)
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON)
|
||||||
|
|
||||||
if(LINUX)
|
if(LINUX)
|
||||||
set(CPACK_GENERATOR "DEB;STGZ;TGZ")
|
set(CPACK_GENERATOR "DEB;STGZ;TGZ")
|
||||||
|
@ -32,5 +32,5 @@ set(CPACK_SOURCE_IGNORE_FILES
|
||||||
/.*build.*)
|
/.*build.*)
|
||||||
|
|
||||||
include (CPack)
|
include (CPack)
|
||||||
add_custom_target(package_docs DEPENDS klib_docs package package_source)
|
add_custom_target(package_docs DEPENDS SCSL_docs package package_source)
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
///
|
///
|
||||||
/// \file Commander.cpp
|
/// \file Commander.cc
|
||||||
/// \author kyle
|
/// \author kyle
|
||||||
/// \date 2023-10-10
|
/// \date 2023-10-10
|
||||||
///
|
///
|
||||||
|
@ -7,7 +7,7 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "Commander.h"
|
#include "Commander.h"
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
|
|
||||||
Subcommand::Status
|
Subcommand::Status
|
||||||
|
@ -57,4 +57,4 @@ Commander::Run(std::string command, int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} // klib
|
} // scsl
|
10
Commander.h
10
Commander.h
|
@ -19,10 +19,10 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
#ifndef KLIB_COMMANDER_H
|
#ifndef SCSL_COMMANDER_H
|
||||||
#define KLIB_COMMANDER_H
|
#define SCSL_COMMANDER_H
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
|
|
||||||
/// CommanderFunc describes a function that can be run in Commander.
|
/// CommanderFunc describes a function that can be run in Commander.
|
||||||
|
@ -104,7 +104,7 @@ private:
|
||||||
std::map<std::string, Subcommand *> cmap;
|
std::map<std::string, Subcommand *> cmap;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // klib
|
} // scsl
|
||||||
|
|
||||||
|
|
||||||
#endif //KLIB_COMMANDER_H
|
#endif //SCSL_COMMANDER_H
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include "Dictionary.h"
|
#include "Dictionary.h"
|
||||||
|
|
||||||
#if defined(KLIB_DESKTOP_BUILD)
|
#if defined(SCSL_DESKTOP_BUILD)
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -124,7 +124,7 @@ Dictionary::spaceAvailable(uint8_t klen, uint8_t vlen)
|
||||||
required += klen + 2;
|
required += klen + 2;
|
||||||
required += vlen + 2;
|
required += vlen + 2;
|
||||||
|
|
||||||
remaining = (uintptr_t)cursor - (uintptr_t)arena.NewCursor();
|
remaining = (uintptr_t)cursor - (uintptr_t) arena.Start();
|
||||||
remaining = arena.Size() - remaining;
|
remaining = arena.Size() - remaining;
|
||||||
return ((size_t)remaining >= required);
|
return ((size_t)remaining >= required);
|
||||||
}
|
}
|
||||||
|
@ -133,8 +133,8 @@ Dictionary::spaceAvailable(uint8_t klen, uint8_t vlen)
|
||||||
std::ostream &
|
std::ostream &
|
||||||
operator<<(std::ostream &os, const Dictionary &dictionary)
|
operator<<(std::ostream &os, const Dictionary &dictionary)
|
||||||
{
|
{
|
||||||
#if defined(KLIB_DESKTOP_BUILD)
|
#if defined(SCSL_DESKTOP_BUILD)
|
||||||
uint8_t *cursor = (dictionary.arena).NewCursor();
|
uint8_t *cursor = (dictionary.arena).Start();
|
||||||
TLV::Record rec;
|
TLV::Record rec;
|
||||||
|
|
||||||
TLV::ReadFromMemory(rec, cursor);
|
TLV::ReadFromMemory(rec, cursor);
|
||||||
|
@ -164,4 +164,4 @@ Dictionary::DumpToFile(const char *path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace klib
|
} // namespace scsl
|
10
Dictionary.h
10
Dictionary.h
|
@ -1,12 +1,12 @@
|
||||||
///
|
///
|
||||||
/// \file klib.h
|
/// \file scsl.h
|
||||||
/// \author kyle
|
/// \author kyle
|
||||||
/// \date 2023-10-06
|
/// \date 2023-10-06
|
||||||
///
|
///
|
||||||
|
|
||||||
|
|
||||||
#ifndef KLIB_DICTIONARY_H
|
#ifndef SCSL_DICTIONARY_H
|
||||||
#define KLIB_DICTIONARY_H
|
#define SCSL_DICTIONARY_H
|
||||||
|
|
||||||
|
|
||||||
#include "Arena.h"
|
#include "Arena.h"
|
||||||
|
@ -17,7 +17,7 @@ static constexpr uint8_t DICTIONARY_TAG_KEY = 1;
|
||||||
static constexpr uint8_t DICTIONARY_TAG_VAL = 2;
|
static constexpr uint8_t DICTIONARY_TAG_VAL = 2;
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -124,6 +124,6 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include "Exceptions.h"
|
#include "Exceptions.h"
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
|
|
||||||
AssertionFailed::AssertionFailed(std::string message) : msg(message)
|
AssertionFailed::AssertionFailed(std::string message) : msg(message)
|
||||||
|
|
10
Exceptions.h
10
Exceptions.h
|
@ -2,14 +2,14 @@
|
||||||
// Created by kyle on 2023-10-10.
|
// Created by kyle on 2023-10-10.
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef KLIB_EXCEPTIONS_H
|
#ifndef SCSL_EXCEPTIONS_H
|
||||||
#define KLIB_EXCEPTIONS_H
|
#define SCSL_EXCEPTIONS_H
|
||||||
|
|
||||||
|
|
||||||
#include <exception>
|
#include <exception>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
|
|
||||||
/// NotImplemented is an exception reserved for unsupported platforms.
|
/// NotImplemented is an exception reserved for unsupported platforms.
|
||||||
|
@ -45,7 +45,7 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
||||||
|
|
||||||
#endif //KLIB_EXCEPTIONS_H
|
#endif //SCSL_EXCEPTIONS_H
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -5,7 +5,7 @@ SOURCES := $(wildcard *.cc)
|
||||||
OBJS := Arena.o Dictionary.o TLV.o
|
OBJS := Arena.o Dictionary.o TLV.o
|
||||||
|
|
||||||
CXX := clang++
|
CXX := clang++
|
||||||
CXXFLAGS := -g -std=c++14 -Werror -Wall -DKLIB_DESKTOP_BUILD
|
CXXFLAGS := -g -std=c++14 -Werror -Wall -DSCSL_DESKTOP_BUILD
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(TARGET) $(TESTS) tags run-tests
|
all: $(TARGET) $(TESTS) tags run-tests
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include "StringUtil.h"
|
#include "StringUtil.h"
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
/// namespace U contains utilities.
|
/// namespace U contains utilities.
|
||||||
namespace U {
|
namespace U {
|
||||||
|
|
||||||
|
@ -162,4 +162,4 @@ VectorToString(const std::vector<std::string> &svec)
|
||||||
|
|
||||||
} // namespace S
|
} // namespace S
|
||||||
} // namespace U
|
} // namespace U
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
18
StringUtil.h
18
StringUtil.h
|
@ -31,9 +31,9 @@
|
||||||
#define STRINGUTIL_H
|
#define STRINGUTIL_H
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
/// namespace U contains utilities.
|
|
||||||
|
|
||||||
|
/// namespace U contains utilities.
|
||||||
namespace U {
|
namespace U {
|
||||||
|
|
||||||
/// namespace S contains string-related functions.
|
/// namespace S contains string-related functions.
|
||||||
|
@ -83,21 +83,25 @@ std::vector<std::string> SplitKeyValuePair(std::string line, std::string delimit
|
||||||
/// \return The key and value.
|
/// \return The key and value.
|
||||||
std::vector<std::string> SplitKeyValuePair(std::string line, char delimiter);
|
std::vector<std::string> SplitKeyValuePair(std::string line, char delimiter);
|
||||||
|
|
||||||
|
/// Split a string into parts based on the delimiter.
|
||||||
std::vector<std::string> Split(std::string, std::string delimiter);
|
///
|
||||||
std::vector<std::string> Split(std::string, char delimiter);
|
/// \param delimiter The string that delimits the parts of the string.
|
||||||
|
/// \param maxCount The maximum number of parts to split. If 0, there is no limit
|
||||||
|
/// to the number of parts.
|
||||||
|
/// \return A vector containing all the parts of the string.
|
||||||
std::vector<std::string> SplitN(std::string, std::string delimiter, size_t maxCount=0);
|
std::vector<std::string> SplitN(std::string, std::string delimiter, size_t maxCount=0);
|
||||||
|
|
||||||
//std::vector<std::string> SplitN(std::string, char delimiter, size_t size_t maxCount=0);
|
//std::vector<std::string> SplitN(std::string, char delimiter, size_t size_t maxCount=0);
|
||||||
|
|
||||||
|
|
||||||
|
/// Return a string represention of a string vector in the form [size]{"foo", "bar", ...}.
|
||||||
std::ostream &VectorToString(std::ostream &os, const std::vector<std::string> &svec);
|
std::ostream &VectorToString(std::ostream &os, const std::vector<std::string> &svec);
|
||||||
std::string VectorToString(const std::vector<std::string> &svec);
|
std::string VectorToString(const std::vector<std::string> &svec);
|
||||||
|
|
||||||
|
|
||||||
} // namespace S
|
} // namespace S
|
||||||
} // namespace U
|
} // namespace U
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
||||||
|
|
||||||
#endif // STRINGUTIL_H
|
#endif // STRINGUTIL_H
|
||||||
|
|
10
TLV.cc
10
TLV.cc
|
@ -1,13 +1,13 @@
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include "TLV.h"
|
#include "TLV.h"
|
||||||
|
|
||||||
using namespace klib;
|
using namespace scsl;
|
||||||
|
|
||||||
|
|
||||||
#define REC_SIZE(x) ((std::size_t)x.Len + 2)
|
#define REC_SIZE(x) ((std::size_t)x.Len + 2)
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
namespace TLV {
|
namespace TLV {
|
||||||
|
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ LocateTag(Arena &arena, uint8_t *cursor, Record &rec)
|
||||||
uint8_t tag, len;
|
uint8_t tag, len;
|
||||||
|
|
||||||
if (cursor == nullptr) {
|
if (cursor == nullptr) {
|
||||||
cursor = arena.NewCursor();
|
cursor = arena.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((tag = cursor[0]) != rec.Tag) {
|
while ((tag = cursor[0]) != rec.Tag) {
|
||||||
|
@ -155,7 +155,7 @@ DeleteRecord(Arena &arena, uint8_t *cursor)
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t len = cursor[1] + 2;
|
uint8_t len = cursor[1] + 2;
|
||||||
uint8_t *stop = arena.NewCursor() + arena.Size();
|
uint8_t *stop = arena.Start() + arena.Size();
|
||||||
|
|
||||||
stop -= len;
|
stop -= len;
|
||||||
|
|
||||||
|
@ -173,4 +173,4 @@ DeleteRecord(Arena &arena, uint8_t *cursor)
|
||||||
|
|
||||||
|
|
||||||
} // namespace TLV
|
} // namespace TLV
|
||||||
} // namespace klib
|
} // namespace scsl
|
4
TLV.h
4
TLV.h
|
@ -20,7 +20,7 @@
|
||||||
#include "Arena.h"
|
#include "Arena.h"
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
namespace TLV {
|
namespace TLV {
|
||||||
|
|
||||||
#ifndef TLV_MAX_LEN
|
#ifndef TLV_MAX_LEN
|
||||||
|
@ -123,7 +123,7 @@ uint8_t *SkipRecord(Record &rec, uint8_t *cursor);
|
||||||
|
|
||||||
|
|
||||||
} // namespace TLV
|
} // namespace TLV
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
8
Test.cc
8
Test.cc
|
@ -10,12 +10,12 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
void
|
void
|
||||||
TestAssert(bool condition, std::string message)
|
TestAssert(bool condition, std::string message)
|
||||||
{
|
{
|
||||||
#if defined(NDEBUG) || defined(KLIB_NO_ASSERT)
|
#if defined(NDEBUG) || defined(SCSL_NO_ASSERT)
|
||||||
if (!condition) {
|
if (!condition) {
|
||||||
throw AssertionFailed(message);
|
throw AssertionFailed(message);
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ TestAssert(bool condition)
|
||||||
if (condition) {
|
if (condition) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#if defined(KLIB_NO_ASSERT)
|
#if defined(SCSL_NO_ASSERT)
|
||||||
std::cerr << "Assertion failed!\n";
|
std::cerr << "Assertion failed!\n";
|
||||||
#else
|
#else
|
||||||
std::stringstream msg;
|
std::stringstream msg;
|
||||||
|
@ -49,4 +49,4 @@ TestAssert(bool condition)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
12
Test.h
12
Test.h
|
@ -4,13 +4,13 @@
|
||||||
/// \date 2023-10-09
|
/// \date 2023-10-09
|
||||||
/// \brief Test.h implements basic testing tools.
|
/// \brief Test.h implements basic testing tools.
|
||||||
///
|
///
|
||||||
#ifndef KLIB_TEST_H
|
#ifndef SCSL_TEST_H
|
||||||
#define KLIB_TEST_H
|
#define SCSL_TEST_H
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
|
|
||||||
/// TestAssert is a variant on the assert macro. This variant is intended to be
|
/// TestAssert is a variant on the assert macro. This variant is intended to be
|
||||||
|
@ -29,7 +29,7 @@ void TestAssert(bool condition);
|
||||||
/// If NDEBUG is set, TestAssert will throw an exception if condition is false.
|
/// If NDEBUG is set, TestAssert will throw an exception if condition is false.
|
||||||
/// Otherwise, it calls assert after printing the message.
|
/// Otherwise, it calls assert after printing the message.
|
||||||
///
|
///
|
||||||
/// In addition to NDEBUG, KLIB_NO_ASSERT will suppress assertions.
|
/// In addition to NDEBUG, SCSL_NO_ASSERT will suppress assertions.
|
||||||
///
|
///
|
||||||
/// \throws AssertionFailed
|
/// \throws AssertionFailed
|
||||||
///
|
///
|
||||||
|
@ -38,6 +38,6 @@ void TestAssert(bool condition);
|
||||||
void TestAssert(bool condition, std::string message);
|
void TestAssert(bool condition, std::string message);
|
||||||
|
|
||||||
|
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
||||||
#endif //KLIB_TEST_H
|
#endif //SCSL_TEST_H
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include "WinHelpers.h"
|
#include "WinHelpers.h"
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
namespace Windows {
|
namespace Windows {
|
||||||
|
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ CreateFixedSizeFile(const char *path, size_t size)
|
||||||
|
|
||||||
|
|
||||||
} // namespace Windows
|
} // namespace Windows
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
10
WinHelpers.h
10
WinHelpers.h
|
@ -2,8 +2,8 @@
|
||||||
// Created by kyle on 2023-10-10.
|
// Created by kyle on 2023-10-10.
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef KLIB_WINHELPERS_H
|
#ifndef SCSL_WINHELPERS_H
|
||||||
#define KLIB_WINHELPERS_H
|
#define SCSL_WINHELPERS_H
|
||||||
|
|
||||||
#if defined(__WIN64__) || defined(__WIN32__) || defined(WIN32)
|
#if defined(__WIN64__) || defined(__WIN32__) || defined(WIN32)
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
#include <fileapi.h>
|
#include <fileapi.h>
|
||||||
#include <strsafe.h>
|
#include <strsafe.h>
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
namespace Windows {
|
namespace Windows {
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,8 +32,8 @@ int CreateFixedSizeFile(const char *path, size_t size);
|
||||||
|
|
||||||
|
|
||||||
} // namespace Windows
|
} // namespace Windows
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
||||||
#endif // Windows-only guards.
|
#endif // Windows-only guards.
|
||||||
|
|
||||||
#endif //KLIB_WINHELPERS_H
|
#endif //SCSL_WINHELPERS_H
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#include "Buffer.h"
|
#include "Buffer.h"
|
||||||
using namespace klib;
|
using namespace scsl;
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include "testFixtures.h"
|
#include "testFixtures.h"
|
||||||
|
|
||||||
|
|
||||||
using namespace klib;
|
using namespace scsl;
|
||||||
|
|
||||||
|
|
||||||
constexpr char TEST_KVSTR1[] = "foo";
|
constexpr char TEST_KVSTR1[] = "foo";
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
set(KLIB_INCLUDE_DIRS include/klib)
|
|
||||||
set(KLIB_LIBRARIES libklib.a)
|
|
|
@ -9,7 +9,7 @@ using namespace std;
|
||||||
#include "Arena.h"
|
#include "Arena.h"
|
||||||
#include "Commander.h"
|
#include "Commander.h"
|
||||||
#include "Dictionary.h"
|
#include "Dictionary.h"
|
||||||
using namespace klib;
|
using namespace scsl;
|
||||||
|
|
||||||
static const char *defaultPhonebook = "pb.dat";
|
static const char *defaultPhonebook = "pb.dat";
|
||||||
static char *pbFile = (char *)defaultPhonebook;
|
static char *pbFile = (char *)defaultPhonebook;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
///
|
///
|
||||||
/// \file klib.h
|
/// \file scsl.h
|
||||||
/// \author kyle
|
/// \author kyle
|
||||||
/// \created 2023-10-10
|
/// \created 2023-10-10
|
||||||
/// \brief klib is my collection of C++ data structures and code.
|
/// \brief scsl is my collection of C++ data structures and code.
|
||||||
///
|
///
|
||||||
/// \section COPYRIGHT
|
/// \section COPYRIGHT
|
||||||
/// Copyright 2023 K. Isom <kyle@imap.cc>
|
/// Copyright 2023 K. Isom <kyle@imap.cc>
|
||||||
|
@ -21,8 +21,8 @@
|
||||||
/// SOFTWARE.
|
/// SOFTWARE.
|
||||||
///
|
///
|
||||||
|
|
||||||
#ifndef KLIB_KLIB_H
|
#ifndef SCSL_SCSL_H
|
||||||
#define KLIB_KLIB_H
|
#define SCSL_SCSL_H
|
||||||
|
|
||||||
|
|
||||||
#include <klib/Arena.h>
|
#include <klib/Arena.h>
|
||||||
|
@ -33,10 +33,10 @@
|
||||||
#include <klib/Test.h>
|
#include <klib/Test.h>
|
||||||
|
|
||||||
|
|
||||||
/// klib is the top-level namespace containing all the code in this library.
|
/// scsl is the top-level namespace containing all the code in this library.
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
/// \mainpage klib documentation
|
/// \mainpage scsl documentation
|
||||||
///
|
///
|
||||||
/// \section Introduction
|
/// \section Introduction
|
||||||
///
|
///
|
||||||
|
@ -71,4 +71,4 @@ namespace klib {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif // KLIB_KLIB_H
|
#endif // SCSL_SCSL_H
|
|
@ -0,0 +1,2 @@
|
||||||
|
set(SCSL_INCLUDE_DIRS include/scsl)
|
||||||
|
set(SCSL_LIBRARIES libscsl.a)
|
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
#include "StringUtil.h"
|
#include "StringUtil.h"
|
||||||
#include "Test.h"
|
#include "Test.h"
|
||||||
using namespace klib;
|
using namespace scsl;
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -114,4 +114,6 @@ main()
|
||||||
std::vector<std::string>{"abc", "def:ghij:klm"});
|
std::vector<std::string>{"abc", "def:ghij:klm"});
|
||||||
TestSplit("abc:def:ghij:klm", ":", 1,
|
TestSplit("abc:def:ghij:klm", ":", 1,
|
||||||
std::vector<std::string>{"abc:def:ghij:klm"});
|
std::vector<std::string>{"abc:def:ghij:klm"});
|
||||||
|
TestSplit("abc::def:ghi", ":", 0,
|
||||||
|
std::vector<std::string>{"abc", "", "def", "ghi"});
|
||||||
}
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef KLIB_TESTFIXTURES_H
|
#ifndef SCSL_TESTFIXTURES_H
|
||||||
#define KLIB_TESTFIXTURES_H
|
#define SCSL_TESTFIXTURES_H
|
||||||
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
#define TEST_STRLEN4 35
|
#define TEST_STRLEN4 35
|
||||||
|
|
||||||
|
|
||||||
namespace klib {
|
namespace scsl {
|
||||||
|
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
@ -44,7 +44,7 @@ cmpRecord(TLV::Record &a, TLV::Record &b)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace klib
|
} // namespace scsl
|
||||||
|
|
||||||
|
|
||||||
#endif // KLIB_TESTFIXTURES_H
|
#endif // SCSL_TESTFIXTURES_H
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
#include "testFixtures.h"
|
#include "testFixtures.h"
|
||||||
|
|
||||||
using namespace klib;
|
using namespace scsl;
|
||||||
|
|
||||||
|
|
||||||
static uint8_t arenaBuffer[ARENA_SIZE];
|
static uint8_t arenaBuffer[ARENA_SIZE];
|
||||||
|
@ -40,7 +40,7 @@ tlvTestSuite(Arena &backend)
|
||||||
std::cout << "\tFindTag 1" << "\n";
|
std::cout << "\tFindTag 1" << "\n";
|
||||||
cursor = TLV::FindTag(backend, cursor, rec4);
|
cursor = TLV::FindTag(backend, cursor, rec4);
|
||||||
assert(cursor != nullptr);
|
assert(cursor != nullptr);
|
||||||
assert(cursor != backend.NewCursor());
|
assert(cursor != backend.Start());
|
||||||
assert(cmpRecord(rec1, rec4));
|
assert(cmpRecord(rec1, rec4));
|
||||||
|
|
||||||
std::cout << "\tFindTag 2" << "\n";
|
std::cout << "\tFindTag 2" << "\n";
|
||||||
|
|
Loading…
Reference in New Issue