diff --git a/src/im/keyboard/compose.cpp b/src/im/keyboard/compose.cpp index d14b566c..88ab8029 100644 --- a/src/im/keyboard/compose.cpp +++ b/src/im/keyboard/compose.cpp @@ -6,7 +6,18 @@ */ #include "compose.h" -#include +#include +#include +#include +#include +#include +#include +#include "fcitx-utils/key.h" +#include "fcitx-utils/keysymgen.h" +#include "fcitx-utils/log.h" +#include "fcitx-utils/utf8.h" +#include "fcitx/inputcontext.h" +#include "fcitx/instance.h" namespace fcitx { @@ -101,7 +112,7 @@ bool ComposeState::typeImpl(KeySym sym, std::string &result) { // check compose first. auto composeResult = instance_->processComposeString(inputContext_, sym); if (!composeResult) { - assert(composeBuffer_.size() > 0); + assert(!composeBuffer_.empty()); if (instance_->isComposing(inputContext_)) { return true; } diff --git a/src/im/keyboard/compose.h b/src/im/keyboard/compose.h index 07c4b8ab..ea38ad6f 100644 --- a/src/im/keyboard/compose.h +++ b/src/im/keyboard/compose.h @@ -8,7 +8,10 @@ #define _FCITX_IM_KEYBOARD_COMPOSE_H_ #include -#include +#include +#include +#include "fcitx-utils/key.h" +#include "fcitx/instance.h" namespace fcitx { class ComposeState { diff --git a/src/im/keyboard/isocodes.cpp b/src/im/keyboard/isocodes.cpp index 06746599..6abaf6dc 100644 --- a/src/im/keyboard/isocodes.cpp +++ b/src/im/keyboard/isocodes.cpp @@ -7,8 +7,12 @@ #include "isocodes.h" #include -#include +#include +#include +#include +#include #include "fcitx-utils/metastring.h" +#include "fcitx-utils/misc.h" namespace fcitx { @@ -112,7 +116,8 @@ class IsoCodes3166Parser if (!alpha2 || json_object_get_type(alpha2) != json_type_string) { return; } - std::string alpha_2_code, name; + std::string alpha_2_code; + std::string name; name.assign(json_object_get_string(nameObj), json_object_get_string_len(nameObj)); alpha_2_code.assign(json_object_get_string(alpha2), diff --git a/src/im/keyboard/isocodes.h b/src/im/keyboard/isocodes.h index 71e0fee15..eb38972c 100644 --- a/src/im/keyboard/isocodes.h +++ b/src/im/keyboard/isocodes.h @@ -10,7 +10,7 @@ #include #include #include -#include "fcitx/misc_p.h" +#include "fcitx-utils/misc_p.h" namespace fcitx { diff --git a/src/im/keyboard/keyboard.cpp b/src/im/keyboard/keyboard.cpp index eaa6c7f8..4007017d 100644 --- a/src/im/keyboard/keyboard.cpp +++ b/src/im/keyboard/keyboard.cpp @@ -6,20 +6,50 @@ */ #include "keyboard.h" -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include "fcitx-config/iniparser.h" +#include "fcitx-config/rawconfig.h" +#include "fcitx-utils/capabilityflags.h" +#include "fcitx-utils/event.h" #include "fcitx-utils/i18n.h" +#include "fcitx-utils/key.h" +#include "fcitx-utils/keysym.h" +#include "fcitx-utils/keysymgen.h" +#include "fcitx-utils/macros.h" +#include "fcitx-utils/misc.h" +#include "fcitx-utils/misc_p.h" #include "fcitx-utils/stringutils.h" +#include "fcitx-utils/textformatflags.h" #include "fcitx-utils/utf8.h" +#include "fcitx/candidatelist.h" +#include "fcitx/event.h" +#include "fcitx/inputcontext.h" #include "fcitx/inputcontextmanager.h" #include "fcitx/inputcontextproperty.h" #include "fcitx/inputmethodentry.h" #include "fcitx/inputpanel.h" #include "fcitx/instance.h" +#include "fcitx/misc_p.h" +#include "fcitx/text.h" +#include "fcitx/userinterface.h" #include "chardata.h" #include "config.h" +#include "emoji_public.h" +#include "isocodes.h" #include "longpress.h" #include "notifications_public.h" #include "quickphrase_public.h" @@ -30,9 +60,6 @@ #include "xcb_public.h" #endif -#include -#include "emoji_public.h" - const char imNamePrefix[] = "keyboard-"; #define FCITX_KEYBOARD_MAX_BUFFER 20 @@ -131,7 +158,7 @@ class LongPressCandidateWord : public CandidateWord { const std::string &str() const { return text_; } void select(InputContext *inputContext) const override { - auto state = inputContext->propertyFor(engine_->factory()); + auto *state = inputContext->propertyFor(engine_->factory()); state->mode_ = CandidateMode::Hint; // Make sure the candidate is from not from long press mode. inputContext->inputPanel().setCandidateList(nullptr); @@ -358,7 +385,7 @@ static inline bool isValidSym(const Key &key) { static KeyList FCITX_HYPHEN_APOS = Key::keyListFromString("minus apostrophe"); bool KeyboardEngineState::updateBuffer(std::string_view chr) { - auto *entry = engine_->instance()->inputMethodEntry(inputContext_); + const auto *entry = engine_->instance()->inputMethodEntry(inputContext_); if (!entry) { return false; } @@ -472,7 +499,7 @@ bool KeyboardEngine::supportHint(const std::string &language) { return hasSpell || hasEmoji; } -void KeyboardEngineState::setPreedit() { +void KeyboardEngineState::setPreedit() const { const bool useClientPreedit = inputContext_->capabilityFlags().test(CapabilityFlag::Preedit); auto preeditText = preeditString(); @@ -499,7 +526,7 @@ void KeyboardEngineState::setPreedit() { void KeyboardEngineState::updateCandidate(const InputMethodEntry &entry) { inputContext_->inputPanel().reset(); std::vector> results; - if (auto spell = engine_->spell()) { + if (auto *spell = engine_->spell()) { results = spell->call( entry.languageCode(), SpellProvider::Default, buffer_.userInput(), engine_->config().pageSize.value()); @@ -540,7 +567,7 @@ void KeyboardEngine::resetState(InputContext *inputContext) { state->reset(); } -void KeyboardEngine::deactivate(const InputMethodEntry &, +void KeyboardEngine::deactivate(const InputMethodEntry & /*entry*/, InputContextEvent &event) { auto *inputContext = event.inputContext(); auto *state = inputContext->propertyFor(&factory_); @@ -556,7 +583,8 @@ void KeyboardEngine::deactivate(const InputMethodEntry &, inputContext->updateUserInterface(UserInterfaceComponent::InputPanel); } -void KeyboardEngine::reset(const InputMethodEntry &, InputContextEvent &event) { +void KeyboardEngine::reset(const InputMethodEntry & /*entry*/, + InputContextEvent &event) { auto *inputContext = event.inputContext(); auto *state = inputContext->propertyFor(&factory_); state->reset(); @@ -565,7 +593,7 @@ void KeyboardEngine::reset(const InputMethodEntry &, InputContextEvent &event) { inputContext->updateUserInterface(UserInterfaceComponent::InputPanel); } -void KeyboardEngine::invokeActionImpl(const InputMethodEntry &, +void KeyboardEngine::invokeActionImpl(const InputMethodEntry & /*entry*/, InvokeActionEvent &event) { auto *inputContext = event.inputContext(); auto *state = inputContext->propertyFor(&factory_); @@ -685,7 +713,7 @@ bool KeyboardEngineState::handleLongPress(const KeyEvent &event) { event.rawKey().states().test(KeyState::Repeat) && *engine_->config().enableLongPress && !engine_->isBlockedForLongPress(inputContext->program())) { - if (auto results = findValue(engine_->longPressData(), keystr)) { + if (const auto *results = findValue(engine_->longPressData(), keystr)) { if (repeatStarted_) { return true; } @@ -752,7 +780,8 @@ bool KeyboardEngineState::handleSpellModeTrigger(const InputMethodEntry &entry, return false; } -bool KeyboardEngineState::handleCandidateSelection(const KeyEvent &event) { +bool KeyboardEngineState::handleCandidateSelection( + const KeyEvent &event) const { // check if we can select candidate. auto candList = inputContext_->inputPanel().candidateList(); if (!candList) { @@ -821,7 +850,8 @@ std::string KeyboardEngineState::currentSelection() const { } } return buffer_.userInput(); - } else if (mode_ == CandidateMode::LongPress) { + } + if (mode_ == CandidateMode::LongPress) { if (candidateList && candidateList->cursorIndex() >= 0) { if (const auto *candidate = dynamic_cast( diff --git a/src/im/keyboard/keyboard.h b/src/im/keyboard/keyboard.h index 231d84bc..9ede069c 100644 --- a/src/im/keyboard/keyboard.h +++ b/src/im/keyboard/keyboard.h @@ -7,18 +7,32 @@ #ifndef _FCITX_IM_KEYBOARD_KEYBOARD_H_ #define _FCITX_IM_KEYBOARD_KEYBOARD_H_ +#include +#include +#include +#include +#include +#include +#include +#include #include "fcitx-config/configuration.h" +#include "fcitx-config/enum.h" #include "fcitx-config/iniparser.h" +#include "fcitx-config/option.h" +#include "fcitx-config/rawconfig.h" #include "fcitx-utils/event.h" +#include "fcitx-utils/handlertable.h" #include "fcitx-utils/i18n.h" #include "fcitx-utils/inputbuffer.h" +#include "fcitx-utils/key.h" #include "fcitx/addonfactory.h" +#include "fcitx/addoninstance.h" #include "fcitx/addonmanager.h" +#include "fcitx/event.h" #include "fcitx/inputcontextproperty.h" #include "fcitx/inputmethodengine.h" #include "fcitx/instance.h" #include "compose.h" -#include "isocodes.h" #include "keyboard_public.h" #include "longpress.h" #include "quickphrase_public.h" @@ -112,7 +126,7 @@ struct KeyboardEngineState : public InputContextProperty { bool handleLongPress(const KeyEvent &event); bool handleSpellModeTrigger(const InputMethodEntry &entry, const KeyEvent &event); - bool handleCandidateSelection(const KeyEvent &event); + bool handleCandidateSelection(const KeyEvent &event) const; std::tuple handleCompose(const KeyEvent &event); bool handleBackspace(const InputMethodEntry &entry); @@ -125,7 +139,7 @@ struct KeyboardEngineState : public InputContextProperty { void updateCandidate(const InputMethodEntry &entry); // Update preedit and send ui update. - void setPreedit(); + void setPreedit() const; // Return true if chr is pushed to buffer. // Return false if chr will be skipped by buffer, usually this means caller @@ -152,7 +166,8 @@ class KeyboardEngine final : public InputMethodEngineV3 { const Configuration *getSubConfig(const std::string &path) const override; - void setSubConfig(const std::string &, const fcitx::RawConfig &) override; + void setSubConfig(const std::string & /*unused*/, + const fcitx::RawConfig & /*unused*/) override; void reset(const InputMethodEntry &entry, InputContextEvent &event) override; diff --git a/src/im/keyboard/keyboard_public.h b/src/im/keyboard/keyboard_public.h index c52ed1d2..f9793e7e 100644 --- a/src/im/keyboard/keyboard_public.h +++ b/src/im/keyboard/keyboard_public.h @@ -8,6 +8,8 @@ #define _FCITX_IM_KEYBOARD_KEYBOARD_PUBLIC_H_ #include +#include +#include #include FCITX_ADDON_DECLARE_FUNCTION( diff --git a/src/im/keyboard/longpress.cpp b/src/im/keyboard/longpress.cpp index 697127f4..b88dc231 100644 --- a/src/im/keyboard/longpress.cpp +++ b/src/im/keyboard/longpress.cpp @@ -6,6 +6,11 @@ * */ #include "longpress.h" +#include +#include +#include +#include +#include namespace fcitx { @@ -132,7 +137,7 @@ void setupDefaultLongPressConfig(LongPressConfig &config) { {"$", {"¢", "€", "£", "¥", "₹", "₽", "₺", "₩", "₱", "₿"}}, }; { - auto value = config.entries.mutableValue(); + auto *value = config.entries.mutableValue(); for (const auto &[key, candidates] : data) { LongPressEntryConfig entry; entry.key.setValue(key); diff --git a/src/im/keyboard/longpress.h b/src/im/keyboard/longpress.h index b00383e0..45c2cede 100644 --- a/src/im/keyboard/longpress.h +++ b/src/im/keyboard/longpress.h @@ -7,7 +7,11 @@ #ifndef _FCITX5_IM_KEYBOARD_LONGPRESSDATA_H_ #define _FCITX5_IM_KEYBOARD_LONGPRESSDATA_H_ +#include +#include +#include #include "fcitx-config/configuration.h" +#include "fcitx-config/option.h" #include "fcitx-utils/i18n.h" namespace fcitx { diff --git a/src/im/keyboard/xkbrules.cpp b/src/im/keyboard/xkbrules.cpp index da607357..0eba1b57 100644 --- a/src/im/keyboard/xkbrules.cpp +++ b/src/im/keyboard/xkbrules.cpp @@ -6,8 +6,15 @@ */ #include "xkbrules.h" +#include +#include #include +#include +#include #include +#include +#include +#include #include "fcitx-utils/stringutils.h" #include "xmlparser.h" @@ -34,8 +41,8 @@ struct XkbRulesParseState : public XMLParser { array.begin()); } - void startElement(const XML_Char *name, const XML_Char **attrs) override { - parseStack_.emplace_back(reinterpret_cast(name)); + void startElement(const char *name, const char **attrs) override { + parseStack_.emplace_back(std::string(name)); textBuff_.clear(); if (match({"layoutList", "layout", "configItem"})) { @@ -46,8 +53,8 @@ struct XkbRulesParseState : public XMLParser { modelInfos_.emplace_back(); } else if (match({"optionList", "group"})) { optionGroupInfos_.emplace_back(); - int i = 0; - while (attrs && attrs[i * 2] != 0) { + ptrdiff_t i = 0; + while (attrs && attrs[i * 2] != nullptr) { if (strcmp(reinterpret_cast(attrs[i * 2]), "allowMultipleSelection") == 0) { optionGroupInfos_.back().exclusive = @@ -60,8 +67,8 @@ struct XkbRulesParseState : public XMLParser { } else if (match({"optionList", "group", "option"})) { optionGroupInfos_.back().optionInfos.emplace_back(); } else if (match({"xkbConfigRegistry"})) { - int i = 0; - while (attrs && attrs[i * 2] != 0) { + ptrdiff_t i = 0; + while (attrs && attrs[i * 2] != nullptr) { if (strcmp(reinterpret_cast(attrs[i * 2]), "version") == 0 && strlen(reinterpret_cast(attrs[i * 2 + 1])) != @@ -72,7 +79,7 @@ struct XkbRulesParseState : public XMLParser { } } } - void endElement(const XML_Char *) override { + void endElement(const char * /*name*/) override { auto text = stringutils::trimView(textBuff_); if (!text.empty()) { if (match({"layoutList", "layout", "configItem", "name"})) { @@ -123,7 +130,7 @@ struct XkbRulesParseState : public XMLParser { textBuff_.clear(); parseStack_.pop_back(); } - void characterData(const XML_Char *ch, int len) override { + void characterData(const char *ch, int len) override { textBuff_.append(reinterpret_cast(ch), len); } diff --git a/src/im/keyboard/xmlparser.cpp b/src/im/keyboard/xmlparser.cpp index 0ab436f4..adb8979d 100644 --- a/src/im/keyboard/xmlparser.cpp +++ b/src/im/keyboard/xmlparser.cpp @@ -6,10 +6,15 @@ */ #include "xmlparser.h" +#include +#include +#include #include "fcitx-utils/misc.h" #define XML_BUFFER_SIZE 4096 -bool fcitx::XMLParser::parse(const std::string &name) { +namespace fcitx { + +bool XMLParser::parse(const std::string &name) { UniqueCPtr parser( XML_ParserCreate(nullptr)); UniqueFilePtr input(std::fopen(name.c_str(), "r")); @@ -25,12 +30,12 @@ bool fcitx::XMLParser::parse(const std::string &name) { auto *ctx = static_cast(data); ctx->startElement(element_name, atts); }, - [](void *data, const XML_Char *name) { + [](void *data, const char *name) { auto *ctx = static_cast(data); ctx->endElement(name); }); XML_SetCharacterDataHandler(parser.get(), - [](void *data, const XML_Char *s, int len) { + [](void *data, const char *s, int len) { auto *ctx = static_cast(data); ctx->characterData(s, len); }); @@ -49,3 +54,5 @@ bool fcitx::XMLParser::parse(const std::string &name) { return true; } + +} // namespace fcitx diff --git a/src/im/keyboard/xmlparser.h b/src/im/keyboard/xmlparser.h index b55c8a61..b5292e5d 100644 --- a/src/im/keyboard/xmlparser.h +++ b/src/im/keyboard/xmlparser.h @@ -18,9 +18,9 @@ class XMLParser { bool parse(const std::string &name); protected: - virtual void startElement(const XML_Char *, const XML_Char **) {} - virtual void endElement(const XML_Char *) {} - virtual void characterData(const XML_Char *, int) {} + virtual void startElement(const char *name, const char **attrs) = 0; + virtual void endElement(const char *) = 0; + virtual void characterData(const char *ch, int len) = 0; }; } // namespace fcitx diff --git a/src/lib/fcitx/addoninstance.h b/src/lib/fcitx/addoninstance.h index 549948a3..30d311fc 100644 --- a/src/lib/fcitx/addoninstance.h +++ b/src/lib/fcitx/addoninstance.h @@ -9,7 +9,10 @@ #include #include +#include #include +#include +#include #include #include #include // IWYU pragma: export @@ -162,18 +165,21 @@ class FCITXCORE_EXPORT AddonInstance { namespace fcitx { \ template <> \ struct AddonFunctionSignature { \ - typedef std::remove_reference_t())> \ - type; \ + using type = \ + std::remove_reference_t())>; \ }; \ namespace I##NAME { \ struct FUNCTION { \ - typedef fcitxMakeMetaString(#NAME "::" #FUNCTION) Name; \ + using Name = fcitxMakeMetaString(#NAME "::" #FUNCTION); \ using Signature = AddonFunctionSignatureType; \ }; \ } \ } #define FCITX_ADDON_EXPORT_FUNCTION(CLASS, FUNCTION) \ + static_assert(std::is_same_v<::fcitx::I##CLASS::FUNCTION::Name, \ + fcitxMakeMetaString(#CLASS "::" #FUNCTION)>, \ + ""); \ decltype(::fcitx::MakeAddonFunctionAdaptor( \ &CLASS::FUNCTION)) FUNCTION##Adaptor{#CLASS "::" #FUNCTION, this, \ &CLASS::FUNCTION}; \