spiegel-keyman/core/src/keyboard.cpp
Marc Durdin 35e09caf64
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
chore(core): remove jsonpp
jsonpp was being used only in a single unit test, and so this was a lot
of overhead and complexity for very little benefit. We may want to add
some more unit tests in the future for state_api.tests.cpp to do a
deep comparison of the state?

Test-bot: skip
2026-04-11 07:39:56 +02:00

51 lines
1.3 KiB
C++

/*
Copyright: © 2018 SIL International.
Description: Internal keyboard class and adaptor class for the API.
Create Date: 2 Oct 2018
Authors: Tim Eves (TSE)
History: 7 Oct 2018 - TSE - Refactored out of km_core_keyboard_api.cpp
*/
#include "keyboard.hpp"
using namespace km::core;
inline
void keyboard_attributes::render()
{
// Make attributes point to the stored values above.
id = _keyboard_id.c_str();
version_string = _version_string.c_str();
default_options = _default_opts.data();
}
keyboard_attributes::keyboard_attributes(std::u16string const & kbid,
std::u16string const & version,
options_store const &opts)
: _keyboard_id(kbid),
_version_string(version),
_folder_path(""),
_default_opts(opts)
{
// Ensure that the default_options array will be properly terminated.
_default_opts.emplace_back();
render();
}
keyboard_attributes::keyboard_attributes(keyboard_attributes &&rhs)
: _keyboard_id(std::move(rhs._keyboard_id)),
_version_string(std::move(rhs._version_string)),
_folder_path(""),
_default_opts(std::move(rhs._default_opts))
{
rhs.id = rhs.version_string = nullptr;
render();
}
keyboard_attributes & keyboard_attributes::operator = (keyboard_attributes &&rhs)
{
return *new (this) keyboard_attributes(std::move(rhs));
}