icubic library reference
PPMacro
開発目的
グラフィックライブラリを作成する場合、実行速度を上げるため、ピクセル処理をインラインアセンブラで作成する必要があります。またフォーマットが数種類あり、実行速度の関係からフォーマット分の関数を作成する必要があります。C++の場合、そのようなコードを生成するためにはプリプロセッサを使うわけですが、プリプロセッサは1行に展開されるため、インラインアセンブラのコードを出力できません。またプリプロセッサの場合、デバッグが非常に困難になります。このような問題を解決するためにPPMacroを開発しました。


入手場所
iCubic Library開発環境 & サンプルのToolsフォルダ内に入っています。


使用方法
コマンドプロンプトから"ppmacro.exe [入力ファイル] [出力ファイル]"を実行してください。"入力ファイル"が展開されて"出力ファイル"に出力されます。


文法
%include
外部のPPMacroファイルをインクルードします。

//test.ppcファイルをインクルードする
%include "test.ppc"


%table
テーブルを定義する。 %テーブル名_num%にテーブルのアイテムの数、%%テーブル名[オフセット位置]にテーブルのアイテムに置換される

//TableTestという名前のテーブルを定義する
%table Table
     ITEM_1
     ITEM_2
     ITEM_3
%table_end


%function
関数を定義する。"%引数名%"の文字列は引数に置換される。関数は%%関数名()に置換される

//引数を持つの関数を定義する
%function func_test( param )
       %param%            //この部分は引数の文字列に置換される
%function_end


%loop
ループ展開される。

//ループの位置は%offset%に展開される
%loop( offset , 10 )
     %offset%
%loop_end


%if , %else , %endif
条件分岐

//条件による分岐
%if ONE == ONE
     true
%else
    false
%endif


サンプル
入力ファイル

%table Table
    ONE
    TWO
    THREE
    FOUR
    FIVE
%table_end

%function func_test( param )
  %param%
%function_end

%loop( offset , %Table_num% )
    %if %%Table[ %offset% ] == ONE
        %%func_test( 1 )
    %else
        %%func_test( %%Table[ %offset% ] )
    %endif
%loop_end


出力ファイル

1
TWO
THREE
FOUR
FIVE

Copyright(C) 2008 fanzo.
更新日 20081120