今日の雑記

生きることでいっぱいいっぱい

a24z でいろいろと

a24z http://d.hatena.ne.jp/w_o/searchdiary?word=%2a%5ba24z%5d
そろそろヘビーな使い方が始まりました。さてどうなる。
今までやったことメモ。

  1. D言語対応しなきゃ -> した
  2. 宣言とかその辺とか全ソースに書くのはメンドイし修正はあれだよね -> プリプロセッサで逃げる
  3. 引数が二つ以上あるコマンドはどう定義すれば良いのかしら? -> コンパイラやら VM やらのソースみたけど挫折
  4. とりあえず共通する関数は一つにまとめたい -> これもプリプロセッサで逃げる
  5. その関数を引数つきで呼び出した場合その引数ってどうやって取るのやら? -> 解決(?)

いやまあ、解らないところは本人に聞けばいんですが。その前に苦労しないとね、何かとね、アレでね。
まあ、今日はできたから良いや。
で、以下が最後の項目のソース。「extern」は D 側で実装している関数。


extern di_print( val: int ) -> void
extern df_print( val: float ) -> void

def start() -> void :
let:
i = 0
in:
di_print(16)
df_print(5.3)

while 1 :
i = 60
wait(i)
di_print(1);
yield

return

def wait( val : int ) -> void :
let:
i = 0
in:
i = val
while i :
i = i - 1
yield

return

こんな感じ。ていうかこれ合ってるのか?動いてる(みたいだ)けど。
ついでに、上記のソースの実体をば。

#include "common.a24zh"

def start() -> void :
let:
i = 0
in:
di_print(16)
df_print(5.3)

while 1 :
i = 60
wait(i)
di_print(1);
yield

return

#include "util.a24zh"

まあ、その、なんだ、「#include」が物語ってますな。しかもソースの上下になんて。