from electron 2 web

インターネットのリソースを無駄遣いして検索におけるUXを下げてごめんなさい

圧倒的文章力のNASAでゴミみたいなチラ裏のようなメモを量産してしまい全ての"Web開発者"にごめんなさい

mozcのengine_register.ccあたりを読む

ime実装してるんですがシグナル送るときにコアダンプで無事死亡というのがあり、mozcを参考にするも意味不明なラップしてるので死亡という感じなのでブログ書きながら詳しく見ていこうな。

まず、ここではRegisterがメインだ。こいつはmozc_engine.ccから呼ばれている。

L154

void MozcEngineClassInit(gpointer klass, gpointer class_data) {
  IBusEngineClass *engine_class = IBUS_ENGINE_CLASS(klass);

  VLOG(2) << "MozcEngineClassInit is called";
  mozc::ibus::EngineRegistrar::Register(
      mozc::Singleton<mozc::ibus::MozcEngine>::get(), engine_class);

  g_parent_class = reinterpret_cast<IBusEngineClass*>(
      g_type_class_peek_parent(klass));

  GObjectClass *object_class = G_OBJECT_CLASS(klass);
  object_class->constructor = MozcEngineClassConstructor;
  IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS(klass);
  ibus_object_class->destroy = MozcEngineClassDestroy;
}

シングルトンとかいう文字が見えますね。死亡です。 こいつはどこから呼ばれているかというと、呼ばれてなくてどうやらgtype_register_staticの引数として構造体経由で渡されてる。

gtyperegisterstaticはglib object systemのアです。

まぁでしょうね。

�> >基本型ではない型は、その親の型で定義されます。この親の型は引数 �> >parent_type として g_type_register_static() と g_type_register_dynamic() �> >の両関数へ引き渡されます。 �> >Non-Fundamental types are furthermore defined by the type of their �> >parent which is passed as the parent_type parameter to �> >g_type_register_static and g_type_register_dynamic.

自作してんのか・・・?型を・・・?

一旦公開。mozcよりibus-cannnaを見たほうが小さいしよさ気だった。