From f8f1407fb8cbc8bb88004f8a6feb45799f7b1ca7 Mon Sep 17 00:00:00 2001 From: Tim Eves Date: Wed, 19 Dec 2018 11:20:28 +0700 Subject: [PATCH 01/17] Rfactor options out of class state into virtual methods on abstract_processor --- .../src/km_kbp_options_api.cpp | 14 ++- .../src/km_kbp_state_api.cpp | 2 +- .../keyboardprocessor/src/kmx/kmx_actions.cpp | 5 +- .../src/kmx/kmx_environment.cpp | 44 ++++++--- .../src/kmx/kmx_environment.h | 2 +- .../keyboardprocessor/src/kmx/kmx_options.cpp | 38 +++++--- .../keyboardprocessor/src/kmx/kmx_options.h | 13 ++- .../src/kmx/kmx_processevent.cpp | 32 ++++++- .../src/kmx/kmx_processevent.hpp | 7 +- .../src/kmx/kmx_processor.cpp | 4 +- .../src/mock/mock_processor.cpp | 46 +++++---- .../src/mock/mock_processor.hpp | 17 ++-- .../engine/keyboardprocessor/src/option.cpp | 94 ++++--------------- .../engine/keyboardprocessor/src/option.hpp | 34 ------- .../keyboardprocessor/src/processor.hpp | 16 +++- common/engine/keyboardprocessor/src/state.cpp | 12 +-- common/engine/keyboardprocessor/src/state.hpp | 5 - .../tests/unit/kmnkbd/state_api.cpp | 32 ------- 18 files changed, 182 insertions(+), 235 deletions(-) diff --git a/common/engine/keyboardprocessor/src/km_kbp_options_api.cpp b/common/engine/keyboardprocessor/src/km_kbp_options_api.cpp index eeee167d62..2245a67bec 100644 --- a/common/engine/keyboardprocessor/src/km_kbp_options_api.cpp +++ b/common/engine/keyboardprocessor/src/km_kbp_options_api.cpp @@ -42,9 +42,9 @@ km_kbp_state_option_lookup(km_kbp_state const *state, if (scope == KM_KBP_OPT_UNKNOWN || scope > KM_KBP_OPT_MAX_SCOPES) return KM_KBP_STATUS_INVALID_ARGUMENT; - auto & opts = state->options(); + auto & processor = state->processor(); - *value_out = opts.lookup(km_kbp_option_scope(scope), key); + *value_out = processor.lookup_option(km_kbp_option_scope(scope), key).value; if (!*value_out) return KM_KBP_STATUS_KEY_ERROR; return KM_KBP_STATUS_OK; @@ -57,7 +57,7 @@ km_kbp_state_options_update(km_kbp_state *state, km_kbp_option_item const *opt) assert(state); assert(opt); if (!state|| !opt) return KM_KBP_STATUS_INVALID_ARGUMENT; - auto & opts = state->options(); + auto & processor = state->processor(); try { @@ -66,7 +66,10 @@ km_kbp_state_options_update(km_kbp_state *state, km_kbp_option_item const *opt) if (opt->scope == KM_KBP_OPT_UNKNOWN || opt->scope > KM_KBP_OPT_MAX_SCOPES) return KM_KBP_STATUS_INVALID_ARGUMENT; - if (!opts.assign(state, km_kbp_option_scope(opt->scope), opt->key, opt->value)) + if (processor.update_option( + km_kbp_option_scope(opt->scope), + opt->key, + opt->value).empty()) return KM_KBP_STATUS_KEY_ERROR; } } @@ -92,7 +95,8 @@ km_kbp_state_options_to_json(km_kbp_state const *state, char *buf, size_t *space try { - jo << state->options(); +// TODO: Fix +// jo << state->options(); } catch (std::bad_alloc) { diff --git a/common/engine/keyboardprocessor/src/km_kbp_state_api.cpp b/common/engine/keyboardprocessor/src/km_kbp_state_api.cpp index dae278974f..7dc9c1fe37 100644 --- a/common/engine/keyboardprocessor/src/km_kbp_state_api.cpp +++ b/common/engine/keyboardprocessor/src/km_kbp_state_api.cpp @@ -176,7 +176,7 @@ km_kbp_status km_kbp_state_to_json(km_kbp_state const *state, jo << json::object << "$schema" << "keyman/keyboardprocessor/doc/introspection.schema" << "keyboard" << state->processor().keyboard() - << "options" << state->options() +// << "options" << state->options() TODO: Fix << "context" << state->context() << "actions" << state->actions() << json::close; diff --git a/common/engine/keyboardprocessor/src/kmx/kmx_actions.cpp b/common/engine/keyboardprocessor/src/kmx/kmx_actions.cpp index 5182154978..03c70eb134 100644 --- a/common/engine/keyboardprocessor/src/kmx/kmx_actions.cpp +++ b/common/engine/keyboardprocessor/src/kmx/kmx_actions.cpp @@ -4,7 +4,8 @@ */ #include -using namespace km::kbp::kmx; +using namespace km::kbp; +using namespace kmx; void KMX_Actions::ResetQueue() { @@ -31,7 +32,7 @@ KMX_BOOL KMX_Actions::QueueAction(int ItemType, KMX_DWORD dwData) QueueSize++; int result = TRUE; - + switch(ItemType) { case QIT_VKEYDOWN: diff --git a/common/engine/keyboardprocessor/src/kmx/kmx_environment.cpp b/common/engine/keyboardprocessor/src/kmx/kmx_environment.cpp index c17a8762e8..4fac39182f 100644 --- a/common/engine/keyboardprocessor/src/kmx/kmx_environment.cpp +++ b/common/engine/keyboardprocessor/src/kmx/kmx_environment.cpp @@ -21,23 +21,41 @@ namespace { } KMX_Environment::KMX_Environment() { + Load(KM_KBP_KMX_ENV_PLATFORM, DEFAULT_PLATFORM); + Load(KM_KBP_KMX_ENV_BASELAYOUT, DEFAULT_BASELAYOUT); + Load(KM_KBP_KMX_ENV_BASELAYOUTALT, DEFAULT_BASELAYOUTALT); + Load(KM_KBP_KMX_ENV_SIMULATEALTGR, DEFAULT_SIMULATEALTGR); + Load(KM_KBP_KMX_ENV_CAPSLOCK, DEFAULT_CAPSLOCK); + Load(KM_KBP_KMX_ENV_BASELAYOUTGIVESCTRLRALTFORRALT, DEFAULT_BASELAYOUTGIVESCTRLRALTFORRALT); } -void KMX_Environment::InitOption(std::vector