増殖するコード

本日はRUNES::Manager::Rune::getRecursiveBundleDepend()をせっせと実装。or依存でユーザーに選択を求める部分以外は完成。

ユーザーに選択を求めるのは、orロジックの中に複数のbundleへの依存がある場合のみ。どのbundleを入れるか聞く。

andロジックの中では、File依存、Lib依存、Bin依存を優先して処理して、これらの依存に未解決のものがあれば「解決できないよー」と言って終了するようにしている。
bundle依存やorロジックを先に処理すると、「orの中」や「bundleの中のorの中」でどのbundleにするか聞いた後、「実はFile依存が満たせないからインストールできません!さっき聞いたけど、どれを選んでも結局インストールできませんでした。残念!」てなことになる可能性がある。

つまり、orロジックを包括しているものは後で処理をする。

で、bundle依存とandロジックはどっちを先に処理するか。

...

 
  hogeBundle
  /path/to/hoge
 

 
  fugaBundle
  fooBundle
 

 hegeBundle

...

てなorロジックがあったとき、andロジックとbundle依存のどちらを先に処理するべきか。
bundleは中にorを包括している可能性がある。でもandもorを包括している可能性がある。



…どっちでも良いか!
そもそも複数のbundleの選択肢があっても聞く必要無いとか?



というわけで、
$ cd viver
$ cat *.cc *.h | wc -l
7470

$ cd runes
$ cat *.cc *.h | wc -l
3338


ついに合わせて1万行を突破。

「昔、どこかの雑誌の記事で"米国の平均的なプログラマーが把握できるソースコードの量は1万行だ"というのを読んだことがあります」というのを読んだのですが、まだまだ把握できそう。
http://hira.main.jp/wiki/pukiwiki.php?2005_6_23%A5%AB%A1%BC%A5%CD%A5%EB%BA%C2%C3%CC%B2%F1%AD%A1