Summary: | Export Scheme interpreter interface as uim API | ||
---|---|---|---|
Product: | UIM | Reporter: | YamaKen <yamaken> |
Component: | libuim | Assignee: | YamaKen <yamaken> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | high | CC: | uim-bugs, yusuke |
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
URL: | http://lists.sourceforge.jp/mailman/archives/anthy-dev/2004-April/000762.html | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Bug Depends on: | |||
Bug Blocks: | 482, 486, 7164 |
Description
YamaKen
2004-04-17 06:41:17 UTC
We also need this to implement plugin feature. Shall we make a big structure that contains all of exported scheme functions? Say, struct uim_scheme { LISP (*car)(LISP ); LISP (*cdr)(LISP ); .. other functions here .. }; I'm no sure about the Tabata-san's idea. Although we have a similar structure uim_code_converter to handle a set of functions, I think that it's existing to handle polymorphism. I suppose that uim is always using one Scheme implementation only, so runtime polymorphism is not required. Simple abstraction through uim_scm_foo() is sufficient. Or other reason (efficiency)? I've Added uim-scm.h to svn repository by r727. This isn't the final API. Discussions are welcome. Exporting scheme object to C is somehow dangerous. Garbage Collector can't recognize reference to the objects outside libuim. current sumika has possibilities of following scenario (1) uim_lisp v = uim_scm_???() -> allocate cells and return them. (2) uim_scm_???() -> invoke GC inside. contents of v will be collected. (3) use v -> operation to garbage. good luck! uim-scm API reorganization has recently done. More elaboration is required. Current uim-scm implementation is enough to unblock bug #538. The uim-scm API will be revised and simplified at uim 1.3.0. Current uim-scm implementation is enough to close this bug. Simplification and reorganization should be separated as another bug. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.