HSPでモジュール変数再現

できないことはなかったけどマクロまみれだしとてつもなかった。型を放棄して全部文字列とかにすればかなり楽になるのは確か。

できないことはなかったけどマクロまみれだしとてつもなかった。型を放棄して全部文字列とかにすればかなり楽になるのは確か。

  • タグ:
  • hsp
#module Person
	;int
	#enum age=0
	;str
	#enum name=0
	;double
	#enum high=0
	#define ctype new(%1,%2,%3,%4) \
		i%1=0:s%1="":d%1=0.0:\
		__new@Person %2,%3,%4,%1_i,%1_s,%1_d
	#deffunc local __new str _name,int _age,double _high, \
		array ti,array ts,array td

		ts.name=_name
		ti.age=_age
		td.high=_high
	return

	#defcfunc local psName array ts
		return ts.name
	#define global ctype psName(%1) psName@Person(%1_s)

	#defcfunc local psAge array ti
		return ti.age
	#define global ctype psAge(%1) psAge@Person(%1_i)

	#defcfunc local psHigh array ts
		return ts.high
	#define global ctype psHigh(%1) psHigh@Person(%1_d)
#global

new@Person(bob,"bob",20,170.5)
new@Person(kate,"kate",17,155.2)
mes strf("name:%s age:%d high:%.1fcm",psName(bob),psAge(bob),psHigh(bob))
mes strf("name:%s age:%d high:%.1fcm",psName(kate),psAge(kate),psHigh(kate))