home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / prgramer / pascal2c / p2c.hdr < prev    next >
Text File  |  1992-08-04  |  33KB  |  575 lines

  1.  
  2. /* Declarations created by "makeproto" on Tue Aug 04 14:50:53 1992 */
  3.  
  4.  
  5.  
  6. /* Declarations from trans.c */
  7. extern void     saveoldfile        PP( (char *fname) );
  8. extern void     closelogfile       PV();
  9. extern void     showinitfile       PV();
  10. extern void     usage              PV();
  11. extern int      main               PP( (int argc, char **argv) );
  12. extern int      outmem             PV();
  13. extern int      ISBOGUS            PP( (char *p) );
  14. extern char    *meaningkindname    PP( (enum meaningkind kind) );
  15. extern char    *typekindname       PP( (enum typekind kind) );
  16. extern char    *exprkindname       PP( (enum exprkind kind) );
  17. extern char    *stmtkindname       PP( (enum stmtkind kind) );
  18. extern void     dumptype           PP( (Type *tp) );
  19. extern void     dumpmeaning        PP( (Meaning *mp) );
  20. extern void     dumpsymtable       PP( (Symbol *sym) );
  21. extern void     dumptypename       PP( (Type *tp, int waddr) );
  22. extern void     dumptypename_file  PP( (FILE *f, Type *tp) );
  23. extern void     dumpexpr           PP( (Expr *ex) );
  24. extern void     dumpexpr_file      PP( (FILE *f, Expr *ex) );
  25. extern void     innerdumpstmt      PP( (Stmt *sp, int indent) );
  26. extern void     dumpstmt           PP( (Stmt *sp, int indent) );
  27. extern void     dumpstmt_file      PP( (FILE *f, Stmt *sp) );
  28. extern void     wrapup             PV();
  29. extern void     mem_summary        PV();
  30. extern anyptr   test_malloc        PP( (int size, int *total, int *final) );
  31. extern void     test_free          PP( (anyptr p) );
  32. extern anyptr   test_realloc       PP( (anyptr p, int size) );
  33.  
  34. /* Declarations from stuff.c */
  35. extern void     debughook          PV();
  36. extern Strlist *strlist_append     PP( (Strlist **base, char *s) );
  37. extern Strlist *strlist_insert     PP( (Strlist **base, char *s) );
  38. extern Strlist *strlist_add        PP( (Strlist **base, char *s) );
  39. extern void     strlist_mix        PP( (Strlist **base, Strlist *sl) );
  40. extern void     strlist_eat        PP( (Strlist **base) );
  41. extern void     strlist_empty      PP( (Strlist **base) );
  42. extern void     strlist_remove     PP( (Strlist **base, char *s) );
  43. extern void     strlist_delete     PP( (Strlist **base, Strlist *sl) );
  44. extern Strlist *strlist_find       PP( (Strlist *base, char *s) );
  45. extern Strlist *strlist_cifind     PP( (Strlist *base, char *s) );
  46. extern int      strcincmp          PP( (char *s1, char *s2, int n) );
  47. extern int      strcicmp           PP( (char *s1, char *s2) );
  48. extern void     fixfname           PP( (char *fn, char *ext) );
  49. extern void     removesuffix       PP( (char *fn) );
  50. extern char    *stralloc           PP( (char *s) );
  51. extern void     strchange          PP( (char **v, char *s) );
  52. extern char    *format_gen         PP( (char *fmt, long i1, long i2, double dbl,
  53.                                         char *s1, char *s2, char *s3) );
  54. extern char    *format_none        PP( (char *fmt) );
  55. extern char    *format_d           PP( (char *fmt, int a1) );
  56. extern char    *format_g           PP( (char *fmt, double a1) );
  57. extern char    *format_s           PP( (char *fmt, char *a1) );
  58. extern char    *format_ss          PP( (char *fmt, char *a1, char *a2) );
  59. extern char    *format_sd          PP( (char *fmt, char *a1, int a2) );
  60. extern char    *format_ds          PP( (char *fmt, long a1, char *a2) );
  61. extern char    *format_dd          PP( (char *fmt, long a1, long a2) );
  62. extern char    *format_sss         PP( (char *fmt, char *a1, char *a2, char *a3) );
  63. extern char    *format_ssd         PP( (char *fmt, char *a1, char *a2, long a3) );
  64. extern char    *format_sds         PP( (char *fmt, char *a1, long a2, char *a3) );
  65. extern int      my_toupper         PP( (int c) );
  66. extern int      my_tolower         PP( (int c) );
  67. extern void     upc                PP( (char *s) );
  68. extern void     lwc                PP( (char *s) );
  69. extern char    *strupper           PP( (char *s) );
  70. extern char    *strlower           PP( (char *s) );
  71. extern char    *my_strchr          PP( (char *cp, int c) );
  72. extern char    *my_strrchr         PP( (char *cp, int c) );
  73. extern char    *my_strtok          PP( (char *cp, char *delim) );
  74. extern long     my_strtol          PP( (char *buf, char **ret, int base) );
  75. extern void     init_stuff         PV();
  76.  
  77. /* Declarations from out.c */
  78. extern void     setup_out          PV();
  79. extern void     select_outfile     PP( (FILE *fp) );
  80. extern void     start_source       PV();
  81. extern void     end_source         PV();
  82. extern int      line_start         PV();
  83. extern int      cur_column         PV();
  84. extern int      lookback           PP( (int n) );
  85. extern int      lookback_prn       PP( (int n) );
  86. extern int      adddeltas          PP( (int d1, int d2) );
  87. extern int      applydelta         PP( (int i, int d) );
  88. extern void     moreindent         PP( (int delta) );
  89. extern void     singleindent       PP( (int delta) );
  90. extern void     futureindent       PP( (int num) );
  91. extern int      parsedelta         PP( (char *cp, int def) );
  92. extern void     eatblanklines      PV();
  93. extern int      parse_breakstr     PP( (char *cp) );
  94. extern long     getcurtime         PV();
  95. extern void     output             PP( (char *msg) );
  96. extern void     out_n_spaces       PP( (int n) );
  97. extern void     out_spaces         PP( (int spc, int over, int len, int delta) );
  98. extern void     testlinebreaker    PP( (int lev, char *fn) );
  99. extern void     outsection         PP( (int size) );
  100. extern int      isembedcomment     PP( (Strlist *cmt) );
  101. extern Strlist *outcomments        PP( (Strlist *cmt) );
  102. extern void     outcomment         PP( (Strlist *cmt) );
  103. extern void     outtrailcomment    PP( (Strlist *cmt, int serial, int indent) );
  104. extern void     flushcomments      PP( (Strlist **cmt, int kind, int serial) );
  105. extern char    *rawCstring         PP( (char *fmt, char *s, int len, int special) );
  106. extern char    *makeCstring        PP( (char *s, int len) );
  107. extern char    *makeCchar          PP( (int ich) );
  108.  
  109. /* Declarations from comment.c */
  110. extern void     setup_comment      PV();
  111. extern int      commentlen         PP( (Strlist *cmt) );
  112. extern int      commentvisible     PP( (Strlist *cmt) );
  113. extern void     steal_comments     PP( (long olds, long news, int always) );
  114. extern Strlist *fixbeginendcomment PP( (Strlist *cmt) );
  115. extern void     attach_comments    PP( (Stmt *sbase) );
  116. extern void     setcommentkind     PP( (Strlist *cmt, int kind) );
  117. extern void     commentline        PP( (int kind) );
  118. extern void     addnote            PP( (char *msg, long serial) );
  119. extern Strlist *grabcomment        PP( (int kind) );
  120. extern int      matchcomment       PP( (Strlist *cmt, int kind, int stamp) );
  121. extern Strlist *findcomment        PP( (Strlist *cmt, int kind, int stamp) );
  122. extern Strlist *extractcomment     PP( (Strlist **cmt, int kind, int stamp) );
  123. extern void     changecomments     PP( (Strlist *cmt, int okind, int ostamp,
  124.                                         int kind, int stamp) );
  125.  
  126. /* Declarations from lex.c */
  127. extern char    *fixpascalname      PP( (char *name) );
  128. extern void     init_lex           PV();
  129. extern void     setup_lex          PV();
  130. extern int      checkeatnote       PP( (char *msg) );
  131. extern void     beginerror         PV();
  132. extern void     counterror         PV();
  133. extern void     error              PP( (char *msg) );
  134. extern void     interror           PP( (char *proc, char *msg) );
  135. extern void     warning            PP( (char *msg) );
  136. extern void     intwarning         PP( (char *proc, char *msg) );
  137. extern void     note               PP( (char *msg) );
  138. extern void     endnote            PP( (char *msg) );
  139. extern void     showendnotes       PV();
  140. extern char    *tok_name           PP( (Token tok) );
  141. extern void     expected           PP( (char *msg) );
  142. extern void     expecttok          PP( (Token tok) );
  143. extern void     needtok            PP( (Token tok) );
  144. extern int      wexpected          PP( (char *msg) );
  145. extern int      wexpecttok         PP( (Token tok) );
  146. extern int      wneedtok           PP( (Token tok) );
  147. extern void     alreadydef         PP( (Symbol *sym) );
  148. extern void     undefsym           PP( (Symbol *sym) );
  149. extern void     symclass           PP( (Symbol *sym) );
  150. extern void     badtypes           PV();
  151. extern void     valrange           PV();
  152. extern void     skipparens         PV();
  153. extern void     skiptotoken2       PP( (Token tok1, Token tok2) );
  154. extern void     skippasttoken2     PP( (Token tok1, Token tok2) );
  155. extern void     skippasttotoken    PP( (Token tok1, Token tok2) );
  156. extern void     skiptotoken        PP( (Token tok) );
  157. extern void     skippasttoken      PP( (Token tok) );
  158. extern int      skipopenparen      PV();
  159. extern int      skipcloseparen     PV();
  160. extern int      skipcomma          PV();
  161. extern char    *findaltname        PP( (char *name, int num) );
  162. extern Symbol  *findsymbol_opt     PP( (char *name) );
  163. extern Symbol  *findsymbol         PP( (char *name) );
  164. extern void     clearprogress      PV();
  165. extern void     progress           PV();
  166. extern void     getline            PV();
  167. extern void     push_input_file    PP( (FILE *fp, char *fname, int isinclude) );
  168. extern void     include_as_import  PV();
  169. extern void     push_input_strlist PP( (Strlist *sp, char *fname) );
  170. extern void     pop_input          PV();
  171. extern int      undooption         PP( (int i, char *name) );
  172. extern void     badinclude         PV();
  173. extern int      handle_include     PP( (char *fn) );
  174. extern int      turbo_directive    PP( (char *closing, char *after) );
  175. extern void     defmacro           PP( (char *name, long kind, char *fname,
  176.                                         int lnum) );
  177. extern void     check_unused_macros PV();
  178. extern char    *getinlinepart      PV();
  179. extern char     getchartok         PV();
  180. extern char    *getparenstr        PP( (char *buf) );
  181. extern void     leadingcomments    PV();
  182. extern void     get_C_string       PP( (int term) );
  183. extern void     begincommenting    PP( (char *cp) );
  184. extern void     saveinputcomment   PP( (char *cp) );
  185. extern void     endcommenting      PP( (char *cp) );
  186. extern int      peeknextchar       PV();
  187. extern void     gettok             PV();
  188. extern void     checkkeyword       PP( (Token tok) );
  189. extern void     checkmodulewords   PV();
  190.  
  191. /* Declarations from parse.c */
  192. extern void     setup_parse        PV();
  193. extern void     echobreak          PV();
  194. extern void     echoword           PP( (char *name, int comma) );
  195. extern void     echoprocname       PP( (Meaning *mp) );
  196. extern void     need_forward_decl  PP( (Meaning *func) );
  197. extern void     free_stmt          PP( (Stmt *sp) );
  198. extern Stmt    *makestmt           PP( (enum stmtkind kind) );
  199. extern Stmt    *makestmt_call      PP( (Expr *call) );
  200. extern Stmt    *makestmt_assign    PP( (Expr *lhs, Expr *rhs) );
  201. extern Stmt    *makestmt_if        PP( (Expr *cond, Stmt *thn, Stmt *els) );
  202. extern Stmt    *makestmt_seq       PP( (Stmt *s1, Stmt *s2) );
  203. extern Stmt    *copystmt           PP( (Stmt *sp) );
  204. extern void     nukestmt           PP( (Stmt *sp) );
  205. extern void     splicestmt         PP( (Stmt *sp, Stmt *spnew) );
  206. extern int      stmtcount          PP( (Stmt *sp) );
  207. extern Stmt    *close_files_to_ctx PP( (Meaning *ctx) );
  208. extern int      simplewith         PP( (Expr *ex) );
  209. extern int      simplefor          PP( (Stmt *sp, Expr *ex) );
  210. extern int      tryfuncmacro       PP( (Expr **exp, Meaning *mp) );
  211. extern Expr    *replaceexprexpr    PP( (Expr *ex, Expr *oldex, Expr *newex,
  212.                                         int keeptype) );
  213. extern void     replaceexpr        PP( (Stmt *sp, Expr *oldex, Expr *newex) );
  214. extern Stmt    *mixassignments     PP( (Stmt *sp, Meaning *mp) );
  215. extern int      expr_is_bool       PP( (Expr *ex, int want) );
  216. extern int      implies            PP( (Expr *c1, Expr *c2, int not1, int not2) );
  217. extern void     infiniteloop       PP( (Stmt *sp) );
  218. extern Expr    *print_func         PP( (Expr *ex) );
  219. extern int      printnl_func       PP( (Expr *ex) );
  220. extern Expr    *chg_printf         PP( (Expr *ex) );
  221. extern Expr    *mix_printf         PP( (Expr *ex, Expr *ex2) );
  222. extern void     eatstmt            PP( (Stmt **spp) );
  223. extern int      haslabels          PP( (Stmt *sp) );
  224. extern void     fixblock           PP( (Stmt **spp, Stmt *thereturn) );
  225. extern int      checkvarchangedexpr PP( (Expr *ex, Meaning *mp, int addrokay) );
  226. extern int      checkvarchanged    PP( (Stmt *sp, Meaning *mp) );
  227. extern int      checkexprchanged   PP( (Stmt *sp, Expr *ex) );
  228. extern void     checkvaroffsetexpr PP( (Expr *ex, Meaning *mp, int myoffset) );
  229. extern void     checkvaroffsetstmt PP( (Stmt *sp, Meaning *mp) );
  230. extern int      checkvaroffset     PP( (Stmt *sp, Meaning *mp) );
  231. extern Expr    *initfilevar        PP( (Expr *ex) );
  232. extern void     initfilevars       PP( (Meaning *mp, Stmt ***sppp, Expr *exbase) );
  233. extern void     movetoend          PP( (Meaning *mp) );
  234. extern void     do_include         PP( (Token blkind) );
  235. extern void     p_block            PP( (Token blkind) );
  236. extern int      p_search           PP( (char *fname, char *ext, int need) );
  237. extern void     p_program          PV();
  238.  
  239. /* Declarations from decl.c */
  240. extern Meaning *makespecialproc    PP( (char *name, Stmt *(*handler)()) );
  241. extern Meaning *makestandardproc   PP( (char *name, Stmt *(*handler)()) );
  242. extern Meaning *makespecialfunc    PP( (char *name, Expr *(*handler)()) );
  243. extern Meaning *makestandardfunc   PP( (char *name, Expr *(*handler)()) );
  244. extern Meaning *makespecialvar     PP( (char *name, Expr *(*handler)()) );
  245. extern void     setup_decl         PV();
  246. extern int      push_imports       PV();
  247. extern void     pop_imports        PP( (int mark) );
  248. extern void     import_ctx         PP( (Meaning *ctx) );
  249. extern void     perm_import        PP( (Meaning *ctx) );
  250. extern void     unimport           PP( (int mark) );
  251. extern void     activatemeaning    PP( (Meaning *mp) );
  252. extern void     pushctx            PP( (Meaning *ctx) );
  253. extern void     popctx             PV();
  254. extern void     forget_ctx         PP( (Meaning *ctx, int all) );
  255. extern void     handle_nameof      PV();
  256. extern int      issafename         PP( (Symbol *sp, int isglobal, int isdefine) );
  257. extern void     setupmeaning       PP( (Meaning *mp, Symbol *sym,
  258.                                         enum meaningkind kind,
  259.                                         enum meaningkind namekind) );
  260. extern Meaning *addmeaningas       PP( (Symbol *sym, enum meaningkind kind,
  261.                                         enum meaningkind namekind) );
  262. extern Meaning *addmeaning         PP( (Symbol *sym, enum meaningkind kind) );
  263. extern Meaning *addmeaningafter    PP( (Meaning *mpprev, Symbol *sym,
  264.                                         enum meaningkind kind) );
  265. extern void     unaddmeaning       PP( (Meaning *mp) );
  266. extern void     readdmeaning       PP( (Meaning *mp) );
  267. extern Meaning *addfield           PP( (Symbol *sym, Meaning ***flast,
  268.                                         Type *rectype, Meaning *tname) );
  269. extern int      isfiletype         PP( (Type *type, int big) );
  270. extern Meaning *isfilevar          PP( (Expr *ex) );
  271. extern Type    *filebasetype       PP( (Type *type) );
  272. extern Expr    *filebasename       PP( (Expr *ex) );
  273. extern Expr    *filenamepart       PP( (Expr *ex) );
  274. extern int      fileisbuffered     PP( (Expr *ex, int maybe) );
  275. extern Type    *findbasetype_      PP( (Type *type, int flags) );
  276. extern Type    *findbasetype       PP( (Type *type, int flags) );
  277. extern Expr    *arraysize          PP( (Type *tp, int incskipped) );
  278. extern Type    *promote_type       PP( (Type *tp) );
  279. extern Type    *promote_type_bin   PP( (Type *t1, Type *t2) );
  280. extern void     predeclare_varstruct PP( (Meaning *mp) );
  281. extern void     outdeclarator      PP( (Type *type, char *name, int flags) );
  282. extern Type    *canonicaltype      PP( (Type *type) );
  283. extern int      identicaltypes     PP( (Type *t1, Type *t2) );
  284. extern int      similartypes       PP( (Type *t1, Type *t2) );
  285. extern void     declarefiles       PP( (Strlist *fnames) );
  286. extern char    *variantfieldname   PP( (int num) );
  287. extern int      record_is_union    PP( (Type *tp) );
  288. extern void     outfieldlist       PP( (Meaning *mp) );
  289. extern void     declarebigfile     PP( (Type *type) );
  290. extern void     outbasetype        PP( (Type *type, int flags) );
  291. extern void     out_type           PP( (Type *type, int witharrays) );
  292. extern int      varstorageclass    PP( (Meaning *mp) );
  293. extern char    *storageclassname   PP( (int i) );
  294. extern void     declarevar         PP( (Meaning *mp, int which) );
  295. extern int      checkvarmac        PP( (Meaning *mp) );
  296. extern int      declarevars        PP( (Meaning *ctx, int invarstruct) );
  297. extern void     redeclarevars      PP( (Meaning *ctx) );
  298. extern void     out_argdecls       PP( (Type *ftype) );
  299. extern void     makevarstruct      PP( (Meaning *func) );
  300. extern Type    *maketype           PP( (enum typekind kind) );
  301. extern Type    *makesubrangetype   PP( (Type *type, Expr *smin, Expr *smax) );
  302. extern Type    *makesettype        PP( (Type *setof) );
  303. extern Type    *makestringtype     PP( (int len) );
  304. extern Type    *makepointertype    PP( (Type *type) );
  305. extern Value    p_constant         PP( (Type *type) );
  306. extern int      typebits           PP( (long smin, long smax) );
  307. extern int      packedsize         PP( (char *fname, Type **typep, long *sizep,
  308.                                         int mode) );
  309. extern void     decl_comments      PP( (Meaning *mp) );
  310. extern void     p_attributes       PV();
  311. extern void     ignore_attributes  PV();
  312. extern int      size_attributes    PV();
  313. extern void     p_mech_spec        PP( (int doref) );
  314. extern Type    *p_modula_subrange  PP( (Type *basetype) );
  315. extern void     makefakestruct     PP( (Type *tp, Meaning *tname) );
  316. extern Type    *p_type             PP( (Meaning *tname) );
  317. extern Type    *p_funcdecl         PP( (int *isfunc, int istype) );
  318. extern Symbol  *findlabelsym       PV();
  319. extern void     p_labeldecl        PV();
  320. extern Meaning *findfieldname      PP( (Symbol *sym, Meaning **variants,
  321.                                         int *nvars) );
  322. extern Expr    *p_constrecord      PP( (Type *type, int style) );
  323. extern Expr    *p_constarray       PP( (Type *type, int style) );
  324. extern Expr    *p_conststring      PP( (Type *type, int style) );
  325. extern Expr    *p_subconst         PP( (Type *type, int style) );
  326. extern void     p_constdecl        PV();
  327. extern void     declaresubtypes    PP( (Meaning *mp) );
  328. extern void     declaretype        PP( (Meaning *mp) );
  329. extern void     declaretypes       PP( (int outflag) );
  330. extern void     p_typedecl         PV();
  331. extern void     setupfilevar       PP( (Meaning *mp) );
  332. extern Meaning *validatedtype      PP( (Meaning *dtype, Type *type) );
  333. extern void     p_vardecl          PV();
  334. extern void     p_valuedecl        PV();
  335. extern Meaning *maketempvar        PP( (Type *type, char *name) );
  336. extern Meaning *makestmttempvar    PP( (Type *type, char *name) );
  337. extern Meaning *markstmttemps      PV();
  338. extern void     freestmttemps      PP( (Meaning *mark) );
  339. extern void     freetempvar        PP( (Meaning *tvar) );
  340. extern void     canceltempvar      PP( (Meaning *tvar) );
  341.  
  342. /* Declarations from expr.c */
  343. extern void     free_value         PP( (Value *val) );
  344. extern Value    copyvalue          PP( (Value val) );
  345. extern int      valuesame          PP( (Value a, Value b) );
  346. extern char    *value_name         PP( (Value val, char *intfmt, int islong) );
  347. extern Value    value_cast         PP( (Value val, Type *type) );
  348. extern Type    *ord_type           PP( (Type *tp) );
  349. extern int      long_type          PP( (Type *tp) );
  350. extern Value    make_ord           PP( (Type *type, long i) );
  351. extern long     ord_value          PP( (Value val) );
  352. extern void     ord_range_expr     PP( (Type *type, Expr **smin, Expr **smax) );
  353. extern int      ord_range          PP( (Type *type, long *smin, long *smax) );
  354. extern void     freeexpr           PP( (Expr *ex) );
  355. extern Expr    *makeexpr           PP( (enum exprkind kind, int n) );
  356. extern Expr    *makeexpr_un        PP( (enum exprkind kind, Type *type,
  357.                                         Expr *arg1) );
  358. extern Expr    *makeexpr_bin       PP( (enum exprkind kind, Type *type,
  359.                                         Expr *arg1, Expr *arg2) );
  360. extern Expr    *makeexpr_val       PP( (Value val) );
  361. extern Expr    *makeexpr_char      PP( (int c) );
  362. extern Expr    *makeexpr_long      PP( (long i) );
  363. extern Expr    *makeexpr_real      PP( (char *r) );
  364. extern Expr    *makeexpr_lstring   PP( (char *msg, int len) );
  365. extern Expr    *makeexpr_string    PP( (char *msg) );
  366. extern int      checkstring        PP( (Expr *ex, char *msg) );
  367. extern Expr    *makeexpr_var       PP( (Meaning *mp) );
  368. extern Expr    *makeexpr_name      PP( (char *name, Type *type) );
  369. extern Expr    *makeexpr_setbits   PV();
  370. extern Expr    *makeexpr_bicall_0  PP( (char *name, Type *type) );
  371. extern Expr    *makeexpr_bicall_1  PP( (char *name, Type *type, Expr *arg1) );
  372. extern Expr    *makeexpr_bicall_2  PP( (char *name, Type *type, Expr *arg1,
  373.                                         Expr *arg2) );
  374. extern Expr    *makeexpr_bicall_3  PP( (char *name, Type *type, Expr *arg1,
  375.                                         Expr *arg2, Expr *arg3) );
  376. extern Expr    *makeexpr_bicall_4  PP( (char *name, Type *type, Expr *arg1,
  377.                                         Expr *arg2, Expr *arg3, Expr *arg4) );
  378. extern Expr    *makeexpr_bicall_5  PP( (char *name, Type *type, Expr *arg1,
  379.                                         Expr *arg2, Expr *arg3, Expr *arg4,
  380.                                         Expr *arg5) );
  381. extern Expr    *copyexpr           PP( (Expr *ex) );
  382. extern int      exprsame           PP( (Expr *a, Expr *b, int strict) );
  383. extern int      exprequiv          PP( (Expr *a, Expr *b) );
  384. extern void     deletearg          PP( (Expr **ex, int n) );
  385. extern void     insertarg          PP( (Expr **ex, int n, Expr *arg) );
  386. extern Expr    *grabarg            PP( (Expr *ex, int n) );
  387. extern void     delsimparg         PP( (Expr **ep, int n) );
  388. extern Expr    *resimplify         PP( (Expr *ex) );
  389. extern int      realzero           PP( (char *s) );
  390. extern int      realint            PP( (char *s, int i) );
  391. extern int      checkconst         PP( (Expr *ex, long val) );
  392. extern int      isliteralconst     PP( (Expr *ex, Value *valp) );
  393. extern int      isconstexpr        PP( (Expr *ex, long *valp) );
  394. extern int      isconstantexpr     PP( (Expr *ex) );
  395. extern Expr    *makeexpr_actcast   PP( (Expr *a, Type *type) );
  396. extern Expr    *makeexpr_cast      PP( (Expr *a, Type *type) );
  397. extern Expr    *gentle_cast        PP( (Expr *a, Type *type) );
  398. extern Expr    *makeexpr_charcast  PP( (Expr *ex) );
  399. extern Expr    *makeexpr_stringcast PP( (Expr *ex) );
  400. extern int      exprlongness       PP( (Expr *ex) );
  401. extern Expr    *makeexpr_longcast  PP( (Expr *a, int tolong) );
  402. extern Expr    *makeexpr_arglong   PP( (Expr *a, int tolong) );
  403. extern Expr    *makeexpr_unlongcast PP( (Expr *a) );
  404. extern Expr    *makeexpr_forcelongness PP( (Expr *a) );
  405. extern Expr    *makeexpr_ord       PP( (Expr *ex) );
  406. extern int      expr_looks_neg     PP( (Expr *ex) );
  407. extern int      expr_is_neg        PP( (Expr *ex) );
  408. extern int      expr_neg_cost      PP( (Expr *a) );
  409. extern Expr    *enum_to_int        PP( (Expr *a) );
  410. extern Expr    *neg_inside_sum     PP( (Expr *a) );
  411. extern Expr    *makeexpr_neg       PP( (Expr *a) );
  412. extern Type    *true_type          PP( (Expr *ex) );
  413. extern int      ischartype         PP( (Expr *ex) );
  414. extern Expr    *makeexpr_plus      PP( (Expr *a, Expr *b) );
  415. extern Expr    *makeexpr_minus     PP( (Expr *a, Expr *b) );
  416. extern Expr    *makeexpr_inc       PP( (Expr *a, Expr *b) );
  417. extern Expr    *distribute_plus    PP( (Expr *ex) );
  418. extern Expr    *makeexpr_times     PP( (Expr *a, Expr *b) );
  419. extern Expr    *makeexpr_sqr       PP( (Expr *ex, int cube) );
  420. extern Expr    *makeexpr_divide    PP( (Expr *a, Expr *b) );
  421. extern int      gcd                PP( (int a, int b) );
  422. extern int      negsigns           PP( (int mask) );
  423. extern int      possiblesigns      PP( (Expr *ex) );
  424. extern Expr    *dodivmod           PP( (char *funcname, enum exprkind ekind,
  425.                                         Expr *a, Expr *b) );
  426. extern Expr    *makeexpr_div       PP( (Expr *a, Expr *b) );
  427. extern Expr    *makeexpr_mod       PP( (Expr *a, Expr *b) );
  428. extern Expr    *makeexpr_rem       PP( (Expr *a, Expr *b) );
  429. extern int      expr_not_cost      PP( (Expr *a) );
  430. extern Expr    *makeexpr_not       PP( (Expr *a) );
  431. extern Type    *mixsets            PP( (Expr **ep1, Expr **ep2) );
  432. extern Meaning *istempprocptr      PP( (Expr *ex) );
  433. extern Expr    *makeexpr_stringify PP( (Expr *ex) );
  434. extern Expr    *makeexpr_rel       PP( (enum exprkind rel, Expr *a, Expr *b) );
  435. extern Expr    *makeexpr_and       PP( (Expr *a, Expr *b) );
  436. extern Expr    *makeexpr_or        PP( (Expr *a, Expr *b) );
  437. extern Expr    *makeexpr_range     PP( (Expr *ex, Expr *exlow, Expr *exhigh,
  438.                                         int higheq) );
  439. extern Expr    *makeexpr_cond      PP( (Expr *c, Expr *a, Expr *b) );
  440. extern int      expr_is_lvalue     PP( (Expr *ex) );
  441. extern int      expr_has_address   PP( (Expr *ex) );
  442. extern Expr    *checknil           PP( (Expr *ex) );
  443. extern int      checkvarinlists    PP( (Strlist *yes, Strlist *no, int def,
  444.                                         Meaning *mp) );
  445. extern void     requirefilebuffer  PP( (Expr *ex) );
  446. extern Expr    *makeexpr_hat       PP( (Expr *a, int check) );
  447. extern Expr    *un_sign_extend     PP( (Expr *a) );
  448. extern Expr    *makeexpr_addr      PP( (Expr *a) );
  449. extern Expr    *makeexpr_addrstr   PP( (Expr *a) );
  450. extern Expr    *makeexpr_addrf     PP( (Expr *a) );
  451. extern Expr    *makeexpr_index     PP( (Expr *a, Expr *b, Expr *offset) );
  452. extern Expr    *makeexpr_type      PP( (Type *type) );
  453. extern Expr    *makeexpr_sizeof    PP( (Expr *ex, int incskipped) );
  454. extern int      exprspeed          PP( (Expr *ex) );
  455. extern int      noargdependencies  PP( (Expr *ex, int vars) );
  456. extern int      nodependencies     PP( (Expr *ex, int vars) );
  457. extern int      exprdependsvar     PP( (Expr *ex, Meaning *mp) );
  458. extern int      exprdepends        PP( (Expr *ex, Expr *ex2) );
  459. extern int      nosideeffects_func PP( (Expr *ex) );
  460. extern int      deterministic_func PP( (Expr *ex) );
  461. extern int      noargsideeffects   PP( (Expr *ex, int mode) );
  462. extern int      nosideeffects      PP( (Expr *ex, int mode) );
  463. extern int      exproccurs         PP( (Expr *ex, Expr *ex2) );
  464. extern Expr    *singlevar          PP( (Expr *ex) );
  465. extern int      structuredfunc     PP( (Expr *ex) );
  466. extern int      strlapfunc         PP( (Expr *ex) );
  467. extern Meaning *istempvar          PP( (Expr *ex) );
  468. extern Meaning *totempvar          PP( (Expr *ex) );
  469. extern Meaning *isretvar           PP( (Expr *ex) );
  470. extern Expr    *bumpstring         PP( (Expr *ex, Expr *index, int offset) );
  471. extern long     po2m1              PP( (int n) );
  472. extern int      isarithkind        PP( (enum exprkind kind) );
  473. extern Expr    *makeexpr_assign    PP( (Expr *a, Expr *b) );
  474. extern Expr    *makeexpr_comma     PP( (Expr *a, Expr *b) );
  475. extern int      strmax             PP( (Expr *ex) );
  476. extern int      strhasnull         PP( (Value val) );
  477. extern int      istempsprintf      PP( (Expr *ex) );
  478. extern Expr    *makeexpr_sprintfify PP( (Expr *ex) );
  479. extern Expr    *makeexpr_unsprintfify PP( (Expr *ex) );
  480. extern int      sprintflength      PP( (Expr *ex, int allownulls) );
  481. extern Expr    *makeexpr_concat    PP( (Expr *a, Expr *b, int usesprintf) );
  482. extern Expr    *cleansprintf       PP( (Expr *ex) );
  483. extern Expr    *makeexpr_substring PP( (Expr *vex, Expr *ex, Expr *exi,
  484.                                         Expr *exj) );
  485. extern Expr    *makeexpr_dot       PP( (Expr *ex, Meaning *mp) );
  486. extern Expr    *makeexpr_dotq      PP( (Expr *ex, char *name, Type *type) );
  487. extern Expr    *strmax_func        PP( (Expr *ex) );
  488. extern Expr    *makeexpr_nil       PV();
  489. extern Expr    *makeexpr_ctx       PP( (Meaning *ctx) );
  490. extern Expr    *force_signed       PP( (Expr *ex) );
  491. extern Expr    *force_unsigned     PP( (Expr *ex) );
  492. extern long     type_sizeof        PP( (Type *type, int pasc) );
  493. extern Value    eval_expr          PP( (Expr *ex) );
  494. extern Value    eval_expr_consts   PP( (Expr *ex) );
  495. extern Value    eval_expr_pasc     PP( (Expr *ex) );
  496. extern int      expr_is_const      PP( (Expr *ex) );
  497. extern Expr    *eatcasts           PP( (Expr *ex) );
  498.  
  499. /* Declarations from pexpr.c */
  500. extern Expr    *dots_n_hats        PP( (Expr *ex, Type *target) );
  501. extern Expr    *p_index            PP( (Expr *ex, Expr *ex2) );
  502. extern Expr    *fake_dots_n_hats   PP( (Expr *ex) );
  503. extern void     var_reference      PP( (Meaning *mp) );
  504. extern Expr    *p_ord_expr         PV();
  505. extern Expr    *packset            PP( (Expr *ex, Type *type) );
  506. extern Expr    *p_setfactor        PP( (Type *target, int sure) );
  507. extern Expr    *p_funcarglist      PP( (Expr *ex, Meaning *args, int firstarg,
  508.                                         int ismacro) );
  509. extern Expr    *replacemacargs     PP( (Expr *ex, Expr *fex) );
  510. extern Expr    *p_noarglist        PP( (Expr *ex, Meaning *mp, Meaning *args) );
  511. extern void     func_reference     PP( (Meaning *func) );
  512. extern Expr    *p_funccall         PP( (Meaning *mp) );
  513. extern Expr    *accumulate_strlit  PV();
  514. extern Expr    *pascaltypecast     PP( (Type *type, Expr *ex2) );
  515. extern Expr    *p_expr             PP( (Type *target) );
  516. extern Type    *nametotype         PP( (char *name) );
  517. extern int      istypespec         PV();
  518. extern Expr    *pc_parentype       PP( (char *cp) );
  519. extern Expr    *pc_factor          PV();
  520. extern Expr    *pc_expr2           PP( (int prec) );
  521. extern Expr    *pc_expr            PV();
  522. extern Expr    *pc_expr_str        PP( (char *buf) );
  523. extern Expr    *fixexpr            PP( (Expr *ex, int env) );
  524. extern void     out_var            PP( (Meaning *mp, int prec) );
  525. extern void     out_field          PP( (Meaning *mp) );
  526. extern void     out_expr           PP( (Expr *ex) );
  527. extern void     out_expr_top       PP( (Expr *ex) );
  528. extern void     out_expr_factor    PP( (Expr *ex) );
  529. extern void     out_expr_parens    PP( (Expr *ex) );
  530. extern void     out_expr_stmt      PP( (Expr *ex) );
  531. extern void     out_expr_bool      PP( (Expr *ex) );
  532.  
  533. /* Declarations from funcs.c */
  534. extern void     setup_funcs        PV();
  535. extern int      isvar              PP( (Expr *ex, Meaning *mp) );
  536. extern char    *getstring          PP( (Expr *ex) );
  537. extern Expr    *p_parexpr          PP( (Type *target) );
  538. extern Type    *argbasetype        PP( (Expr *ex) );
  539. extern Type    *choosetype         PP( (Type *t1, Type *t2) );
  540. extern Expr    *convert_offset     PP( (Type *type, Expr *ex2) );
  541. extern Expr    *convert_size       PP( (Type *type, Expr *ex, char *name) );
  542. extern Stmt    *proc_assert        PV();
  543. extern Stmt    *wrapopencheck      PP( (Stmt *sp, Expr *fex) );
  544. extern void     parse_special_variant PP( (Type *tp, char *buf) );
  545. extern char    *find_special_variant PP( (char *buf, char *spname,
  546.                                           Strlist *splist, int need) );
  547. extern int      is_std_file        PP( (Expr *ex) );
  548. extern Stmt    *proc_exit          PV();
  549. extern Stmt    *doseek             PP( (Expr *fex, Expr *ex) );
  550. extern Expr    *writeelement       PP( (Expr *ex, Expr *wid, Expr *prec,
  551.                                         int base) );
  552. extern void     decl_builtins      PV();
  553.  
  554. /* Declarations from dir.c */
  555. extern void     init_dir           PV();
  556. extern void     setup_dir          PV();
  557. extern void     setup_module       PP( (char *name, int defn) );
  558. extern void     fix_parameters     PV();
  559. extern Stmt    *fix_statement      PP( (Stmt *sp) );
  560. extern Expr    *fix_expression     PP( (Expr *ex, int env) );
  561. extern Expr    *fix_bicall         PP( (Expr *ex, int env) );
  562. extern int      boolean_bicall     PP( (char *name) );
  563. extern unsigned int safemask_bicall PP( (char *name) );
  564. extern int      sideeffects_bicall PP( (char *name) );
  565.  
  566. /* Declarations from hpmods.c */
  567. extern void     hpmods             PP( (char *name, int defn) );
  568.  
  569. /* Declarations from citmods.c */
  570. extern void     citmods            PP( (char *name, int defn) );
  571.  
  572.  
  573. /* End. */
  574.  
  575.