MOD ざざん

HSP_2014_step_ar_2.hsp

FILE名:FILE_step_ar_2.hsp
配列をバイト単位で確保(?)するモジュール
#define ERROR -128*256*256*256
#module step_ar_2 ar,index,max
#modinit int p
        dim ar,p
        index=0
        return
#modfunc local set int p_index,int value
        ar.p_index=value
        return
#modfunc local set_index int p
        index=p
        return
#modfunc local step_set int value
        ar.index=value
        index++
        return
#modfunc local set_max
        max=index
        return
#modfunc local get_max var p
        p=max
        return
#modcfunc local get
        if length(ar)>index{
                n=ar.index
                index++
                return n
        }
        return ERROR@
#modfunc local get_ar_length var p
        p=length(ar)
        return
#modcfunc local get_toString var s_p
        l=length(ar)+3
        sdim s_r,l
        ll=length(ar)
        repeat ll
                poke s_r,cnt,ar.cnt
        loop
        return s_r
#global
/*TEST CODE コメントアウト

//      インスタンスの配列サイズ16でオブジェクト生成
newmod a,step_ar_2,16

//      インスタンスのindexを0で初期化
set_index@step_ar_2 a,0

//      インスタンス代入
step_set@step_ar_2 a,'a'
step_set@step_ar_2 a,'b'
step_set@step_ar_2 a,'c'
;step_set@step_ar_2 a,1
;step_set@step_ar_2 a,2

//      配列の最大を更新
set_max@step_ar_2 a

//      インスタンスのindexを0で初期化
set_index@step_ar_2 a,0

//      配列の最大を取得
n=0
get_max@step_ar_2 a,n

//      配列の中身dump
repeat n
        mes get@step_ar_2(a)
        loop
        
//      配列のlength取得
get_ar_length@step_ar_2 a,m
mes m

//      数値配列を文字列化してgetして表示
s=""
mes get_toString@step_ar_2(a,s)

//*/

/*TEST CODE コメントアウト
newmod a,step_ar,16
repeat 16
        set@step_ar a,cnt,cnt
        loop
repeat 20
        mes get@step_ar(a)
        loop
//*/

README