RubyからCのヘッダ定義を読み込みたい

RubyからCのヘッダ定義を読み込みたい。というか
ヘッダで定義してある値を使いたい。
っていうのは、Rubyでioctlしてみようとした時に
パラメータが必要なので。
具体的には(うちの環境では) /usr/include/linux/soundcard.h
に書いてある、SOUND_PCM_READ_RATEとかSOUND_PCM_READ_CHANNELSとか。


Cのプログラムに吐き出させるのが間違いが無いと思いましたので
erubyでCのSourceを吐くようにする。

#include <stdio.h>
#include "/usr/include/linux/soundcard.h"

<% 
  ary = [
    :SOUND_PCM_READ_RATE ,
    :SOUND_PCM_READ_CHANNELS,
    :SOUND_PCM_READ_BITS,
    :SNDCTL_DSP_GETBLKSIZE,
  ]
%>

int main(void)
{
  printf("module SoundCard\n  Param = {\n");
  <% ary.each do |i|  %>
  printf("    :<%= i.to_s %> => 0x%x,\n", <%=i%>);
  <% end %>
  printf("  }\nend\n");
  return 0;
}


コンパイルして実行したらrubyでrequireできる
ファイルができています。

module SoundCard
  Param = {
    :SOUND_PCM_READ_RATE => 0x80045002,
    :SOUND_PCM_READ_CHANNELS => 0x80045006,
    :SOUND_PCM_READ_BITS => 0x80045005,
    :SNDCTL_DSP_GETBLKSIZE => 0xc0045004,
  }
end


以上をやった後に以下のURLに欲しかった定義が
rubyファイルになっているのが見つかってorz
http://gridflow.ca/latest/devices4ruby/SoundPCM.rb
これはスバラシイ。


まぁそれは気にしないとして、erubyの<% %>ってhtmlに埋め込むとhtmlタグにまぎれて
気にならないけどC言語とかに埋め込むと微妙に見えますねー、という感想でした。
Cとかの代替案だと/% %/とかが良いのかなー


追記(修正あり):
id:rubikitchさんにerubisなら -p '/% %/'でできるよ。
って教えてもらいました。ありがとうございます。


eRubyのembedded patternを変更する - ’(rubikitch wanna be (a . lisper))
http://d.hatena.ne.jp/rubikitch/20080217/erubis