Difference between revisions of "Source:NetHack 3.6.0/include/decl.h"

From NetHackWiki
Jump to navigation Jump to search
 
Line 1: Line 1:
 
__MIXEDSYNTAXHIGHLIGHT__
 
__MIXEDSYNTAXHIGHLIGHT__
Below is the full text to '''date.h''' from the [[NetHack 3.6.0 source code|source code]] of [[NetHack 3.6.0]]. To link to a particular line, write [[Source:NetHack 3.6.0/include/date.h#line123|<nowiki>[[Source:NetHack 3.6.0/include/date.h#line123]]</nowiki>]], for example.
+
Below is the full text to '''decl.h''' from the [[NetHack 3.6.0 source code|source code]] of [[NetHack 3.6.0]]. To link to a particular line, write [[Source:NetHack 3.6.0/include/decl.h#line123|<nowiki>[[Source:NetHack 3.6.0/include/decl.h#line123]]</nowiki>]], for example.
  
 
{{NGPL}}
 
{{NGPL}}
  <span id="line1">1. /* This source file is generated by 'makedefs'Do not edit. */</span>
+
  <span id="line1">1. /* NetHack 3.6 decl.h  $NHDT-Date: 1432512782 2015/05/25 00:13:02 $  $NHDT-Branch: master $:$NHDT-Revision: 1.76 $ */</span>
  <span id="line2">2. #define BUILD_DATE "Thu Dec 10 09:36:18 2015"</span>
+
  <span id="line2">2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */</span>
  <span id="line3">3. #define BUILD_TIME (1449768978L)</span>
+
  <span id="line3">3. /* NetHack may be freely redistributed.  See license for details. */</span>
 
  <span id="line4">4. </span>
 
  <span id="line4">4. </span>
  <span id="line5">5. #define VERSION_NUMBER 0x03060002UL</span>
+
  <span id="line5">5. #ifndef DECL_H</span>
  <span id="line6">6. #define VERSION_FEATURES 0x00060040UL</span>
+
  <span id="line6">6. #define DECL_H</span>
  <span id="line7">7. #define IGNORED_FEATURES 0x18080000UL</span>
+
  <span id="line7">7. </span>
  <span id="line8">8. #define VERSION_SANITY1 0x211c617eUL</span>
+
  <span id="line8">8. #define E extern</span>
  <span id="line9">9. #define VERSION_SANITY2 0x148c24958UL</span>
+
  <span id="line9">9. </span>
  <span id="line10">10. #define VERSION_SANITY3 0x00028000UL</span>
+
<span id="line10">10. E int NDECL((*occupation));</span>
  <span id="line11">11. </span>
+
<span id="line11">11. E int NDECL((*afternmv));</span>
  <span id="line12">12. #define VERSION_STRING "3.6.0"</span>
+
<span id="line12">12. </span>
  <span id="line13">13. #define VERSION_ID \</span>
+
<span id="line13">13. E const char *hname;</span>
  <span id="line14">14.  "Unix NetHack Version 3.6.0 - last build Thu Dec 10 09:36:18 2015."</span>
+
<span id="line14">14. E int hackpid;</span>
  <span id="line15">15. #define COPYRIGHT_BANNER_C \</span>
+
<span id="line15">15. #if defined(UNIX) || defined(VMS)</span>
  <span id="line16">16.  "         Version 3.6.0 Unix, built Dec 10 09:36:18 2015."</span>
+
<span id="line16">16. E int locknum;</span>
  <span id="line17">17. </span>
+
<span id="line17">17. #endif</span>
[[Category:NetHack 3.6.0 source code|include/date.h]]
+
<span id="line18">18. #ifdef DEF_PAGER</span>
 +
<span id="line19">19. E char *catmore;</span>
 +
<span id="line20">20. #endif /* DEF_PAGER */</span>
 +
<span id="line21">21. </span>
 +
<span id="line22">22. E char SAVEF[];</span>
 +
<span id="line23">23. #ifdef MICRO</span>
 +
<span id="line24">24. E char SAVEP[];</span>
 +
<span id="line25">25. #endif</span>
 +
<span id="line26">26. </span>
 +
<span id="line27">27. E NEARDATA int bases[MAXOCLASSES];</span>
 +
<span id="line28">28. </span>
 +
<span id="line29">29. E NEARDATA int multi;</span>
 +
<span id="line30">30. E const char *multi_reason;</span>
 +
<span id="line31">31. E NEARDATA int nroom;</span>
 +
<span id="line32">32. E NEARDATA int nsubroom;</span>
 +
<span id="line33">33. E NEARDATA int occtime;</span>
 +
<span id="line34">34. </span>
 +
<span id="line35">35. #define WARNCOUNT 6 /* number of different warning levels */</span>
 +
<span id="line36">36. E nhsym warnsyms[WARNCOUNT];</span>
 +
<span id="line37">37. E NEARDATA int warn_obj_cnt; /* count of monsters meeting criteria */</span>
 +
<span id="line38">38. </span>
 +
<span id="line39">39. E int x_maze_max, y_maze_max;</span>
 +
<span id="line40">40. E int otg_temp;</span>
 +
<span id="line41">41. </span>
 +
<span id="line42">42. E NEARDATA int in_doagain;</span>
 +
<span id="line43">43. </span>
 +
<span id="line44">44. E struct dgn_topology { /* special dungeon levels for speed */</span>
 +
<span id="line45">45.     d_level d_oracle_level;</span>
 +
<span id="line46">46.     d_level d_bigroom_level; /* unused */</span>
 +
<span id="line47">47.     d_level d_rogue_level;</span>
 +
<span id="line48">48.     d_level d_medusa_level;</span>
 +
<span id="line49">49.     d_level d_stronghold_level;</span>
 +
<span id="line50">50.     d_level d_valley_level;</span>
 +
<span id="line51">51.     d_level d_wiz1_level;</span>
 +
<span id="line52">52.     d_level d_wiz2_level;</span>
 +
<span id="line53">53.     d_level d_wiz3_level;</span>
 +
<span id="line54">54.     d_level d_juiblex_level;</span>
 +
<span id="line55">55.     d_level d_orcus_level;</span>
 +
<span id="line56">56.     d_level d_baalzebub_level; /* unused */</span>
 +
<span id="line57">57.     d_level d_asmodeus_level;  /* unused */</span>
 +
<span id="line58">58.     d_level d_portal_level;    /* only in goto_level() [do.c] */</span>
 +
<span id="line59">59.     d_level d_sanctum_level;</span>
 +
<span id="line60">60.     d_level d_earth_level;</span>
 +
<span id="line61">61.     d_level d_water_level;</span>
 +
<span id="line62">62.     d_level d_fire_level;</span>
 +
<span id="line63">63.     d_level d_air_level;</span>
 +
<span id="line64">64.     d_level d_astral_level;</span>
 +
<span id="line65">65.     xchar d_tower_dnum;</span>
 +
<span id="line66">66.     xchar d_sokoban_dnum;</span>
 +
<span id="line67">67.     xchar d_mines_dnum, d_quest_dnum;</span>
 +
<span id="line68">68.     d_level d_qstart_level, d_qlocate_level, d_nemesis_level;</span>
 +
<span id="line69">69.     d_level d_knox_level;</span>
 +
<span id="line70">70.     d_level d_mineend_level;</span>
 +
<span id="line71">71.     d_level d_sokoend_level;</span>
 +
<span id="line72">72. } dungeon_topology;</span>
 +
<span id="line73">73. /* macros for accessing the dungeon levels by their old names */</span>
 +
<span id="line74">74. /* clang-format off */</span>
 +
<span id="line75">75. #define oracle_level            (dungeon_topology.d_oracle_level)</span>
 +
<span id="line76">76. #define bigroom_level          (dungeon_topology.d_bigroom_level)</span>
 +
<span id="line77">77. #define rogue_level            (dungeon_topology.d_rogue_level)</span>
 +
<span id="line78">78. #define medusa_level            (dungeon_topology.d_medusa_level)</span>
 +
<span id="line79">79. #define stronghold_level        (dungeon_topology.d_stronghold_level)</span>
 +
<span id="line80">80. #define valley_level            (dungeon_topology.d_valley_level)</span>
 +
<span id="line81">81. #define wiz1_level              (dungeon_topology.d_wiz1_level)</span>
 +
<span id="line82">82. #define wiz2_level              (dungeon_topology.d_wiz2_level)</span>
 +
<span id="line83">83. #define wiz3_level              (dungeon_topology.d_wiz3_level)</span>
 +
<span id="line84">84. #define juiblex_level          (dungeon_topology.d_juiblex_level)</span>
 +
<span id="line85">85. #define orcus_level            (dungeon_topology.d_orcus_level)</span>
 +
<span id="line86">86. #define baalzebub_level        (dungeon_topology.d_baalzebub_level)</span>
 +
<span id="line87">87. #define asmodeus_level          (dungeon_topology.d_asmodeus_level)</span>
 +
<span id="line88">88. #define portal_level            (dungeon_topology.d_portal_level)</span>
 +
<span id="line89">89. #define sanctum_level          (dungeon_topology.d_sanctum_level)</span>
 +
<span id="line90">90. #define earth_level            (dungeon_topology.d_earth_level)</span>
 +
<span id="line91">91. #define water_level            (dungeon_topology.d_water_level)</span>
 +
<span id="line92">92. #define fire_level              (dungeon_topology.d_fire_level)</span>
 +
<span id="line93">93. #define air_level              (dungeon_topology.d_air_level)</span>
 +
<span id="line94">94. #define astral_level            (dungeon_topology.d_astral_level)</span>
 +
<span id="line95">95. #define tower_dnum              (dungeon_topology.d_tower_dnum)</span>
 +
<span id="line96">96. #define sokoban_dnum            (dungeon_topology.d_sokoban_dnum)</span>
 +
<span id="line97">97. #define mines_dnum              (dungeon_topology.d_mines_dnum)</span>
 +
<span id="line98">98. #define quest_dnum              (dungeon_topology.d_quest_dnum)</span>
 +
<span id="line99">99. #define qstart_level            (dungeon_topology.d_qstart_level)</span>
 +
<span id="line100">100. #define qlocate_level          (dungeon_topology.d_qlocate_level)</span>
 +
<span id="line101">101. #define nemesis_level          (dungeon_topology.d_nemesis_level)</span>
 +
<span id="line102">102. #define knox_level              (dungeon_topology.d_knox_level)</span>
 +
<span id="line103">103. #define mineend_level          (dungeon_topology.d_mineend_level)</span>
 +
<span id="line104">104. #define sokoend_level          (dungeon_topology.d_sokoend_level)</span>
 +
<span id="line105">105. /* clang-format on */</span>
 +
<span id="line106">106. </span>
 +
<span id="line107">107. E NEARDATA stairway dnstair, upstair; /* stairs up and down */</span>
 +
<span id="line108">108. #define xdnstair (dnstair.sx)</span>
 +
<span id="line109">109. #define ydnstair (dnstair.sy)</span>
 +
<span id="line110">110. #define xupstair (upstair.sx)</span>
 +
<span id="line111">111. #define yupstair (upstair.sy)</span>
 +
<span id="line112">112. </span>
 +
<span id="line113">113. E NEARDATA stairway dnladder, upladder; /* ladders up and down */</span>
 +
<span id="line114">114. #define xdnladder (dnladder.sx)</span>
 +
<span id="line115">115. #define ydnladder (dnladder.sy)</span>
 +
<span id="line116">116. #define xupladder (upladder.sx)</span>
 +
  <span id="line117">117. #define yupladder (upladder.sy)</span>
 +
<span id="line118">118. </span>
 +
  <span id="line119">119. E NEARDATA stairway sstairs;</span>
 +
<span id="line120">120. </span>
 +
<span id="line121">121. E NEARDATA dest_area updest, dndest; /* level-change destination areas */</span>
 +
<span id="line122">122. </span>
 +
  <span id="line123">123. E NEARDATA coord inv_pos;</span>
 +
<span id="line124">124. E NEARDATA dungeon dungeons[];</span>
 +
<span id="line125">125. E NEARDATA s_level *sp_levchn;</span>
 +
<span id="line126">126. #define dunlev_reached(x) (dungeons[(x)->dnum].dunlev_ureached)</span>
 +
<span id="line127">127. </span>
 +
<span id="line128">128. #include "quest.h"</span>
 +
<span id="line129">129. E struct q_score quest_status;</span>
 +
<span id="line130">130. </span>
 +
<span id="line131">131. E NEARDATA char pl_character[PL_CSIZ];</span>
 +
<span id="line132">132. E NEARDATA char pl_race; /* character's race */</span>
 +
<span id="line133">133. </span>
 +
<span id="line134">134. E NEARDATA char pl_fruit[PL_FSIZ];</span>
 +
<span id="line135">135. E NEARDATA struct fruit *ffruit;</span>
 +
<span id="line136">136. </span>
 +
<span id="line137">137. E NEARDATA char tune[6];</span>
 +
<span id="line138">138. </span>
 +
<span id="line139">139. #define MAXLINFO (MAXDUNGEON * MAXLEVEL)</span>
 +
<span id="line140">140. E struct linfo level_info[MAXLINFO];</span>
 +
<span id="line141">141. </span>
 +
<span id="line142">142. E NEARDATA struct sinfo {</span>
 +
<span id="line143">143.     int gameover;  /* self explanatory? */</span>
 +
<span id="line144">144.     int stopprint; /* inhibit further end of game disclosure */</span>
 +
<span id="line145">145. #ifdef HANGUPHANDLING</span>
 +
<span id="line146">146.     volatile int done_hup; /* SIGHUP or moral equivalent received</span>
 +
<span id="line147">147.                             * -- no more screen output */</span>
 +
<span id="line148">148.     int preserve_locks;    /* don't remove level files prior to exit */</span>
 +
<span id="line149">149. #endif</span>
 +
<span id="line150">150.     int something_worth_saving; /* in case of panic */</span>
 +
<span id="line151">151.     int panicking;              /* `panic' is in progress */</span>
 +
<span id="line152">152.     int exiting;                /* an exit handler is executing */</span>
 +
<span id="line153">153.     int in_moveloop;</span>
 +
<span id="line154">154.     int in_impossible;</span>
 +
<span id="line155">155. #ifdef PANICLOG</span>
 +
<span id="line156">156.     int in_paniclog;</span>
 +
<span id="line157">157. #endif</span>
 +
<span id="line158">158.     int wizkit_wishing;</span>
 +
<span id="line159">159. } program_state;</span>
 +
<span id="line160">160. </span>
 +
<span id="line161">161. E boolean restoring;</span>
 +
<span id="line162">162. </span>
 +
<span id="line163">163. E const char quitchars[];</span>
 +
<span id="line164">164. E const char vowels[];</span>
 +
<span id="line165">165. E const char ynchars[];</span>
 +
<span id="line166">166. E const char ynqchars[];</span>
 +
<span id="line167">167. E const char ynaqchars[];</span>
 +
<span id="line168">168. E const char ynNaqchars[];</span>
 +
<span id="line169">169. E NEARDATA long yn_number;</span>
 +
<span id="line170">170. </span>
 +
<span id="line171">171. E const char disclosure_options[];</span>
 +
<span id="line172">172. </span>
 +
<span id="line173">173. E NEARDATA int smeq[];</span>
 +
<span id="line174">174. E NEARDATA int doorindex;</span>
 +
<span id="line175">175. E NEARDATA char *save_cm;</span>
 +
<span id="line176">176. </span>
 +
<span id="line177">177. E NEARDATA struct kinfo {</span>
 +
<span id="line178">178.     struct kinfo *next; /* chain of delayed killers */</span>
 +
<span id="line179">179.     int id;            /* uprop keys to ID a delayed killer */</span>
 +
<span id="line180">180.     int format;        /* one of the killer formats */</span>
 +
<span id="line181">181. #define KILLED_BY_AN 0</span>
 +
<span id="line182">182. #define KILLED_BY 1</span>
 +
<span id="line183">183. #define NO_KILLER_PREFIX 2</span>
 +
<span id="line184">184.     char name[BUFSZ]; /* actual killer name */</span>
 +
<span id="line185">185. } killer;</span>
 +
<span id="line186">186. </span>
 +
<span id="line187">187. E long done_money;</span>
 +
<span id="line188">188. E const char *configfile;</span>
 +
<span id="line189">189. E char lastconfigfile[BUFSZ]; /* used for messaging */</span>
 +
<span id="line190">190. E NEARDATA char plname[PL_NSIZ];</span>
 +
<span id="line191">191. E NEARDATA char dogname[];</span>
 +
<span id="line192">192. E NEARDATA char catname[];</span>
 +
<span id="line193">193. E NEARDATA char horsename[];</span>
 +
<span id="line194">194. E char preferred_pet;</span>
 +
<span id="line195">195. E const char *occtxt; /* defined when occupation != NULL */</span>
 +
<span id="line196">196. E const char *nomovemsg;</span>
 +
<span id="line197">197. E char lock[];</span>
 +
<span id="line198">198. </span>
 +
<span id="line199">199. E const schar xdir[], ydir[], zdir[];</span>
 +
<span id="line200">200. </span>
 +
<span id="line201">201. E NEARDATA schar tbx, tby; /* set in mthrowu.c */</span>
 +
<span id="line202">202. </span>
 +
<span id="line203">203. E NEARDATA struct multishot {</span>
 +
<span id="line204">204.     int n, i;</span>
 +
<span id="line205">205.     short o;</span>
 +
<span id="line206">206.     boolean s;</span>
 +
<span id="line207">207. } m_shot;</span>
 +
<span id="line208">208. </span>
 +
<span id="line209">209. E NEARDATA long moves, monstermoves;</span>
 +
<span id="line210">210. E NEARDATA long wailmsg;</span>
 +
<span id="line211">211. </span>
 +
<span id="line212">212. E NEARDATA boolean in_mklev;</span>
 +
<span id="line213">213. E NEARDATA boolean stoned;</span>
 +
<span id="line214">214. E NEARDATA boolean unweapon;</span>
 +
<span id="line215">215. E NEARDATA boolean mrg_to_wielded;</span>
 +
<span id="line216">216. E NEARDATA boolean defer_see_monsters;</span>
 +
<span id="line217">217. </span>
 +
<span id="line218">218. E NEARDATA boolean in_steed_dismounting;</span>
 +
<span id="line219">219. </span>
 +
<span id="line220">220. E const int shield_static[];</span>
 +
<span id="line221">221. </span>
 +
<span id="line222">222. #include "spell.h"</span>
 +
<span id="line223">223. E NEARDATA struct spell spl_book[]; /* sized in decl.c */</span>
 +
<span id="line224">224. </span>
 +
<span id="line225">225. #include "color.h"</span>
 +
<span id="line226">226. #ifdef TEXTCOLOR</span>
 +
<span id="line227">227. E const int zapcolors[];</span>
 +
<span id="line228">228. #endif</span>
 +
<span id="line229">229. </span>
 +
<span id="line230">230. E const struct class_sym def_oc_syms[MAXOCLASSES]; /* default class symbols */</span>
 +
<span id="line231">231. E uchar oc_syms[MAXOCLASSES];                      /* current class symbols */</span>
 +
<span id="line232">232. E const struct class_sym def_monsyms[MAXMCLASSES]; /* default class symbols */</span>
 +
<span id="line233">233. E uchar monsyms[MAXMCLASSES];                      /* current class symbols */</span>
 +
<span id="line234">234. </span>
 +
<span id="line235">235. #include "obj.h"</span>
 +
<span id="line236">236. E NEARDATA struct obj *invent, *uarm, *uarmc, *uarmh, *uarms, *uarmg, *uarmf,</span>
 +
<span id="line237">237.     *uarmu, /* under-wear, so to speak */</span>
 +
<span id="line238">238.     *uskin, *uamul, *uleft, *uright, *ublindf, *uwep, *uswapwep, *uquiver;</span>
 +
<span id="line239">239. </span>
 +
<span id="line240">240. E NEARDATA struct obj *uchain; /* defined only when punished */</span>
 +
<span id="line241">241. E NEARDATA struct obj *uball;</span>
 +
<span id="line242">242. E NEARDATA struct obj *migrating_objs;</span>
 +
<span id="line243">243. E NEARDATA struct obj *billobjs;</span>
 +
<span id="line244">244. E NEARDATA struct obj *current_wand, *thrownobj, *kickedobj;</span>
 +
<span id="line245">245. </span>
 +
<span id="line246">246. E NEARDATA struct obj zeroobj; /* init'd and defined in decl.c */</span>
 +
<span id="line247">247. E NEARDATA anything zeroany;  /* init'd and defined in decl.c */</span>
 +
<span id="line248">248. </span>
 +
<span id="line249">249. #include "you.h"</span>
 +
<span id="line250">250. E NEARDATA struct you u;</span>
 +
<span id="line251">251. E NEARDATA time_t ubirthday;</span>
 +
<span id="line252">252. E NEARDATA struct u_realtime urealtime;</span>
 +
<span id="line253">253. </span>
 +
<span id="line254">254. #include "onames.h"</span>
 +
<span id="line255">255. #ifndef PM_H /* (pm.h has already been included via youprop.h) */</span>
 +
<span id="line256">256. #include "pm.h"</span>
 +
<span id="line257">257. #endif</span>
 +
<span id="line258">258. </span>
 +
<span id="line259">259. E NEARDATA struct monst youmonst; /* init'd and defined in decl.c */</span>
 +
<span id="line260">260. E NEARDATA struct monst *mydogs, *migrating_mons;</span>
 +
<span id="line261">261. </span>
 +
<span id="line262">262. E NEARDATA struct mvitals {</span>
 +
<span id="line263">263.     uchar born;</span>
 +
<span id="line264">264.     uchar died;</span>
 +
<span id="line265">265.     uchar mvflags;</span>
 +
<span id="line266">266. } mvitals[NUMMONS];</span>
 +
<span id="line267">267. </span>
 +
<span id="line268">268. E NEARDATA struct c_color_names {</span>
 +
<span id="line269">269.     const char *const c_black, *const c_amber, *const c_golden,</span>
 +
<span id="line270">270.         *const c_light_blue, *const c_red, *const c_green, *const c_silver,</span>
 +
<span id="line271">271.         *const c_blue, *const c_purple, *const c_white, *const c_orange;</span>
 +
<span id="line272">272. } c_color_names;</span>
 +
<span id="line273">273. #define NH_BLACK c_color_names.c_black</span>
 +
<span id="line274">274. #define NH_AMBER c_color_names.c_amber</span>
 +
<span id="line275">275. #define NH_GOLDEN c_color_names.c_golden</span>
 +
<span id="line276">276. #define NH_LIGHT_BLUE c_color_names.c_light_blue</span>
 +
<span id="line277">277. #define NH_RED c_color_names.c_red</span>
 +
<span id="line278">278. #define NH_GREEN c_color_names.c_green</span>
 +
<span id="line279">279. #define NH_SILVER c_color_names.c_silver</span>
 +
<span id="line280">280. #define NH_BLUE c_color_names.c_blue</span>
 +
<span id="line281">281. #define NH_PURPLE c_color_names.c_purple</span>
 +
<span id="line282">282. #define NH_WHITE c_color_names.c_white</span>
 +
<span id="line283">283. #define NH_ORANGE c_color_names.c_orange</span>
 +
<span id="line284">284. </span>
 +
<span id="line285">285. /* The names of the colors used for gems, etc. */</span>
 +
<span id="line286">286. E const char *c_obj_colors[];</span>
 +
<span id="line287">287. </span>
 +
<span id="line288">288. E struct c_common_strings {</span>
 +
<span id="line289">289.     const char *const c_nothing_happens, *const c_thats_enough_tries,</span>
 +
<span id="line290">290.         *const c_silly_thing_to, *const c_shudder_for_moment,</span>
 +
<span id="line291">291.         *const c_something, *const c_Something, *const c_You_can_move_again,</span>
 +
<span id="line292">292.         *const c_Never_mind, *c_vision_clears, *const c_the_your[2];</span>
 +
<span id="line293">293. } c_common_strings;</span>
 +
<span id="line294">294. #define nothing_happens c_common_strings.c_nothing_happens</span>
 +
<span id="line295">295. #define thats_enough_tries c_common_strings.c_thats_enough_tries</span>
 +
<span id="line296">296. #define silly_thing_to c_common_strings.c_silly_thing_to</span>
 +
<span id="line297">297. #define shudder_for_moment c_common_strings.c_shudder_for_moment</span>
 +
<span id="line298">298. #define something c_common_strings.c_something</span>
 +
<span id="line299">299. #define Something c_common_strings.c_Something</span>
 +
<span id="line300">300. #define You_can_move_again c_common_strings.c_You_can_move_again</span>
 +
<span id="line301">301. #define Never_mind c_common_strings.c_Never_mind</span>
 +
<span id="line302">302. #define vision_clears c_common_strings.c_vision_clears</span>
 +
<span id="line303">303. #define the_your c_common_strings.c_the_your</span>
 +
<span id="line304">304. </span>
 +
<span id="line305">305. /* material strings */</span>
 +
<span id="line306">306. E const char *materialnm[];</span>
 +
<span id="line307">307. </span>
 +
<span id="line308">308. /* Monster name articles */</span>
 +
<span id="line309">309. #define ARTICLE_NONE 0</span>
 +
<span id="line310">310. #define ARTICLE_THE 1</span>
 +
<span id="line311">311. #define ARTICLE_A 2</span>
 +
<span id="line312">312. #define ARTICLE_YOUR 3</span>
 +
<span id="line313">313. </span>
 +
<span id="line314">314. /* Monster name suppress masks */</span>
 +
<span id="line315">315. #define SUPPRESS_IT 0x01</span>
 +
<span id="line316">316. #define SUPPRESS_INVISIBLE 0x02</span>
 +
<span id="line317">317. #define SUPPRESS_HALLUCINATION 0x04</span>
 +
<span id="line318">318. #define SUPPRESS_SADDLE 0x08</span>
 +
<span id="line319">319. #define EXACT_NAME 0x0F</span>
 +
<span id="line320">320. </span>
 +
<span id="line321">321. /* Vision */</span>
 +
<span id="line322">322. E NEARDATA boolean vision_full_recalc; /* TRUE if need vision recalc */</span>
 +
<span id="line323">323. E NEARDATA char **viz_array;          /* could see/in sight row pointers */</span>
 +
<span id="line324">324. </span>
 +
  <span id="line325">325. /* Window system stuff */</span>
 +
<span id="line326">326. E NEARDATA winid WIN_MESSAGE;</span>
 +
<span id="line327">327. #ifndef STATUS_VIA_WINDOWPORT</span>
 +
<span id="line328">328. E NEARDATA winid WIN_STATUS;</span>
 +
<span id="line329">329. #endif</span>
 +
<span id="line330">330. E NEARDATA winid WIN_MAP, WIN_INVEN;</span>
 +
<span id="line331">331. </span>
 +
<span id="line332">332. /* pline (et al) for a single string argument (suppress compiler warning) */</span>
 +
<span id="line333">333. #define pline1(cstr) pline("%s", cstr)</span>
 +
<span id="line334">334. #define Your1(cstr) Your("%s", cstr)</span>
 +
<span id="line335">335. #define You1(cstr) You("%s", cstr)</span>
 +
<span id="line336">336. #define verbalize1(cstr) verbalize("%s", cstr)</span>
 +
<span id="line337">337. #define You_hear1(cstr) You_hear("%s", cstr)</span>
 +
<span id="line338">338. #define Sprintf1(buf, cstr) Sprintf(buf, "%s", cstr)</span>
 +
<span id="line339">339. #define panic1(cstr) panic("%s", cstr)</span>
 +
<span id="line340">340. </span>
 +
<span id="line341">341. E char toplines[];</span>
 +
<span id="line342">342. #ifndef TCAP_H</span>
 +
<span id="line343">343. E struct tc_gbl_data {  /* also declared in tcap.h */</span>
 +
<span id="line344">344.     char *tc_AS, *tc_AE; /* graphics start and end (tty font swapping) */</span>
 +
<span id="line345">345.     int tc_LI, tc_CO;    /* lines and columns */</span>
 +
<span id="line346">346. } tc_gbl_data;</span>
 +
<span id="line347">347. #define AS tc_gbl_data.tc_AS</span>
 +
<span id="line348">348. #define AE tc_gbl_data.tc_AE</span>
 +
<span id="line349">349. #define LI tc_gbl_data.tc_LI</span>
 +
<span id="line350">350. #define CO tc_gbl_data.tc_CO</span>
 +
<span id="line351">351. #endif</span>
 +
<span id="line352">352. </span>
 +
<span id="line353">353. /* xxxexplain[] is in drawing.c */</span>
 +
<span id="line354">354. E const char *const monexplain[], invisexplain[], *const oclass_names[];</span>
 +
<span id="line355">355. </span>
 +
<span id="line356">356. /* Some systems want to use full pathnames for some subsets of file names,</span>
 +
<span id="line357">357.  * rather than assuming that they're all in the current directory.  This</span>
 +
<span id="line358">358.  * provides all the subclasses that seem reasonable, and sets up for all</span>
 +
<span id="line359">359.  * prefixes being null.  Port code can set those that it wants.</span>
 +
<span id="line360">360.  */</span>
 +
<span id="line361">361. #define HACKPREFIX 0</span>
 +
  <span id="line362">362#define LEVELPREFIX 1</span>
 +
<span id="line363">363. #define SAVEPREFIX 2</span>
 +
<span id="line364">364. #define BONESPREFIX 3</span>
 +
<span id="line365">365. #define DATAPREFIX 4 /* this one must match hardcoded value in dlb.c */</span>
 +
<span id="line366">366. #define SCOREPREFIX 5</span>
 +
<span id="line367">367. #define LOCKPREFIX 6</span>
 +
<span id="line368">368. #define SYSCONFPREFIX 7</span>
 +
<span id="line369">369. #define CONFIGPREFIX 8</span>
 +
<span id="line370">370. #define TROUBLEPREFIX 9</span>
 +
<span id="line371">371. #define PREFIX_COUNT 10</span>
 +
<span id="line372">372. /* used in files.c; xxconf.h can override if needed */</span>
 +
<span id="line373">373. #ifndef FQN_MAX_FILENAME</span>
 +
<span id="line374">374. #define FQN_MAX_FILENAME 512</span>
 +
<span id="line375">375. #endif</span>
 +
<span id="line376">376. </span>
 +
<span id="line377">377. #if defined(NOCWD_ASSUMPTIONS) || defined(VAR_PLAYGROUND)</span>
 +
<span id="line378">378. /* the bare-bones stuff is unconditional above to simplify coding; for</span>
 +
<span id="line379">379.  * ports that actually use prefixes, add some more localized things</span>
 +
<span id="line380">380.  */</span>
 +
<span id="line381">381. #define PREFIXES_IN_USE</span>
 +
<span id="line382">382. #endif</span>
 +
<span id="line383">383. </span>
 +
<span id="line384">384. E char *fqn_prefix[PREFIX_COUNT];</span>
 +
<span id="line385">385. #ifdef PREFIXES_IN_USE</span>
 +
<span id="line386">386. E char *fqn_prefix_names[PREFIX_COUNT];</span>
 +
<span id="line387">387. #endif</span>
 +
<span id="line388">388. </span>
 +
<span id="line389">389. E NEARDATA struct savefile_info sfcap, sfrestinfo, sfsaveinfo;</span>
 +
<span id="line390">390. </span>
 +
<span id="line391">391. struct autopickup_exception {</span>
 +
<span id="line392">392.     struct nhregex *regex;</span>
 +
<span id="line393">393.     char *pattern;</span>
 +
<span id="line394">394.     boolean grab;</span>
 +
<span id="line395">395.     struct autopickup_exception *next;</span>
 +
<span id="line396">396. };</span>
 +
<span id="line397">397. </span>
 +
<span id="line398">398. struct plinemsg_type {</span>
 +
<span id="line399">399.     xchar msgtype;  /* one of MSGTYP_foo */</span>
 +
<span id="line400">400.     struct nhregex *regex;</span>
 +
<span id="line401">401.     char *pattern;</span>
 +
<span id="line402">402.     struct plinemsg_type *next;</span>
 +
<span id="line403">403. };</span>
 +
<span id="line404">404. </span>
 +
<span id="line405">405. #define MSGTYP_NORMAL  0</span>
 +
  <span id="line406">406. #define MSGTYP_NOREP    1</span>
 +
  <span id="line407">407#define MSGTYP_NOSHOW  2</span>
 +
<span id="line408">408. #define MSGTYP_STOP    3</span>
 +
<span id="line409">409. </span>
 +
<span id="line410">410. E struct plinemsg_type *plinemsg_types;</span>
 +
<span id="line411">411. </span>
 +
<span id="line412">412. #ifdef PANICTRACE</span>
 +
<span id="line413">413. E char *ARGV0;</span>
 +
<span id="line414">414. #endif</span>
 +
<span id="line415">415. </span>
 +
<span id="line416">416. #undef E</span>
 +
<span id="line417">417. </span>
 +
  <span id="line418">418#endif /* DECL_H */</span>
 +
[[Category:NetHack 3.6.0 source code|include/decl.h]]

Latest revision as of 13:16, 15 December 2015

Below is the full text to decl.h from the source code of NetHack 3.6.0. To link to a particular line, write [[Source:NetHack 3.6.0/include/decl.h#line123]], for example.

The NetHack General Public License applies to screenshots, source code and other content from NetHack.

This content was modified from the original NetHack source code distribution (by splitting up NetHack content between wiki pages, and possibly further editing). See the page history for a list of who changed it, and on what dates.

 /* NetHack 3.6  decl.h  $NHDT-Date: 1432512782 2015/05/25 00:13:02 $  $NHDT-Branch: master $:$NHDT-Revision: 1.76 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
 #ifndef DECL_H
 #define DECL_H
 
 #define E extern
 
 E int NDECL((*occupation));
 E int NDECL((*afternmv));
 
 E const char *hname;
 E int hackpid;
 #if defined(UNIX) || defined(VMS)
 E int locknum;
 #endif
 #ifdef DEF_PAGER
 E char *catmore;
 #endif /* DEF_PAGER */
 
 E char SAVEF[];
 #ifdef MICRO
 E char SAVEP[];
 #endif
 
 E NEARDATA int bases[MAXOCLASSES];
 
 E NEARDATA int multi;
 E const char *multi_reason;
 E NEARDATA int nroom;
 E NEARDATA int nsubroom;
 E NEARDATA int occtime;
 
 #define WARNCOUNT 6 /* number of different warning levels */
 E nhsym warnsyms[WARNCOUNT];
 E NEARDATA int warn_obj_cnt; /* count of monsters meeting criteria */
 
 E int x_maze_max, y_maze_max;
 E int otg_temp;
 
 E NEARDATA int in_doagain;
 
 E struct dgn_topology { /* special dungeon levels for speed */
     d_level d_oracle_level;
     d_level d_bigroom_level; /* unused */
     d_level d_rogue_level;
     d_level d_medusa_level;
     d_level d_stronghold_level;
     d_level d_valley_level;
     d_level d_wiz1_level;
     d_level d_wiz2_level;
     d_level d_wiz3_level;
     d_level d_juiblex_level;
     d_level d_orcus_level;
     d_level d_baalzebub_level; /* unused */
     d_level d_asmodeus_level;  /* unused */
     d_level d_portal_level;    /* only in goto_level() [do.c] */
     d_level d_sanctum_level;
     d_level d_earth_level;
     d_level d_water_level;
     d_level d_fire_level;
     d_level d_air_level;
     d_level d_astral_level;
     xchar d_tower_dnum;
     xchar d_sokoban_dnum;
     xchar d_mines_dnum, d_quest_dnum;
     d_level d_qstart_level, d_qlocate_level, d_nemesis_level;
     d_level d_knox_level;
     d_level d_mineend_level;
     d_level d_sokoend_level;
 } dungeon_topology;
 /* macros for accessing the dungeon levels by their old names */
 /* clang-format off */
 #define oracle_level            (dungeon_topology.d_oracle_level)
 #define bigroom_level           (dungeon_topology.d_bigroom_level)
 #define rogue_level             (dungeon_topology.d_rogue_level)
 #define medusa_level            (dungeon_topology.d_medusa_level)
 #define stronghold_level        (dungeon_topology.d_stronghold_level)
 #define valley_level            (dungeon_topology.d_valley_level)
 #define wiz1_level              (dungeon_topology.d_wiz1_level)
 #define wiz2_level              (dungeon_topology.d_wiz2_level)
 #define wiz3_level              (dungeon_topology.d_wiz3_level)
 #define juiblex_level           (dungeon_topology.d_juiblex_level)
 #define orcus_level             (dungeon_topology.d_orcus_level)
 #define baalzebub_level         (dungeon_topology.d_baalzebub_level)
 #define asmodeus_level          (dungeon_topology.d_asmodeus_level)
 #define portal_level            (dungeon_topology.d_portal_level)
 #define sanctum_level           (dungeon_topology.d_sanctum_level)
 #define earth_level             (dungeon_topology.d_earth_level)
 #define water_level             (dungeon_topology.d_water_level)
 #define fire_level              (dungeon_topology.d_fire_level)
 #define air_level               (dungeon_topology.d_air_level)
 #define astral_level            (dungeon_topology.d_astral_level)
 #define tower_dnum              (dungeon_topology.d_tower_dnum)
 #define sokoban_dnum            (dungeon_topology.d_sokoban_dnum)
 #define mines_dnum              (dungeon_topology.d_mines_dnum)
 #define quest_dnum              (dungeon_topology.d_quest_dnum)
 #define qstart_level            (dungeon_topology.d_qstart_level)
 #define qlocate_level           (dungeon_topology.d_qlocate_level)
 #define nemesis_level           (dungeon_topology.d_nemesis_level)
 #define knox_level              (dungeon_topology.d_knox_level)
 #define mineend_level           (dungeon_topology.d_mineend_level)
 #define sokoend_level           (dungeon_topology.d_sokoend_level)
 /* clang-format on */
 
 E NEARDATA stairway dnstair, upstair; /* stairs up and down */
 #define xdnstair (dnstair.sx)
 #define ydnstair (dnstair.sy)
 #define xupstair (upstair.sx)
 #define yupstair (upstair.sy)
 
 E NEARDATA stairway dnladder, upladder; /* ladders up and down */
 #define xdnladder (dnladder.sx)
 #define ydnladder (dnladder.sy)
 #define xupladder (upladder.sx)
 #define yupladder (upladder.sy)
 
 E NEARDATA stairway sstairs;
 
 E NEARDATA dest_area updest, dndest; /* level-change destination areas */
 
 E NEARDATA coord inv_pos;
 E NEARDATA dungeon dungeons[];
 E NEARDATA s_level *sp_levchn;
 #define dunlev_reached(x) (dungeons[(x)->dnum].dunlev_ureached)
 
 #include "quest.h"
 E struct q_score quest_status;
 
 E NEARDATA char pl_character[PL_CSIZ];
 E NEARDATA char pl_race; /* character's race */
 
 E NEARDATA char pl_fruit[PL_FSIZ];
 E NEARDATA struct fruit *ffruit;
 
 E NEARDATA char tune[6];
 
 #define MAXLINFO (MAXDUNGEON * MAXLEVEL)
 E struct linfo level_info[MAXLINFO];
 
 E NEARDATA struct sinfo {
     int gameover;  /* self explanatory? */
     int stopprint; /* inhibit further end of game disclosure */
 #ifdef HANGUPHANDLING
     volatile int done_hup; /* SIGHUP or moral equivalent received
                             * -- no more screen output */
     int preserve_locks;    /* don't remove level files prior to exit */
 #endif
     int something_worth_saving; /* in case of panic */
     int panicking;              /* `panic' is in progress */
     int exiting;                /* an exit handler is executing */
     int in_moveloop;
     int in_impossible;
 #ifdef PANICLOG
     int in_paniclog;
 #endif
     int wizkit_wishing;
 } program_state;
 
 E boolean restoring;
 
 E const char quitchars[];
 E const char vowels[];
 E const char ynchars[];
 E const char ynqchars[];
 E const char ynaqchars[];
 E const char ynNaqchars[];
 E NEARDATA long yn_number;
 
 E const char disclosure_options[];
 
 E NEARDATA int smeq[];
 E NEARDATA int doorindex;
 E NEARDATA char *save_cm;
 
 E NEARDATA struct kinfo {
     struct kinfo *next; /* chain of delayed killers */
     int id;             /* uprop keys to ID a delayed killer */
     int format;         /* one of the killer formats */
 #define KILLED_BY_AN 0
 #define KILLED_BY 1
 #define NO_KILLER_PREFIX 2
     char name[BUFSZ]; /* actual killer name */
 } killer;
 
 E long done_money;
 E const char *configfile;
 E char lastconfigfile[BUFSZ]; /* used for messaging */
 E NEARDATA char plname[PL_NSIZ];
 E NEARDATA char dogname[];
 E NEARDATA char catname[];
 E NEARDATA char horsename[];
 E char preferred_pet;
 E const char *occtxt; /* defined when occupation != NULL */
 E const char *nomovemsg;
 E char lock[];
 
 E const schar xdir[], ydir[], zdir[];
 
 E NEARDATA schar tbx, tby; /* set in mthrowu.c */
 
 E NEARDATA struct multishot {
     int n, i;
     short o;
     boolean s;
 } m_shot;
 
 E NEARDATA long moves, monstermoves;
 E NEARDATA long wailmsg;
 
 E NEARDATA boolean in_mklev;
 E NEARDATA boolean stoned;
 E NEARDATA boolean unweapon;
 E NEARDATA boolean mrg_to_wielded;
 E NEARDATA boolean defer_see_monsters;
 
 E NEARDATA boolean in_steed_dismounting;
 
 E const int shield_static[];
 
 #include "spell.h"
 E NEARDATA struct spell spl_book[]; /* sized in decl.c */
 
 #include "color.h"
 #ifdef TEXTCOLOR
 E const int zapcolors[];
 #endif
 
 E const struct class_sym def_oc_syms[MAXOCLASSES]; /* default class symbols */
 E uchar oc_syms[MAXOCLASSES];                      /* current class symbols */
 E const struct class_sym def_monsyms[MAXMCLASSES]; /* default class symbols */
 E uchar monsyms[MAXMCLASSES];                      /* current class symbols */
 
 #include "obj.h"
 E NEARDATA struct obj *invent, *uarm, *uarmc, *uarmh, *uarms, *uarmg, *uarmf,
     *uarmu, /* under-wear, so to speak */
     *uskin, *uamul, *uleft, *uright, *ublindf, *uwep, *uswapwep, *uquiver;
 
 E NEARDATA struct obj *uchain; /* defined only when punished */
 E NEARDATA struct obj *uball;
 E NEARDATA struct obj *migrating_objs;
 E NEARDATA struct obj *billobjs;
 E NEARDATA struct obj *current_wand, *thrownobj, *kickedobj;
 
 E NEARDATA struct obj zeroobj; /* init'd and defined in decl.c */
 E NEARDATA anything zeroany;   /* init'd and defined in decl.c */
 
 #include "you.h"
 E NEARDATA struct you u;
 E NEARDATA time_t ubirthday;
 E NEARDATA struct u_realtime urealtime;
 
 #include "onames.h"
 #ifndef PM_H /* (pm.h has already been included via youprop.h) */
 #include "pm.h"
 #endif
 
 E NEARDATA struct monst youmonst; /* init'd and defined in decl.c */
 E NEARDATA struct monst *mydogs, *migrating_mons;
 
 E NEARDATA struct mvitals {
     uchar born;
     uchar died;
     uchar mvflags;
 } mvitals[NUMMONS];
 
 E NEARDATA struct c_color_names {
     const char *const c_black, *const c_amber, *const c_golden,
         *const c_light_blue, *const c_red, *const c_green, *const c_silver,
         *const c_blue, *const c_purple, *const c_white, *const c_orange;
 } c_color_names;
 #define NH_BLACK c_color_names.c_black
 #define NH_AMBER c_color_names.c_amber
 #define NH_GOLDEN c_color_names.c_golden
 #define NH_LIGHT_BLUE c_color_names.c_light_blue
 #define NH_RED c_color_names.c_red
 #define NH_GREEN c_color_names.c_green
 #define NH_SILVER c_color_names.c_silver
 #define NH_BLUE c_color_names.c_blue
 #define NH_PURPLE c_color_names.c_purple
 #define NH_WHITE c_color_names.c_white
 #define NH_ORANGE c_color_names.c_orange
 
 /* The names of the colors used for gems, etc. */
 E const char *c_obj_colors[];
 
 E struct c_common_strings {
     const char *const c_nothing_happens, *const c_thats_enough_tries,
         *const c_silly_thing_to, *const c_shudder_for_moment,
         *const c_something, *const c_Something, *const c_You_can_move_again,
         *const c_Never_mind, *c_vision_clears, *const c_the_your[2];
 } c_common_strings;
 #define nothing_happens c_common_strings.c_nothing_happens
 #define thats_enough_tries c_common_strings.c_thats_enough_tries
 #define silly_thing_to c_common_strings.c_silly_thing_to
 #define shudder_for_moment c_common_strings.c_shudder_for_moment
 #define something c_common_strings.c_something
 #define Something c_common_strings.c_Something
 #define You_can_move_again c_common_strings.c_You_can_move_again
 #define Never_mind c_common_strings.c_Never_mind
 #define vision_clears c_common_strings.c_vision_clears
 #define the_your c_common_strings.c_the_your
 
 /* material strings */
 E const char *materialnm[];
 
 /* Monster name articles */
 #define ARTICLE_NONE 0
 #define ARTICLE_THE 1
 #define ARTICLE_A 2
 #define ARTICLE_YOUR 3
 
 /* Monster name suppress masks */
 #define SUPPRESS_IT 0x01
 #define SUPPRESS_INVISIBLE 0x02
 #define SUPPRESS_HALLUCINATION 0x04
 #define SUPPRESS_SADDLE 0x08
 #define EXACT_NAME 0x0F
 
 /* Vision */
 E NEARDATA boolean vision_full_recalc; /* TRUE if need vision recalc */
 E NEARDATA char **viz_array;           /* could see/in sight row pointers */
 
 /* Window system stuff */
 E NEARDATA winid WIN_MESSAGE;
 #ifndef STATUS_VIA_WINDOWPORT
 E NEARDATA winid WIN_STATUS;
 #endif
 E NEARDATA winid WIN_MAP, WIN_INVEN;
 
 /* pline (et al) for a single string argument (suppress compiler warning) */
 #define pline1(cstr) pline("%s", cstr)
 #define Your1(cstr) Your("%s", cstr)
 #define You1(cstr) You("%s", cstr)
 #define verbalize1(cstr) verbalize("%s", cstr)
 #define You_hear1(cstr) You_hear("%s", cstr)
 #define Sprintf1(buf, cstr) Sprintf(buf, "%s", cstr)
 #define panic1(cstr) panic("%s", cstr)
 
 E char toplines[];
 #ifndef TCAP_H
 E struct tc_gbl_data {   /* also declared in tcap.h */
     char *tc_AS, *tc_AE; /* graphics start and end (tty font swapping) */
     int tc_LI, tc_CO;    /* lines and columns */
 } tc_gbl_data;
 #define AS tc_gbl_data.tc_AS
 #define AE tc_gbl_data.tc_AE
 #define LI tc_gbl_data.tc_LI
 #define CO tc_gbl_data.tc_CO
 #endif
 
 /* xxxexplain[] is in drawing.c */
 E const char *const monexplain[], invisexplain[], *const oclass_names[];
 
 /* Some systems want to use full pathnames for some subsets of file names,
  * rather than assuming that they're all in the current directory.  This
  * provides all the subclasses that seem reasonable, and sets up for all
  * prefixes being null.  Port code can set those that it wants.
  */
 #define HACKPREFIX 0
 #define LEVELPREFIX 1
 #define SAVEPREFIX 2
 #define BONESPREFIX 3
 #define DATAPREFIX 4 /* this one must match hardcoded value in dlb.c */
 #define SCOREPREFIX 5
 #define LOCKPREFIX 6
 #define SYSCONFPREFIX 7
 #define CONFIGPREFIX 8
 #define TROUBLEPREFIX 9
 #define PREFIX_COUNT 10
 /* used in files.c; xxconf.h can override if needed */
 #ifndef FQN_MAX_FILENAME
 #define FQN_MAX_FILENAME 512
 #endif
 
 #if defined(NOCWD_ASSUMPTIONS) || defined(VAR_PLAYGROUND)
 /* the bare-bones stuff is unconditional above to simplify coding; for
  * ports that actually use prefixes, add some more localized things
  */
 #define PREFIXES_IN_USE
 #endif
 
 E char *fqn_prefix[PREFIX_COUNT];
 #ifdef PREFIXES_IN_USE
 E char *fqn_prefix_names[PREFIX_COUNT];
 #endif
 
 E NEARDATA struct savefile_info sfcap, sfrestinfo, sfsaveinfo;
 
 struct autopickup_exception {
     struct nhregex *regex;
     char *pattern;
     boolean grab;
     struct autopickup_exception *next;
 };
 
 struct plinemsg_type {
     xchar msgtype;  /* one of MSGTYP_foo */
     struct nhregex *regex;
     char *pattern;
     struct plinemsg_type *next;
 };
 
 #define MSGTYP_NORMAL   0
 #define MSGTYP_NOREP    1
 #define MSGTYP_NOSHOW   2
 #define MSGTYP_STOP     3
 
 E struct plinemsg_type *plinemsg_types;
 
 #ifdef PANICTRACE
 E char *ARGV0;
 #endif
 
 #undef E
 
 #endif /* DECL_H */