diff --git a/src/rime_api.cc b/src/rime_api.cc index 9740e88c2..e8e61f7d6 100644 --- a/src/rime_api.cc +++ b/src/rime_api.cc @@ -719,6 +719,24 @@ RIME_API Bool RimeConfigBeginList(RimeConfigIterator* iterator, iterator->list = new RimeConfigIteratorImpl(*list, key); return True; } +RIME_API Bool RimeConfigListAppendString(RimeConfig* config, const char* key, const char* value) { + if (!config) { + return False; + } + Config* c = reinterpret_cast(config->ptr); + if (!c) { + return False; + } + an list = c->GetList(key); + if (!list) { + return False; + } + auto val = New(); + val->SetString(value); + if(!list->Append(val)) + return False; + return True; +} RIME_API Bool RimeConfigBeginMap(RimeConfigIterator* iterator, RimeConfig* config, @@ -1172,6 +1190,7 @@ RIME_API RimeApi* rime_get_api() { s_api.config_create_map = &RimeConfigCreateMap; s_api.config_list_size = &RimeConfigListSize; s_api.config_begin_list = &RimeConfigBeginList; + s_api.config_list_append_string = &RimeConfigListAppendString; s_api.get_input = &RimeGetInput; s_api.get_caret_pos = &RimeGetCaretPos; s_api.select_candidate = &RimeSelectCandidate; diff --git a/src/rime_api.h b/src/rime_api.h index 1d6c6a7bc..157c7168a 100644 --- a/src/rime_api.h +++ b/src/rime_api.h @@ -291,6 +291,9 @@ RIME_API Bool RimeFreeStatus(RimeStatus* status); // Accessing candidate list RIME_API Bool RimeCandidateListBegin(RimeSessionId session_id, RimeCandidateListIterator* iterator); +RIME_API Bool RimeConfigListAppendString(RimeConfig* config, + const char* key, + const char* value); RIME_API Bool RimeCandidateListNext(RimeCandidateListIterator* iterator); RIME_API void RimeCandidateListEnd(RimeCandidateListIterator* iterator); RIME_API Bool RimeCandidateListFromIndex(RimeSessionId session_id, @@ -578,7 +581,9 @@ typedef struct rime_api_t { Bool (*config_begin_list)(RimeConfigIterator* iterator, RimeConfig* config, const char* key); - + Bool (*config_list_append_string)(RimeConfig* config, + const char* key, + const char* value); //! get raw input /*! * NULL is returned if session does not exist.