変数名取得

#module

#deffunc init_getvn
	if inited : return
	inited = 1
	exist "obj"
	if strsize < 0 : end
	sdim axbuf, strsize
	bload "obj", axbuf
	max_val = lpeek( axbuf, 8 )
	pt_ds = lpeek( axbuf, 24 )
	max_ds = lpeek( axbuf, 28 )
	pt_dinfo = lpeek( axbuf, 40 )
	max_dinfo = lpeek( axbuf, 44 )
	dupptr dinfo, varptr( axbuf ) + pt_dinfo, max_dinfo
	dupptr ds, varptr( axbuf ) + pt_ds, max_ds
	
	sdim varnames, 64, max_val
	varnames_i = 0
	repeat max_dinfo
		char = peek( dinfo, cnt )
		if char == 255 : break
		if char == 254 : continue cnt + 1 + 3 + 2
		if char == 253 {
			ds_offset = lpeek( dinfo, cnt + 1 ) & 0x00ffffff
			varnames.varnames_i = strf( "%s", varptr( ds ) + ds_offset )
			varnames_i ++
			continue cnt + 1 + 3 + 2
		}
		if char == 252 : continue cnt + 1 + 2
	loop
	return

#defcfunc getvarname var v
	init_getvn
	mref hspctx, 68
	dupptr pval_ptr, hspctx.207, 4 // prmstack
	pval_ptr_first = hspctx.11 // mem_var
	// sizeof PVal == 48
	return varnames( ( pval_ptr - pval_ptr_first ) / 48 )

#global

mes getvarname ( hoge )