impl.inc 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. enum ALS
  2. {
  3. Bit:ALS_OnScriptInit,
  4. Bit:ALS_OnScriptExit,
  5. Bit:ALS_OnGameModeInit,
  6. Bit:ALS_OnGameModeExit,
  7. Bit:ALS_OnFilterScriptInit,
  8. Bit:ALS_OnFilterScriptExit,
  9. Bit:ALS_OnPlayerConnect,
  10. Bit:ALS_OnPlayerDisconnect,
  11. Bit:ALS_OnPlayerSpawn,
  12. Bit:ALS_OnPlayerDeath,
  13. Bit:ALS_OnVehicleSpawn,
  14. Bit:ALS_OnVehicleDeath,
  15. Bit:ALS_OnPlayerText,
  16. Bit:ALS_OnPlayerCommandText,
  17. Bit:ALS_OnPlayerRequestClass,
  18. Bit:ALS_OnPlayerEnterVehicle,
  19. Bit:ALS_OnPlayerExitVehicle,
  20. Bit:ALS_OnPlayerStateChange,
  21. Bit:ALS_OnPlayerEnterCheckpoint,
  22. Bit:ALS_OnPlayerLeaveCheckpoint,
  23. Bit:ALS_OnPlayerEnterRaceCheckpoint,
  24. Bit:ALS_OnPlayerLeaveRaceCheckpoint,
  25. Bit:ALS_OnRconCommand,
  26. Bit:ALS_OnPlayerRequestSpawn,
  27. Bit:ALS_OnObjectMoved,
  28. Bit:ALS_OnPlayerObjectMoved,
  29. Bit:ALS_OnPlayerPickUpPickup,
  30. Bit:ALS_OnVehicleMod,
  31. Bit:ALS_OnEnterExitModShop,
  32. Bit:ALS_OnVehiclePaintjob,
  33. Bit:ALS_OnVehicleRespray,
  34. Bit:ALS_OnVehicleDamageStatusUpdate,
  35. Bit:ALS_OnPlayerSelectedMenuRow,
  36. Bit:ALS_OnPlayerExitedMenu,
  37. Bit:ALS_OnPlayerInteriorChange,
  38. Bit:ALS_OnPlayerKeyStateChange,
  39. Bit:ALS_OnRconLoginAttempt,
  40. Bit:ALS_OnPlayerUpdate,
  41. Bit:ALS_OnPlayerStreamIn,
  42. Bit:ALS_OnPlayerStreamOut,
  43. Bit:ALS_OnVehicleStreamIn,
  44. Bit:ALS_OnVehicleStreamOut,
  45. Bit:ALS_OnDialogResponse,
  46. Bit:ALS_OnPlayerClickPlayer,
  47. Bit:ALS_OnPlayerLogin,
  48. Bit:ALS_OnPlayerLogout,
  49. Bit:ALS_OnPlayerTakeDamage,
  50. Bit:ALS_OnPlayerGiveDamage,
  51. Bit:ALS_OnPlayerClickMap,
  52. Bit:ALS_OnPlayerCommandReceived,
  53. Bit:ALS_OnPlayerCommandPerformed,
  54. Bit:ALS_OnUnoccupiedVehicleUpdate,
  55. Bit:ALS_OnPlayerClickTextDraw,
  56. Bit:ALS_OnPlayerClickPlayerTextDraw,
  57. Bit:ALS_OnPlayerEditObject,
  58. Bit:ALS_OnPlayerEditAttachedObject,
  59. // YSI
  60. Bit:ALS_OnPlayerEnterArea,
  61. Bit:ALS_OnPlayerLeaveArea,
  62. Bit:ALS_OnPlayerFinishRace,
  63. Bit:ALS_OnPlayerExitRace,
  64. Bit:ALS_OnRaceEnd,
  65. #if defined _YSI_PLUGINS_STREAMER
  66. Bit:ALS_OnDynamicObjectMoved,
  67. Bit:ALS_OnPlayerEditDynamicObject,
  68. Bit:ALS_OnPlayerSelectDynamicObject,
  69. Bit:ALS_OnPlayerPickUpDynamicPickup,
  70. Bit:ALS_OnPlayerEnterDynamicCP,
  71. Bit:ALS_OnPlayerLeaveDynamicCP,
  72. Bit:ALS_OnPlayerEnterDynamicRaceCP,
  73. Bit:ALS_OnPlayerLeaveDynamicRaceCP,
  74. Bit:ALS_OnPlayerEnterDynamicArea,
  75. Bit:ALS_OnPlayerLeaveDynamicArea,
  76. #endif
  77. Bit:ALS_OnPlayerSelectObject
  78. }
  79. #define ALS_DATA<>
  80. #define ALS_DETECT<%0>
  81. // ALS Callback.
  82. #define _ALS_C_INT<%0,%2>(%3) ALS_MAKE<..._On%0>(ALS_RS_%3);
  83. #define ALS_C_INT<%0,%2>(%3) return _ALS_C_INT<%0,%2>(%3)
  84. // ALS Forward.
  85. #define ALS_F_INT<%0,%8>(%1) forward ALS_MAKE<..._On%0>(ALS_KS_%1);//ALS_F_INT1<%0,%8>(%1)ALS_F_INT2<%0,%8>(%1)
  86. //#define ALS_F_INT1<%0,%8>(%1) public ALS_MAKE<..._On%0>(ALS_KS_%1)<_ALS_:unhooked>{return ALS_R_%0;}
  87. //#define ALS_F_INT2<%0,%8>(%1) public ALS_MAKE<..._On%0>(ALS_KS_%1)<>{return ALS_R_%0;}
  88. // ALS Go (ignore extra parameters).
  89. #define ALS_G_INT<%0,%1>(%8)(%2) W@(#On#%0,(x:#%1#),%2)
  90. // Default return value definitions.
  91. #define ALS_R_ScriptInit 1
  92. #define ALS_R_ScriptExit 1
  93. #define ALS_R_GameModeInit 1
  94. #define ALS_R_GameModeExit 1
  95. #define ALS_R_FilterScriptInit 1
  96. #define ALS_R_FilterScriptExit 1
  97. #define ALS_R_PlayerConnect 1
  98. #define ALS_R_PlayerDisconnect 1
  99. #define ALS_R_PlayerSpawn 1
  100. #define ALS_R_PlayerDeath 1
  101. #define ALS_R_VehicleSpawn 1
  102. #define ALS_R_VehicleDeath 1
  103. #define ALS_R_PlayerText 1
  104. #define ALS_R_PlayerCommandText 0
  105. #define ALS_R_PlayerRequestClass 1
  106. #define ALS_R_PlayerEnterVehicle 1
  107. #define ALS_R_PlayerExitVehicle 1
  108. #define ALS_R_PlayerStateChange 1
  109. #define ALS_R_PlayerEnterCheckpoint 1
  110. #define ALS_R_PlayerLeaveCheckpoint 1
  111. #define ALS_R_PlayerEnterRaceCheckpoint 1
  112. #define ALS_R_PlayerLeaveRaceCheckpoint 1
  113. #define ALS_R_RconCommand 1
  114. #define ALS_R_PlayerRequestSpawn 1
  115. #define ALS_R_ObjectMoved 1
  116. #define ALS_R_PlayerObjectMoved 1
  117. #define ALS_R_PlayerPickUpPickup 1
  118. #define ALS_R_VehicleMod 1
  119. #define ALS_R_EnterExitModShop 1
  120. #define ALS_R_VehiclePaintjob 1
  121. #define ALS_R_VehicleRespray 1
  122. #define ALS_R_VehicleDamageStatusUpdate 1
  123. #define ALS_R_PlayerSelectedMenuRow 1
  124. #define ALS_R_PlayerExitedMenu 1
  125. #define ALS_R_PlayerInteriorChange 1
  126. #define ALS_R_PlayerKeyStateChange 1
  127. #define ALS_R_RconLoginAttempt 1
  128. #define ALS_R_PlayerUpdate 1
  129. #define ALS_R_PlayerStreamIn 1
  130. #define ALS_R_PlayerStreamOut 1
  131. #define ALS_R_VehicleStreamIn 1
  132. #define ALS_R_VehicleStreamOut 1
  133. #define ALS_R_DialogResponse 1
  134. #define ALS_R_PlayerClickPlayer 1
  135. #define ALS_R_PlayerLogin 1
  136. #define ALS_R_PlayerLogout 1
  137. #define ALS_R_PlayerTakeDamage 1
  138. #define ALS_R_PlayerGiveDamage 1
  139. #define ALS_R_PlayerClickMap 1
  140. #define ALS_R_PlayerCommandReceived 1
  141. #define ALS_R_PlayerCommandPerformed -1
  142. #define ALS_R_UnoccupiedVehicleUpdate 1
  143. // 0.3e
  144. #define ALS_R_PlayerClickTextDraw 1
  145. #define ALS_R_PlayerClickPlayerTextDraw 1
  146. #define ALS_R_PlayerEditObject 1
  147. #define ALS_R_PlayerEditAttachedObject 1
  148. #define ALS_R_PlayerSelectObject 1
  149. // YSI
  150. #define ALS_R_PlayerEnterArea 1
  151. #define ALS_R_PlayerLeaveArea 1
  152. #define ALS_R_PlayerFinishRace 1
  153. #define ALS_R_PlayerExitRace 1
  154. #define ALS_R_RaceEnd 1
  155. #define ALS_R_MasterSystemClose 1
  156. // Streamer plugins.
  157. #define ALS_R_DynamicObjectMoved 1
  158. #define ALS_R_PlayerEditDynamicObject 1
  159. #define ALS_R_PlayerSelectDynamicObject 1
  160. #define ALS_R_PlayerPickUpDynamicPickup 1
  161. #define ALS_R_PlayerEnterDynamicCP 1
  162. #define ALS_R_PlayerLeaveDynamicCP 1
  163. #define ALS_R_PlayerEnterDynamicRaceCP 1
  164. #define ALS_R_PlayerLeaveDynamicRaceCP 1
  165. #define ALS_R_PlayerEnterDynamicArea 1
  166. #define ALS_R_PlayerLeaveDynamicArea 1
  167. // Alternates
  168. #define ALS_R_PlayerLeaveRaceCP 1
  169. #define ALS_R_PlayerEnterRaceCP 1
  170. #define ALS_R_VehicleDamageStatusUpd 1
  171. #define ALS_R_UnoccupiedVehicleUpd 1
  172. #define ALS_R_PlayerClickPlayerTD 1
  173. #define ALS_R_PlayerEditAttachedObj 1
  174. #define ALS_R_PlayerCmdPerformed 1
  175. #define ALS_R_PlayerEditDynObject 1
  176. #define ALS_R_PlayerSelectDynObject 1
  177. #define ALS_R_PlayerPickUpDynPickup 1
  178. #define ALS_R_PlayerEnterDynRaceCP 1
  179. #define ALS_R_PlayerLeaveDynRaceCP 1
  180. #define ALS_R_PlayerEnterDynArea 1
  181. #define ALS_R_PlayerLeaveDynArea 1
  182. // Chain call declarations.
  183. #define ALS_DO_ScriptInit<%0> %0<ScriptInit,>(none:)
  184. #define ALS_DO_ScriptExit<%0> %0<ScriptExit,>(none:)
  185. #define ALS_DO_GameModeInit<%0> %0<GameModeInit,>(none:)
  186. #define ALS_DO_GameModeExit<%0> %0<GameModeExit,>(none:)
  187. #define ALS_DO_FilterScriptInit<%0> %0<FilterScriptInit,>(none:)
  188. #define ALS_DO_FilterScriptExit<%0> %0<FilterScriptExit,>(none:)
  189. #define ALS_DO_PlayerConnect<%0> %0<PlayerConnect,i>(end:playerid)
  190. #define ALS_DO_PlayerDisconnect<%0> %0<PlayerDisconnect,ii>(more:playerid,end:reason)
  191. #define ALS_DO_PlayerSpawn<%0> %0<PlayerSpawn,i>(end:playerid)
  192. #define ALS_DO_PlayerDeath<%0> %0<PlayerDeath,iii>(more:playerid,more:killerid,end:reason)
  193. #define ALS_DO_VehicleSpawn<%0> %0<VehicleSpawn,i>(end:vehicleid)
  194. #define ALS_DO_VehicleDeath<%0> %0<VehicleDeath,ii>(more:vehicleid,end:killerid)
  195. #define ALS_DO_PlayerText<%0> %0<PlayerText,is>(more:playerid,end_string:text[])
  196. #define ALS_DO_PlayerCommandText<%0> %0<PlayerCommandText,is>(more:playerid,end_string:cmdtext[])
  197. #define ALS_DO_PlayerRequestClass<%0> %0<PlayerRequestClass,ii>(more:playerid,end:classid)
  198. #define ALS_DO_PlayerEnterVehicle<%0> %0<PlayerEnterVehicle,iii>(more:playerid,more:vehicleid,end:ispassenger)
  199. #define ALS_DO_PlayerExitVehicle<%0> %0<PlayerExitVehicle,ii>(more:playerid,end:vehicleid)
  200. #define ALS_DO_PlayerStateChange<%0> %0<PlayerStateChange,iii>(more:playerid,more:newstate,end:oldstate)
  201. #define ALS_DO_PlayerEnterCheckpoint<%0> %0<PlayerEnterCheckpoint,i>(end:playerid)
  202. #define ALS_DO_PlayerLeaveCheckpoint<%0> %0<PlayerLeaveCheckpoint,i>(end:playerid)
  203. #define ALS_DO_PlayerEnterRaceCheckpoint<%0> %0<PlayerEnterRaceCheckpoint,i>(end:playerid)
  204. #define ALS_DO_PlayerLeaveRaceCheckpoint<%0> %0<PlayerLeaveRaceCheckpoint,i>(end:playerid)
  205. #define ALS_DO_RconCommand<%0> %0<RconCommand,s>(end_string:cmd[])
  206. #define ALS_DO_PlayerRequestSpawn<%0> %0<PlayerRequestSpawn,i>(end:playerid)
  207. #define ALS_DO_ObjectMoved<%0> %0<ObjectMoved,i>(end:objectid)
  208. #define ALS_DO_PlayerObjectMoved<%0> %0<PlayerObjectMoved,ii>(more:playerid,end:objectid)
  209. #define ALS_DO_PlayerPickUpPickup<%0> %0<PlayerPickUpPickup,ii>(more:playerid,end:pickupid)
  210. #define ALS_DO_VehicleMod<%0> %0<VehicleMod,iii>(more:playerid,more:vehicleid,end:componentid)
  211. #define ALS_DO_EnterExitModShop<%0> %0<EnterExitModShop,iii>(more:playerid,more:enterexit,end:interiorid)
  212. #define ALS_DO_VehiclePaintjob<%0> %0<VehiclePaintjob,iii>(more:playerid,more:vehicleid,end:paintjobid)
  213. #define ALS_DO_VehicleRespray<%0> %0<VehicleRespray,iiii>(more:playerid,more:vehicleid,more:color1,end:color2)
  214. #define ALS_DO_VehicleDamageStatusUpdate<%0> %0<VehicleDamageStatusUpdate,ii>(more:vehicleid,end:playerid)
  215. #define ALS_DO_PlayerSelectedMenuRow<%0> %0<PlayerSelectedMenuRow,ii>(more:playerid,end:row)
  216. #define ALS_DO_PlayerExitedMenu<%0> %0<PlayerExitedMenu,i>(end:playerid)
  217. #define ALS_DO_PlayerInteriorChange<%0> %0<PlayerInteriorChange,iii>(more:playerid,more:newinteriorid,end:oldinteriorid)
  218. #define ALS_DO_PlayerKeyStateChange<%0> %0<PlayerKeyStateChange,iii>(more:playerid,more:newkeys,end:oldkeys)
  219. #define ALS_DO_RconLoginAttempt<%0> %0<RconLoginAttempt,ssi>(string:ip[],string:password[],end:success)
  220. #define ALS_DO_PlayerUpdate<%0> %0<PlayerUpdate,i>(end:playerid)
  221. #define ALS_DO_PlayerStreamIn<%0> %0<PlayerStreamIn,ii>(more:playerid,end:forplayerid)
  222. #define ALS_DO_PlayerStreamOut<%0> %0<PlayerStreamOut,ii>(more:playerid,end:forplayerid)
  223. #define ALS_DO_VehicleStreamIn<%0> %0<VehicleStreamIn,ii>(more:vehicleid,end:forplayerid)
  224. #define ALS_DO_VehicleStreamOut<%0> %0<VehicleStreamOut,ii>(more:vehicleid,end:forplayerid)
  225. #define ALS_DO_DialogResponse<%0> %0<DialogResponse,iiiis>(more:playerid,more:dialogid,more:response,more:listitem,end_string:inputtext[])
  226. #define ALS_DO_PlayerClickPlayer<%0> %0<PlayerClickPlayer,iii>(more:playerid,more:clickedplayerid,end:source)
  227. #define ALS_DO_PlayerLogin<%0> %0<PlayerLogin,ii>(more:playerid,end:uid)
  228. #define ALS_DO_PlayerLogout<%0> %0<PlayerLogout,ii>(more:playerid,end:uid)
  229. #if defined GetPlayerLastShotVectors // 0.3z RC4
  230. #define ALS_DO_PlayerGiveDamage<%0> %0<PlayerGiveDamage,iifii>(more:playerid,more:damagedid,Float:amount,more:weaponid,end:bodypart)
  231. #define ALS_DO_PlayerTakeDamage<%0> %0<PlayerTakeDamage,iifii>(more:playerid,more:issuerid,Float:amount,more:weaponid,end:bodypart)
  232. #else
  233. #define ALS_DO_PlayerGiveDamage<%0> %0<PlayerGiveDamage,iifi>(more:playerid,more:damagedid,Float:amount,end:weaponid)
  234. #define ALS_DO_PlayerTakeDamage<%0> %0<PlayerTakeDamage,iifi>(more:playerid,more:issuerid,Float:amount,end:weaponid)
  235. #endif
  236. #define ALS_DO_PlayerClickMap<%0> %0<PlayerClickMap,ifff>(more:playerid,Float:fX,Float:fY,end_Float:fZ)
  237. #define ALS_DO_PlayerCommandReceived<%0> %0<PlayerCommandReceived,is>(more:playerid,end_string:cmdtext[])
  238. #define ALS_DO_PlayerCommandPerformed<%0> %0<PlayerCommandPerformed,isi>(more:playerid,string:cmdtext[],end:success)
  239. #if defined GetServerTickRate // 0.3z RC5
  240. #define ALS_DO_UnoccupiedVehicleUpdate<%0> %0<UnoccupiedVehicleUpdate,iiifff>(more:vehicleid,more:playerid,more:passenger_seat,Float:new_x,Float:new_y,end_Float:new_z)
  241. #else
  242. #define ALS_DO_UnoccupiedVehicleUpdate<%0> %0<UnoccupiedVehicleUpdate,iii>(more:vehicleid,more:playerid,end:passenger_seat)
  243. #endif
  244. // 0.3e
  245. #define ALS_DO_PlayerClickTextDraw<%0> %0<PlayerClickTextDraw,ii>(more:playerid,end_tag:Text:clickedid)
  246. #define ALS_DO_PlayerClickPlayerTextDraw<%0> %0<PlayerClickPlayerTextDraw,iii>(more:playerid,end_tag:PlayerText:playertextid)
  247. #define ALS_DO_PlayerEditObject<%0> %0<PlayerEditObject,iiiiffffff>(more:playerid,more:playerobject,more:objectid,more:response,Float:fX,Float:fY,Float:fZ,Float:fRotX,Float:fRotY,end_Float:fRotZ)
  248. #define ALS_DO_PlayerEditAttachedObject<%0> %0<PlayerEditAttachedObject,iiiiifffffffff>(more:playerid,more:response,more:index,more:modelid,more:boneid,Float:fOffsetX,Float:fOffsetY,Float:fOffsetZ,Float:fRotX,Float:fRotY,Float:fRotZ,Float:fScaleX,Float:fScaleY,end_Float:fScaleZ)
  249. #define ALS_DO_PlayerSelectObject<%0> %0<PlayerSelectObject,iiiifff>(more:playerid,more:type,more:objectid,more:modelid,Float:fX,Float:fY,end_Float:fZ)
  250. // YSI
  251. #define ALS_DO_PlayerEnterArea<%0> %0<PlayerEnterArea,ii>(more:playerid,end:areaid)
  252. #define ALS_DO_PlayerLeaveArea<%0> %0<PlayerLeaveArea,ii>(more:playerid,end:areaid)
  253. #define ALS_DO_PlayerFinishRace<%0> %0<PlayerFinishRace,iiiii>(more:playerid,more:race,more:position,more:prize,end:time)
  254. #define ALS_DO_PlayerExitRace<%0> %0<PlayerExitRace,ii>(more:playerid,end:race)
  255. #define ALS_DO_RaceEnd<%0> %0<RaceEnd,i>(end:race)
  256. // Streamer plugin.
  257. #define ALS_DO_DynamicObjectMoved<%0> %0<DynamicObjectMoved,i>(end:objectid)
  258. #define ALS_DO_PlayerEditDynamicObject<%0> %0<PlayerEditDynamicObject,iiiiiiiii>(more:playerid,more:objectid,more:response,Float:x,Float:y,Float:z,Float:rx,Float:ry,end_Float:rz)
  259. #define ALS_DO_PlayerSelectDynamicObject<%0> %0<PlayerSelectDynamicObject,iiiiii>(more:playerid,more:objectid,more:modelid,Float:x,Float:y,end_Float:z)
  260. #define ALS_DO_PlayerPickUpDynamicPickup<%0> %0<PlayerPickUpDynamicPickup,ii>(more:playerid,end:pickupid)
  261. #define ALS_DO_PlayerEnterDynamicCP<%0> %0<PlayerEnterDynamicCP,ii>(more:playerid,end:checkpointid)
  262. #define ALS_DO_PlayerLeaveDynamicCP<%0> %0<PlayerLeaveDynamicCP,ii>(more:playerid,end:checkpointid)
  263. #define ALS_DO_PlayerEnterDynamicRaceCP<%0> %0<PlayerEnterDynamicRaceCP,ii>(more:playerid,end:checkpointid)
  264. #define ALS_DO_PlayerLeaveDynamicRaceCP<%0> %0<PlayerLeaveDynamicRaceCP,ii>(more:playerid,end:checkpointid)
  265. #define ALS_DO_PlayerEnterDynamicArea<%0> %0<PlayerEnterDynamicArea,ii>(more:playerid,end:areaid)
  266. #define ALS_DO_PlayerLeaveDynamicArea<%0> %0<PlayerLeaveDynamicArea,ii>(more:playerid,end:areaid)
  267. #define ALS_KS_more:%0, %0,ALS_KS_
  268. #define ALS_KS_string:%0[], %0[],ALS_KS_
  269. #define ALS_KS_Float:%0, Float:%0,ALS_KS_
  270. #define ALS_KS_tag:%3:%0, %3:%0,ALS_KS_
  271. #define ALS_KS_array:%0[%1], %0[%1],ALS_KS_
  272. #define ALS_KS_end:%0) %0)
  273. #define ALS_KS_none:) )
  274. #define ALS_KS_end_string:%0[]) %0[])
  275. #define ALS_KS_end_Float:%0) Float:%0)
  276. #define ALS_KS_end_tag:%3:%0) %3:%0)
  277. #define ALS_KS_end_array:%0[%1]) %0[%1])
  278. #define ALS_TS_more:%0, %0,ALS_TS_
  279. #define ALS_TS_string:%0[], (%0),ALS_TS_
  280. #define ALS_TS_Float%0, Float:%0,ALS_TS_
  281. #define ALS_TS_tag:%3:%0, %3:%0,ALS_TS_
  282. #define ALS_TS_array:%0[%1], (%0),ALS_TS_
  283. #define ALS_TS_end:%0) %0)
  284. #define ALS_TS_none:) )
  285. #define ALS_TS_end_string:%0[]) (%0))
  286. #define ALS_TS_end_Float:%0) Float:%0)
  287. #define ALS_TS_end_tag:%3:%0) %3:%0)
  288. #define ALS_TS_end_array:%0[%1]) (%0))
  289. #define ALS_RS_more:%0, %0,ALS_RS_
  290. #define ALS_RS_string:%0[], ((%0[0])?(%0):NULL),ALS_RS_
  291. #define ALS_RS_Float:%0, (_:%0),ALS_RS_
  292. #define ALS_RS_tag:%3:%0, (_:%0),ALS_RS_
  293. #define ALS_RS_array:%0[%1], (_:%0),ALS_RS_
  294. #define ALS_RS_end:%0) %0)
  295. #define ALS_RS_none:) )
  296. #define ALS_RS_end_string:%0[]) ((%0[0])?(%0):NULL))
  297. #define ALS_RS_end_Float:%0) (_:%0))
  298. #define ALS_RS_end_tag:%3:%0) (_:%0))
  299. #define ALS_RS_end_array:%0[%1]) (_:%0))
  300. #define ALS_DO:%9<%0> ALS_DO_%0<%9>
  301. #define ALS_CALL<%0> ALS_DO:ALS_C_INT<%0>
  302. #define ALS_GET<%0> ALS_DO:_ALS_C_INT<%0>
  303. #define ALS_FORWARD<%0> ALS_DO:ALS_F_INT<%0>
  304. #define call%0On%1(%2) ALS_DO:ALS_G_INT<%1>(%2)