タグ

xsに関するdannのブックマーク (78)

  • wakaponさんの超☆痛々しいPerl備忘帳: tieはmagicに包含されるのめもめも

    tieとmagicについて自分なりに消化するためのめもめも.両者の根底にある質は,ある変数へのアクセス動作に対し,hookの仕組みを与えるということ.この観点からtieとmagicについて見てみる.まずtie.hook機構をオブジェクトで包み込んだものをPerl変数と結びつける.パッケージと変数が結びつくことはhookのコードが散らばらないためにそう構想されたであろうということであり,結びつくということが質ではなく,hookできるということがじゅーよう.tieはPerlプログラマがふつーに使える.hookできる動作は,変数の種類によって異なる.どの変数に対し,どんな動作をhookできるかは,Tie::Scalar・Tie::Array・Tie::Hashなどを見るとインタフェースが載っている.次にmagic.こちらはtieとは違い,XSUBや処理系内部でハイパー使われている.tieのh

    dann
    dann 2009/01/11
  • example/lib/Method/Modifiers.pm - metacpan.org

    dann
    dann 2009/01/09
  • perldoc perlxstutを読んだときのメモ - はこべにっき ♨

    正月番組をみながら[http://perldoc.perl.org/perlxstut.html#EXAMPLE-3:title=perldoc perlxstut]を読んだ.メモをとったのでせっかくだからはっつけておくよ. ちょっとメモがはしょり気味なのと,うちの理解があやしいところがあってこころもとないですが,perlxstut読むときの参考にでもなればばば. Example1 $ h2xs -A -n Mytest で雛形がつくれる.生成されたMytest.xsにXSのコードを書く 値を返さないHello, WorldだとCODE:以下にprintfを書くだけでOK void hello() CODE: printf("Hello, world!\n"); CODE: みたいな部分はXS特有の書き方.あとで展開されてCのコードになる. $ perl Makefile.PL $ mak

    perldoc perlxstutを読んだときのメモ - はこべにっき ♨
    dann
    dann 2009/01/03
  • XS(とC++)入門したい - はこべにっき ♨

    XSを使ってみたい.ついでにC++も勉強したい.とりあえず今日はShibuya.pm #9 のXSトークを何個か見てみた. PerlからXSの世界をながめてみる まずは,PerlからXSの世界をながめてみる.整数値は一度文字列化すると文字列表現がキャッシュされる.Devel::PeekでXSレベルの構造体をダンプするとわかるよ. コード #!/usr/bin/env perl use strict; use warnings; use Perl6::Say; use Devel::Peek; my $x = 100; say Dump $x; "$x\n"; # 文字列化 say Dump $x; 実行結果 SV = IV(0x80cebc) at 0x800b88 REFCNT = 1 FLAGS = (PADBUSY,PADMY,IOK,pIOK) IV = 100 SV = PVIV

    XS(とC++)入門したい - はこべにっき ♨
    dann
    dann 2008/12/31
  • coji - ニコニコ

    cojiさんのユーザーページです。http://coji.s9.xrea.com/

    coji - ニコニコ
    dann
    dann 2008/12/31
  • XSモジュール用のModule::Setupのflavorを作った

    まだXSのことをよくわかってないのですが、XSモジュール用のModule::Setupのflavorを作ってみました。 このflavorを使うには、記事下にあるコードをXSFlavor.pmって名前でファイルに保存して、 % module-setup --init --flavor-class=+XSFlavor xs でflavorを展開したら、あとは以下のようにするだけでXSモジュールの雛形ができあがります。 % module-setup Your::Module xs このflaverでできる雛形のXSには、newとincrementっていう関数が最初から追加されているので、いらない場合はてきとうに編集してください。 このflavorを最初はModule::Starterで作ろうと思ってたんだけど、module-starterコマンドではflavorの使い分ける機能がないんですね。自

    dann
    dann 2008/12/31
    cooooool
  • perl.xs archive - nntp.perl.org

    dann
    dann 2008/12/30
  • Perl and C++

    Gluing C++ And Perl Together August 27, 2001 Perl XS (the Perl native glue) and C++ hookup is not clearly covered in any one reference that I can find. So here's some coverage. 1. Preparing the Installation XS totally supports C++. XS is not the problem. Getting MakeMaker happy is the problem. And even that is just a few words. Here's the steps to create a working C++ project from scratch: Run h2x

    dann
    dann 2008/12/30
  • wakaponさんの超☆Perl備忘帳: XS xsubpp Dynaloader MakeMaker typemap

    XSをまったく使ったことが無かったので試してみることにした。XSUBをPerlに組込むわけではないので、xsubppで出力した結果(XSUB)を見ながらにやにやするにとどまる。 まずは、MODULE、PACKAGE、PROTOTYPE、INPUT、PREINIT、CODEから。今回は引数スタックをPPしないので、ただのCODE。以下に試したXSを示す。 hoge.xs MODULE = HOGE   PACKAGE = HOGE char * hoge_hello (num) PROTOTYPE:$ INPUT:    int num; PREINIT:    int i;    static char *no = "no";    static char *ok = "ok"; CODE:    if (num < 0)    { RETVAL = no; }    else    {

    dann
    dann 2008/12/30
  • はてなブログ | 無料ブログを作成しよう

    27年ぶりのYUKIライブ 2024/8/11。僕は埼玉の戸田市文化会館で行われた”YUKI concert tour “SUPER SLITS” 2024”に参加した。前にYUKIの歌声を聴いたのは1997/05/27の代々木第一体育館。実に27年の歳月が経ってしまった。 なぜそんなに間が空いたのか。なぜ、それでも参加しようと思ったのか…

    はてなブログ | 無料ブログを作成しよう
    dann
    dann 2008/12/29
  • 複数ファイルを使った中規模 XS の開発 - daily dayflower

    複数ファイルをビルド対象とした XS の開発について,あまり手間をかけないシンプルで効果的な方法を書いていきます。自分の経験をもとに書きますのでベストプラクティスではありませんが。 余談(SV*() マクロの sideeffect にやられた話) state_stack という配列に state を整数値でスタックとして格納していて,スタックから過去の state を取り出そうとしたんです。 んで(わりと素直に) state = SvIV(av_pop(state_stack)); と書いたら,2つずつスタックから pop されてしまいました*1。 XS hacker なら当たり前な話ですけど,SV*() というのは一見関数然としてますがマクロなんです。 #define SvIV(sv) (SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv)) こんな形で,いずれのケースに

    複数ファイルを使った中規模 XS の開発 - daily dayflower
    dann
    dann 2008/12/22
  • はてなブログ | 無料ブログを作成しよう

    セメントドリンク、ブラウン管、吊るされた収納、OMORIカフェ、くり抜き、どや顔の初音ミク パチミラ福岡に出演する縁で博多に行きました。 楽しかったのでその時の写真をアップロードします。 博多駅のハートポスト 手描きのグリッチ カニの丸揚げ(おいしかった) フレッシュセメント という名前の飲み物(おいしかった)ごま+バナナスムージーっぽかった? 泡系…

    はてなブログ | 無料ブログを作成しよう
    dann
    dann 2008/12/20
  • モダンなXSの書き方 - Islands in the byte stream (legacy)

    PerlのソースコードはPerl言語以上に変化が大きく,それに伴ってXSの書き方もだいぶ変わってきている。新しいAPIを使ったほうが可読性がよかったり高速だったり使いやすかったりする。 たとえば,スカラー(SV)から文字列(PV: pointer valueつまりchar*)を得るAPIの変遷は次のようになっている。 /* SV*からPVを得る古い書き方 */ STRLEN len; const char* pv = SvPV(pv, len); # pvとlen両方ほしいとき const char* pv_only = SvPV(pv, PL_na); # pvだけほしいとき /* その後SvPV_nolen()が追加され,PL_naはdeprecatedに */ const char* pv_only = SvPV_nolen(pv); /* 今は*_constが追加されたのでcons

    モダンなXSの書き方 - Islands in the byte stream (legacy)
    dann
    dann 2008/12/19
  • はてなブログ | 無料ブログを作成しよう

    27年ぶりのYUKIライブ 2024/8/11。僕は埼玉の戸田市文化会館で行われた”YUKI concert tour “SUPER SLITS” 2024”に参加した。前にYUKIの歌声を聴いたのは1997/05/27の代々木第一体育館。実に27年の歳月が経ってしまった。 なぜそんなに間が空いたのか。なぜ、それでも参加しようと思ったのか…

    はてなブログ | 無料ブログを作成しよう
    dann
    dann 2008/12/15
  • はてなブログ | 無料ブログを作成しよう

    27年ぶりのYUKIライブ 2024/8/11。僕は埼玉の戸田市文化会館で行われた”YUKI concert tour “SUPER SLITS” 2024”に参加した。前にYUKIの歌声を聴いたのは1997/05/27の代々木第一体育館。実に27年の歳月が経ってしまった。 なぜそんなに間が空いたのか。なぜ、それでも参加しようと思ったのか…

    はてなブログ | 無料ブログを作成しよう
    dann
    dann 2008/12/15
  • Perl5 C Functions You Don't Know About - D-6 [相変わらず根無し]

    Perl5 C Functions You Don't Know About Perl5は実にさまざまな環境で動く。すると当然だが、C/XSでコードを書くときはその辺りも考慮にいれつつコードを書くのが良い。 File::MMagic::XSはApacheもmod_mime_magicをXSから直接使えるようにポートした物だ。これをPerl用にポートするとなると当然APRが使えないので環境の差を吸収してくれるレイヤーがなくなってしまう。んじゃあそのままCの関数使えばいいのかというと・・・Perl5がすでに吸収してくれるところが結構おおいのだな。 perldoc perlclibとすると、その辺りのC関数→Perlの内部関数の対応表を出してくれる。 が。書いてないものもある。そういうのはperlのソースコードを展開したところで.hファイルを色々grepしてるとでてくるので積極的に使っていくとい

    dann
    dann 2008/12/14
  • 私的 XS メモ - IT戦記

    参考にしたサイト集 perlxs - perldoc.perl.org perlxstut - perldoc.perl.org perlguts - perldoc.perl.org perlapi - perldoc.perl.org http://d.hatena.ne.jp/tokuhirom/20081209/1228829454 Perl XS メモ - typemap と MAGIC をからめて - daily dayflower http://pub.ne.jp/wakapon/?entry_id=1109553 http://pub.ne.jp/wakapon/?entry_id=1109664 準備 $ h2xs -A -n MyXSS Makefile.PL CC => 'g++', 型 SV スカラー AV 配列 HV ハッシュ CV コード GV グロブ RV リ

    私的 XS メモ - IT戦記
    dann
    dann 2008/12/13
  • Perl XS メモ - typemap と MAGIC をからめて - daily dayflower

    id:tokuhirom さんが http://d.hatena.ne.jp/tokuhirom/20081209/1228829454 で下地をつくってくださったので(perl-users.jp むけまとめも期待してます),ちょっとアドバンスドな話題を。 例題 http://www.sra.co.jp/people/m-kasahr/eb/ http://www.sra.co.jp/people/m-kasahr/eb/ の Perl binding を開発するとしましょう。 http://www.sra.co.jp/people/m-kasahr/eb/ の使い方は,たとえば次のような感じです。 EB_Book *book_pointer; book_pointer = (EB_Book *) malloc(sizeof(EB_Book)); eb_initialize_book(bo

    Perl XS メモ - typemap と MAGIC をからめて - daily dayflower
    dann
    dann 2008/12/11
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    dann
    dann 2008/12/09
  • XSでクロージャ - Islands in the byte stream (legacy)

    Perlのようにクロージャをサポートする言語では,eval()せずに実行時にサブルーチンを定義できるので大変便利である。しかし,Cではポータブルにクロージャを作る方法はないので,サブルーチンの動的定義とXSによる高速な実装は相容れないように見える。しかし,実際にはXSでもクロージャを作ることができる。というのも,Cの関数自体はデータを持てないが,newXS()で定義したCV(Code Value)はデータを持つことができるからだ。 そのためのスロットがSV全般に存在するMAGICスロットで,これは来はTie変数や%ENVなどの実装に使われるSVへの操作をフックするメカニズムである。しかしこの場合は,特定のCVとデータ(MAGIC構造体)を関連付けするためだけに使う。この関連付けられたデータCVの消滅と共に破棄されるので,クロージャの実装に使うことができる*1。 CVへの関連付けにはsv_

    XSでクロージャ - Islands in the byte stream (legacy)
    dann
    dann 2008/12/07