Development notes for SCIM
==========================

If you want to write your own input method with SCIM, you should
implement three classes, BackEnd, ServerFactory and ServerInstance:

* BackEnd
  Manage all of the ServerFactory objects in order to let FrontEnd
  use them. 
  See src/scim_backend.* to learn how to implement it.

* ServerFactory
  An input method has one ServerFactory objects which manages all of
  the ServerInstance objects that FrontEnd requests to create. If there
  are any global data which should be shared among all ServerInstances, such as
  phrase library etc.,they should be put into ServerFactory and only transfer
  the pointer to ServerInstance. 
  See src/scim_server.* and modules/Server/* to learn how to implement it.

* ServerInstance
  The real keyevents -> strings conversion work is done by this class.
  The keyevents fired by client program will be transported to ServerInstance
  by calling ServerInstance::process_key_event (...) from FrontEnd.
  ServerInstance objects should process these key events and make response to
  FrontEnd by calling base class functions show_preedit_string,
  update_preedit_string etc. 
  See modules/Server/* to learn how to implement it.
