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))
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX