Skip to content

Commit

Permalink
1. [RIME_API] New function of append string to ConfigList
Browse files Browse the repository at this point in the history
  • Loading branch information
TsinamLeung committed Dec 13, 2023
1 parent 09ecab8 commit 2944f7d
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
19 changes: 19 additions & 0 deletions src/rime_api.cc
Original file line number Diff line number Diff line change
Expand Up @@ -719,6 +719,24 @@ RIME_API Bool RimeConfigBeginList(RimeConfigIterator* iterator,
iterator->list = new RimeConfigIteratorImpl<ConfigList>(*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*>(config->ptr);
if (!c) {
return False;
}
an<ConfigList> list = c->GetList(key);
if (!list) {
return False;
}
auto val = New<ConfigValue>();
val->SetString(value);
if(!list->Append(val))
return False;
return True;
}

RIME_API Bool RimeConfigBeginMap(RimeConfigIterator* iterator,
RimeConfig* config,
Expand Down Expand Up @@ -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;
Expand Down
7 changes: 6 additions & 1 deletion src/rime_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit 2944f7d

Please sign in to comment.