4
9
Fork
You've already forked libchewing
3

Create mid-level API for internal use and external use #36

Open
opened 2012年12月06日 14:15:35 +01:00 by kanru · 5 comments
kanru commented 2012年12月06日 14:15:35 +01:00 (Migrated from github.com)
Copy link

Currently we call high-level API like chewing_handle_CtrlNum in other high-level APIs. This means if we change the high-level API implementation would also affect the other high-level user.

We should create mid-level API to operate on the internal state and dictionary data. These API will also be useful to external users.

Example: select_candidate, add_phrase (note these API are different with the low-level API which operates on data directly. The mid-level API operates on buffers and candidates.)

Currently we call high-level API like chewing_handle_CtrlNum in other high-level APIs. This means if we change the high-level API implementation would also affect the other high-level user. We should create mid-level API to operate on the internal state and dictionary data. These API will also be useful to external users. Example: select_candidate, add_phrase (note these API are different with the low-level API which operates on data directly. The mid-level API operates on buffers and candidates.)

The issue https://github.com/chewing/windows-chewing-tsf/issues/12 is related to high-level API changed.

The issue https://github.com/chewing/windows-chewing-tsf/issues/12 is related to high-level API changed.

The following are purposed new APIs for external use:

// candidate windows
chewing_cand_open(ChewingContext *ctx);
chewing_cand_close(ChewingContext *ctx);
chewing_cand_choose_by_index(ChewingContext *ctx, int index);
chewing_cand_String_by_index(ChewingContext *ctx, int index); // Already implemented, but not yet in any official release.
chewing_cand_next_cand_list(ChewingContext *ctx); // Change to next candidate list. For example: 2 words candidate list to 1 word candidate list
// add userphrase in preedit buffer
chewing_userphrase_add_in_preedit_buf(ChewingContext *ctx, unsigned int start, unsigned int end);
chewing_commit_preedit_buf(ChewingContext *ctx);
chewing_clean_bopomofo_buf(ChewingContext *ctx);

See also #65, #71, #92

The following are purposed new APIs for external use: ``` // candidate windows chewing_cand_open(ChewingContext *ctx); chewing_cand_close(ChewingContext *ctx); chewing_cand_choose_by_index(ChewingContext *ctx, int index); chewing_cand_String_by_index(ChewingContext *ctx, int index); // Already implemented, but not yet in any official release. chewing_cand_next_cand_list(ChewingContext *ctx); // Change to next candidate list. For example: 2 words candidate list to 1 word candidate list // add userphrase in preedit buffer chewing_userphrase_add_in_preedit_buf(ChewingContext *ctx, unsigned int start, unsigned int end); chewing_commit_preedit_buf(ChewingContext *ctx); chewing_clean_bopomofo_buf(ChewingContext *ctx); ``` See also #65, #71, #92
// candidate windows
int chewing_cand_is_open(ChewingContext *ctx);
int chewing_cand_open(ChewingContext *ctx);
itn chewing_cand_close(ChewingContext *ctx);
int chewing_cand_choose_by_index(ChewingContext *ctx, int index);
int chewing_cand_String_by_index(ChewingContext *ctx, int index); // Already implemented, but not yet in any official release.
// candidate list
int chewing_cand_has_next_cand_list(ChewingContext *ctx);
int chewing_cand_next_cand_list(ChewingContext *ctx);
int chewing_cand_prev_cand_list(ChewingContext *ctx);
// add userphrase in preedit buffer
int chewing_userphrase_add_from_preedit_buf(ChewingContext *ctx, unsigned int start, unsigned int end);
int chewing_commit_preedit_buf(ChewingContext *ctx);
int chewing_clean_preedit_buf(ChewingContext *ctx);
int chewing_clean_bopomofo_buf(ChewingContext *ctx);
``` // candidate windows int chewing_cand_is_open(ChewingContext *ctx); int chewing_cand_open(ChewingContext *ctx); itn chewing_cand_close(ChewingContext *ctx); int chewing_cand_choose_by_index(ChewingContext *ctx, int index); int chewing_cand_String_by_index(ChewingContext *ctx, int index); // Already implemented, but not yet in any official release. // candidate list int chewing_cand_has_next_cand_list(ChewingContext *ctx); int chewing_cand_next_cand_list(ChewingContext *ctx); int chewing_cand_prev_cand_list(ChewingContext *ctx); // add userphrase in preedit buffer int chewing_userphrase_add_from_preedit_buf(ChewingContext *ctx, unsigned int start, unsigned int end); int chewing_commit_preedit_buf(ChewingContext *ctx); int chewing_clean_preedit_buf(ChewingContext *ctx); int chewing_clean_bopomofo_buf(ChewingContext *ctx); ```
Also https://github.com/chewing/windows-chewing-tsf/issues/59
Also https://github.com/chewing/windows-chewing-tsf/issues/62
Sign in to join this conversation.
No Branch/Tag specified
master
push-uzswtuxmkpkw
release/0.13.x
push-qlrtqulwmpmp
push-wtuvoynpwosl
release/0.10.x
release/0.8.x
optimize-conversion
refactor-trie-loader
v0.13.1
v0.13.0
v0.12.0
v0.12.0-alpha.1
v0.11.0
v0.11.0-alpha.1
v0.10.3
v0.10.2
v0.10.1
v0.10.0
v0.9.1
v0.9.0
v0.9.0-rc.3
v0.9.0-rc.2
v0.9.0-rc.1
v0.8.5
v0.8.4
v0.8.3
v0.8.2
v0.8.1
v0.8.0
v0.8.0-rc.4
v0.8.0-rc.3
v0.8.0-rc.2
v0.8.0-rc.1
v0.7.0
v0.7.0-rc.2
v0.7.0-rc.1
v0.6.0
v0.6.0-rc.2
v0.6.0-rc.1
v0.5.1
v0.5.0
v0.4.0
v0.3.5
v0.3.4
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.7
v0.2.6
v0.2.5
v0.2.4
Labels
Clear labels
dictionary
duplicate
fixed
0.11.0

Archived

fixed
0.13.0

Archived

fixed
0.13.1
refactoring

Archived

rewrite in rust
Might be fixed by the rust rewrite
thirdparty
arch
aarch64
系統架構是 Aarch64
arch
x86_64
系統架構是 x86_64
cannot reproduce
無法重現問題 Cannot reproduce the issue
contribution welcome
歡迎來幫忙 Contributions are very welcome, get started here
duplicate
重複的問題回報 This issue or pull request already exists
good first issue
適合新手 Interested in contributing? Get started here.
help wanted
需要高手相助 Need some help
invalid
回報的問題無效 Something is wrong
kind
bug
有東西不正常運作 Something is not working
kind
doc
加強文件說明 Enhance documentation
kind
enhancement
新功能 New feature
kind
mega issue
同一個問題回報中包含多個問題 Multiple issues reported
kind
question
只是問問題 Asking a question
needinfo
需要更多資訊 More information is needed
os
apple
作業系統是 MacOS 或 iOS
os
linux
作業系統是 GNU Linux
os
windows
作業系統是 Windows
to be determined
還未被說服有需求 Can't decide whether this is needed
upstream
跟上游軟體相關 Related to an upstream repository, already reported there
wontfix
我們決定不處理 Won't be fixed
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
chewing/libchewing#36
Reference in a new issue
chewing/libchewing
No description provided.
Delete branch "%!s()"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?