関数一覧2

パラメータタイプの一覧と関数の場合はカッコを出すようにできた。

#include "d3m.hsp"

mref hspctx, 68
dupptr hsphed, hspctx.0, 96 // hspctx.hsphed / sizeof HSPHED

ds_ptr = lpeek( hspctx, 12 ) // hspctx.mem_mds
max_ds = lpeek( hsphed, 28 ) // hsphed.max_ds
dupptr ds, ds_ptr, max_ds

linfo_ptr = lpeek( hspctx, 832 ) // hspctx.mem_linfo
max_linfo = lpeek( hsphed, 52 ) // hsphed.max_linfo
dupptr linfo, linfo_ptr, max_linfo

finfo_ptr = lpeek( hspctx, 840 ) // hspctx.mem_finfo
max_finfo = lpeek( hsphed, 60 ) // hsphed.max_finfo
dupptr finfo, finfo_ptr, max_finfo

minfo_ptr = lpeek( hspctx, 836 ) // hspctx.mem_minfo
max_minfo = lpeek( hsphed, 68 ) // hsphed.max_minfo
dupptr minfo, minfo_ptr, max_minfo

mes "* LINFO"
for i, 0, max_linfo, 16 // sizeof LIBDAT == 16
	flag = lpeek( linfo, i + 0 )
	nameidx = lpeek( linfo, i + 4 )
	hlib = lpeek( linfo, i + 8 )
	clsid = lpeek( linfo, i + 12 )

	;mes "flag = " + flag
	mes strf( "name = %s", ds_ptr + nameidx )
	;mes "hlib = " + hlib
	;mes "clsid = " + clsid
next

mes "* FINFO"
for i, 0, max_finfo, 28 // sizeof STRUCTDAT == 28
	index = wpeek( finfo, i + 0 )
	subid = wpeek( finfo, i + 2 )
	prmindex = lpeek( finfo, i + 4 )
	prmmax = lpeek( finfo, i + 8 )
	nameidx = lpeek( finfo, i + 12 )
	size = lpeek( finfo, i + 16 )
	otindex = lpeek( finfo, i + 20 )
	proc = lpeek( finfo, i + 24 )
	funcflag = proc
	out = strf( "%s", ds_ptr + nameidx )
	is_ctype = index == 0xfffe
	if funcflag {
		is_ctype = ( otindex & 4 ) != 0
	}
	if is_ctype : out += "(" : else : out += " "
	repeat prmmax
		if cnt : out += ", "
		mptype = wpeek( minfo, ( prmindex + cnt ) * 8 + 0 )
		gosub *gettypename
		out += refstr
	loop
	if is_ctype : out += ")"
	mes out
next

;mes "* MINFO"
for i, 0, max_minfo, 8 // sizeof STRUCTPRM == 8
	mptype = wpeek( minfo, i + 0 )
	subid = wpeek( minfo, i + 2 )
	offset = lpeek( minfo, i + 4 )
	;mes "mptype = " + mptype
	;mes "subid = " + subid
	;mes "offset = " + offset
next
stop

*gettypename
	switch mptype
	case 0
		return "none"
	case 1
		return "var"
	case 2
		return "str"
	case 3
		return "double"
	case 4
		return "int"
	case 5
		return "struct"
	case 7
		return "label"
	case 0xffff
		return "local"
	case 0xfffe
		return "array"
	case 0xfffd
		return "var"
	case 0xfffc
		return "float"
	case 0xfffb
		return "structtag"
	case 0xfffa
		return "str"
	swend
	return "unknown"