希哲13年3月13日の開発

描主宇田川浩行#F85E
下描き希哲13年(2019年)
03月14日 02:11
利承
ライセンス
希哲館普通利承(KULクール

昨日考案した ライブラリの分割方式を適用する前に,今後の開発の基礎になることでもあるため, の基本的なライブラリヘッダー名前空間の構成について,一日かけて熟考した。

まず,新しい着想としては,魔法引括std.h を含むことで,非標準ライブラリの読み込み前に std.h の引括をしなくて済むことに気付いた。これは有用なので採用は確定している。

ここ最近考えるようになった xtd 表記の廃止と std 表記への統合は悩みどころだった。例えば入門者用に拡張標準のような予備知識を必要とする概念を最初から導入したくない,というのも大きかったが,説明可能性を重視すると,どうしてもライブラリヘッダー名前空間での整合性を取りたかった。このうち特に難しかったのは名前空間の問題だった。std に統合するなら,Cμ 標準 も std:: で参照出来た方が良い。この場合,基礎標準との切り分けをどうするかが難しい。

例えば何らかの名前空間を作って,use ns を使って ::std:: に統合する,擬似的に std:: に見えるようにするなどの実験はいくつかしたが,名前解決が出来ない違了が出るなどしてあまり上手くいかなかった。トリッキーなことは見通しを悪くし厄介な問題を招く可能性があり避けたいこともあり,この方向は諦めた。直接 ::std:: に入れてしまうことも考えたが,基礎標準との相互運用性を考えると避けたい。さらに,基礎標準のヘッダーを引括する際,何らかの名前空間で囲って隔離するということも考えたが,これも違了で上手くいかなかった。いずれにせよ,ヘッダーの実装によっておかしくなる可能性があるので得策ではない。

結論として,::std:: はそのままにしておくことにした。

::std:: 以外の名前空間を考えると,そもそも std で統一するという方針が怪しくなってきて,kn や mus といった別の表現で統一することまで考えたが,これはこれであまり美しく感じられない。そもそもグローバル空間に展開させているので,:: でいいのではないかとも考えたが,特に C ライブラリを扱うことを考えた時に,やはり場合によって固有の名前空間は欲しい。

こうして散々考えた結果,xtd は分かりやすくて悪くないという結論に至った。基礎標準・拡張標準という Cμ の説明体系にも整合しているし,結局これが一番簡潔で分かりやすく,::xtd:: の実装も単純でよく切り分けられている。ライブラリ(libxtd.so),ヘッダー(xtd.h),名前空間で何ら問題なく整合化出来る。自分で思っていたよりよく考えられた命名だった。

結局,ドット区切りのライブラリ分割,魔法引括による std.h の自動読み込み以外はほぼ現状維持となったが,何よりの収穫は の基本方針について迷いが無くなり,確信が深まったことだった。これで気兼ねなく作業を続けることが出来る。

他に,引括や名前空間などについて熟考したことで,use ns を例えば + 記号や w/(with の意)を使って引括時に指定出来るようにする,拡張標準のヘッダーは「少なくとも一つ書けばいい」という説明の仕方にする(これまでは必ず xtd を書くことを推奨するつもりだった),という案が出来た。これらは今後検討していく。

出力論組プログラム虎哲*イチ 1.01
制作・運営:希哲社
© K1-13 (2007-2019) KiTetuSha