compproc.inc 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377
  1. {
  2. $Id$
  3. This file is part of the Free Pascal Run time library.
  4. Copyright (c) 1999-2000 by the Free Pascal development team
  5. This file contains the declarations of internal compiler helper
  6. routines. That means you can *NOT* call these directly, as they may
  7. be changed or even removed at any time. The only reason they are
  8. included in the interface of the system unit, is so that the
  9. compiler doesn't need special code to access their parameter
  10. list information etc.
  11. Note that due to the "compilerproc" directive, it isn't even possible
  12. to use these routines in your programs.
  13. See the File COPYING.FPC, included in this distribution,
  14. for details about the copyright.
  15. This program is distributed in the hope that it will be useful,
  16. but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  18. **********************************************************************}
  19. { some dummy types necessary to have generic resulttypes for certain compilerprocs }
  20. type
  21. fpc_big_chararray = array[0..maxlongint] of char;
  22. fpc_small_set = longint;
  23. fpc_normal_set = array[0..7] of longint;
  24. {$ifdef hascompilerproc}
  25. { Needed to solve overloading problem with call from assembler (PFV) }
  26. {$ifdef valuegetmem}
  27. Function fpc_getmem(size:Longint):pointer;compilerproc;
  28. {$endif}
  29. {$ifdef valuefreemem}
  30. Procedure fpc_freemem(p:pointer);compilerproc;
  31. {$endif valuefreemem}
  32. procedure fpc_Shortstr_SetLength(var s:shortstring;len:StrLenInt); compilerproc;
  33. function fpc_shortstr_to_shortstr(len:longint; const sstr: shortstring): shortstring; compilerproc;
  34. function fpc_shortstr_concat(const s1,s2:shortstring): shortstring; compilerproc;
  35. function fpc_shortstr_compare(const dstr,sstr:shortstring) : longint; compilerproc;
  36. function fpc_pchar_to_shortstr(p:pchar):shortstring; compilerproc;
  37. function fpc_chararray_to_shortstr(const arr: array of char):shortstring; compilerproc;
  38. function fpc_shortstr_to_chararray(arraysize: longint; const src: ShortString): fpc_big_chararray; compilerproc;
  39. function fpc_dynarray_length(p : pointer) : tdynarrayindex; compilerproc;
  40. function fpc_dynarray_high(p : pointer) : tdynarrayindex; compilerproc;
  41. procedure fpc_dynarray_clear(var p : pointer;ti : pointer); compilerproc;
  42. procedure fpc_dynarray_decr_ref(var p : pointer;ti : pointer); compilerproc;
  43. procedure fpc_dynarray_incr_ref(p : pointer); compilerproc;
  44. procedure fpc_dynarray_setlength(var p : pointer;pti : pointer;
  45. dimcount : dword;dims : pdynarrayindex); compilerproc;
  46. function fpc_dynarray_copy(var p : pointer;ti : pointer;
  47. dimcount : dword;dims : pdynarrayindex) : pointer; compilerproc;
  48. procedure fpc_ShortStr_Float(d : ValReal;len,fr,rt : longint;var s : shortstring); compilerproc;
  49. procedure fpc_ShortStr_Longint(v : longint;len : longint;var s : shortstring); compilerproc;
  50. procedure fpc_shortstr_cardinal(v : cardinal;len : longint;var s : shortstring); compilerproc;
  51. Function fpc_Val_SInt_ShortStr(DestSize: longint; Const S: ShortString; var Code: ValSInt): ValSInt; compilerproc;
  52. Function fpc_Val_UInt_Shortstr(Const S: ShortString; var Code: ValSInt): ValUInt; compilerproc;
  53. Function fpc_Val_Real_ShortStr(const s : shortstring; var code : ValSInt): ValReal; compilerproc;
  54. Procedure fpc_AnsiStr_Decr_Ref (Var S : Pointer); compilerproc;
  55. Procedure fpc_AnsiStr_Incr_Ref (S : Pointer); compilerproc;
  56. Procedure fpc_AnsiStr_Assign (Var S1 : Pointer;S2 : Pointer); compilerproc;
  57. function fpc_AnsiStr_Concat (const S1,S2 : AnsiString): AnsiString; compilerproc;
  58. {$ifdef EXTRAANSISHORT}
  59. Procedure fpc_AnsiStr_ShortStr_Concat (Var S1: AnsiString; Var S2 : ShortString); compilerproc;
  60. {$endif EXTRAANSISHORT}
  61. function fpc_AnsiStr_To_ShortStr (high_of_res: longint;const S2 : Ansistring): shortstring; compilerproc;
  62. Function fpc_ShortStr_To_AnsiStr (Const S2 : ShortString): ansistring; compilerproc;
  63. Function fpc_Char_To_AnsiStr(const c : Char): AnsiString; compilerproc;
  64. Function fpc_PChar_To_AnsiStr(const p : pchar): ansistring; compilerproc;
  65. Function fpc_CharArray_To_AnsiStr(const arr: array of char): ansistring; compilerproc;
  66. function fpc_ansistr_to_chararray(arraysize: longint; const src: ansistring): fpc_big_chararray; compilerproc;
  67. Function fpc_AnsiStr_Compare(const S1,S2 : AnsiString): Longint; compilerproc;
  68. Procedure fpc_AnsiStr_CheckZero(p : pointer); compilerproc;
  69. Procedure fpc_AnsiStr_CheckRange(len,index : longint); compilerproc;
  70. Procedure fpc_AnsiStr_SetLength (Var S : AnsiString; l : Longint); compilerproc;
  71. {$ifdef EXTRAANSISHORT}
  72. Function fpc_AnsiStr_ShortStr_Compare (Var S1 : Pointer; Var S2 : ShortString): Longint; compilerproc;
  73. {$endif EXTRAANSISHORT}
  74. Procedure fpc_ansistr_Unique(Var S : AnsiString); compilerproc;
  75. Procedure fpc_WideStr_Decr_Ref (Var S : Pointer); compilerproc;
  76. Procedure fpc_WideStr_Incr_Ref (S : Pointer); compilerproc;
  77. function fpc_WideStr_To_ShortStr (high_of_res: longint;const S2 : WideString): shortstring; compilerproc;
  78. Function fpc_ShortStr_To_WideStr (Const S2 : ShortString): WideString; compilerproc;
  79. Function fpc_WideStr_To_AnsiStr (const S2 : WideString): AnsiString; compilerproc;
  80. Function fpc_AnsiStr_To_WideStr (Const S2 : AnsiString): WideString; compilerproc;
  81. Procedure fpc_WideStr_Assign (Var S1 : Pointer;S2 : Pointer); compilerproc;
  82. Function fpc_WideStr_Concat (const S1,S2 : WideString) : WideString; compilerproc;
  83. Function fpc_Char_To_WideStr(const c : Char): WideString; compilerproc;
  84. Function fpc_PChar_To_WideStr(const p : pchar): WideString; compilerproc;
  85. Function fpc_CharArray_To_WideStr(const arr: array of char): WideString; compilerproc;
  86. function fpc_widestr_to_chararray(arraysize: longint; const src: WideString): fpc_big_chararray; compilerproc;
  87. Function fpc_WideStr_Compare(const S1,S2 : WideString): Longint; compilerproc;
  88. Procedure fpc_WideStr_CheckZero(p : pointer); compilerproc;
  89. Procedure fpc_WideStr_CheckRange(len,index : longint); compilerproc;
  90. Procedure fpc_WideStr_SetLength (Var S : WideString; l : Longint); compilerproc;
  91. Procedure fpc_widestr_Unique(Var S : WideString); compilerproc;
  92. Function fpc_Val_Real_AnsiStr(Const S : AnsiString; Var Code : ValSInt): ValReal; compilerproc;
  93. Function fpc_Val_UInt_AnsiStr (Const S : AnsiString; Var Code : ValSInt): ValUInt; compilerproc;
  94. Function fpc_Val_SInt_AnsiStr (DestSize: longint; Const S : AnsiString; Var Code : ValSInt): ValSInt; compilerproc;
  95. Function fpc_Val_qword_AnsiStr (Const S : AnsiString; Var Code : ValSInt): qword;compilerproc;
  96. Function fpc_Val_int64_AnsiStr (Const S : AnsiString; Var Code : ValSInt): Int64; compilerproc;
  97. procedure fpc_AnsiStr_Float(d : ValReal;len,fr,rt : longint;var s : ansistring); compilerproc;
  98. Procedure fpc_AnsiStr_Cardinal(C : Cardinal;Len : Longint; Var S : AnsiString); compilerproc;
  99. Procedure fpc_AnsiStr_Longint(L : Longint; Len : Longint; Var S : AnsiString); compilerproc;
  100. Function fpc_Val_Real_WideStr(Const S : WideString; Var Code : ValSInt): ValReal; compilerproc;
  101. Function fpc_Val_UInt_WideStr (Const S : WideString; Var Code : ValSInt): ValUInt; compilerproc;
  102. Function fpc_Val_SInt_WideStr (DestSize: longint; Const S : WideString; Var Code : ValSInt): ValSInt; compilerproc;
  103. Function fpc_Val_qword_WideStr (Const S : WideString; Var Code : ValSInt): qword; compilerproc;
  104. Function fpc_Val_int64_WideStr (Const S : WideString; Var Code : ValSInt): Int64; compilerproc;
  105. procedure fpc_WideStr_Float(d : ValReal;len,fr,rt : longint;var s : WideString); compilerproc;
  106. Procedure fpc_WideStr_Cardinal(C : Cardinal;Len : Longint; Var S : WideString); compilerproc;
  107. Procedure fpc_WideStr_Longint(L : Longint; Len : Longint; Var S : WideString); compilerproc;
  108. { from text.inc }
  109. Procedure fpc_Write_End(var f:Text); compilerproc;
  110. Procedure fpc_Writeln_End(var f:Text); compilerproc;
  111. Procedure fpc_Write_Text_ShortStr(Len : Longint;var f : Text;const s : String); compilerproc;
  112. Procedure fpc_Write_Text_Pchar_as_Array(Len : Longint;var f : Text;const s : array of char); compilerproc;
  113. Procedure fpc_Write_Text_PChar_As_Pointer(Len : Longint;var f : Text;p : PChar); compilerproc;
  114. Procedure fpc_Write_Text_AnsiStr (Len : Longint; Var f : Text; S : AnsiString); compilerproc;
  115. {$ifdef HASWIDESTRING}
  116. Procedure fpc_Write_Text_WideStr (Len : Longint; Var f : Text; S : WideString); compilerproc;
  117. {$endif HASWIDESTRING}
  118. Procedure fpc_Write_Text_SInt(Len : Longint;var t : Text;l : ValSInt); compilerproc;
  119. Procedure fpc_Write_Text_UInt(Len : Longint;var t : Text;l : ValUInt); compilerproc;
  120. procedure fpc_write_text_qword(len : longint;var t : text;q : qword); compilerproc;
  121. procedure fpc_write_text_int64(len : longint;var t : text;i : int64); compilerproc;
  122. Procedure fpc_Write_Text_Float(rt,fixkomma,Len : Longint;var t : Text;r : ValReal); compilerproc;
  123. Procedure fpc_Write_Text_Boolean(Len : Longint;var t : Text;b : Boolean); compilerproc;
  124. Procedure fpc_Write_Text_Char(Len : Longint;var t : Text;c : Char); compilerproc;
  125. {$ifdef HASWIDECHAR}
  126. Procedure fpc_Write_Text_WideChar(Len : Longint;var t : Text;c : WideChar); compilerproc;
  127. {$endif HASWIDECHAR}
  128. Procedure fpc_Read_End(var f:Text); compilerproc;
  129. Procedure fpc_ReadLn_End(var f : Text); compilerproc;
  130. Procedure fpc_Read_Text_ShortStr(var f : Text;var s : String); compilerproc;
  131. Procedure fpc_Read_Text_PChar_As_Pointer(var f : Text;var s : PChar); compilerproc;
  132. Procedure fpc_Read_Text_PChar_As_Array(var f : Text;var s : array of char); compilerproc;
  133. Procedure fpc_Read_Text_AnsiStr(var f : Text;var s : AnsiString); compilerproc;
  134. Procedure fpc_Read_Text_Char(var f : Text; var c : char); compilerproc;
  135. Procedure fpc_Read_Text_SInt(var f : Text; var l :ValSInt); compilerproc;
  136. Procedure fpc_Read_Text_UInt(var f : Text; var u :ValUInt); compilerproc;
  137. Procedure fpc_Read_Text_Float(var f : Text; var v :ValReal); compilerproc;
  138. Procedure fpc_Read_Text_QWord(var f : text; var q : qword); compilerproc;
  139. Procedure fpc_Read_Text_Int64(var f : text; var i : int64); compilerproc;
  140. { from int64.inc }
  141. procedure fpc_shortstr_qword(v : qword;len : longint;var s : shortstring); compilerproc;
  142. procedure fpc_shortstr_int64(v : int64;len : longint;var s : shortstring); compilerproc;
  143. procedure fpc_ansistr_qword(v : qword;len : longint;var s : ansistring); compilerproc;
  144. procedure fpc_ansistr_int64(v : int64;len : longint;var s : ansistring); compilerproc;
  145. Function fpc_val_int64_shortstr(Const S: ShortString; var Code: ValSInt): Int64; compilerproc;
  146. Function fpc_val_qword_shortstr(Const S: ShortString; var Code: ValSInt): QWord; compilerproc;
  147. procedure fpc_widestr_qword(v : qword;len : longint;var s : widestring); compilerproc;
  148. procedure fpc_widestr_int64(v : int64;len : longint;var s : widestring); compilerproc;
  149. function fpc_div_qword(n,z : qword) : qword; compilerproc;
  150. function fpc_mod_qword(n,z : qword) : qword; compilerproc;
  151. function fpc_div_int64(n,z : int64) : int64; compilerproc;
  152. function fpc_mod_int64(n,z : int64) : int64; compilerproc;
  153. function fpc_mul_qword(f1,f2 : qword;checkoverflow : longbool) : qword; compilerproc;
  154. function fpc_mul_int64(f1,f2 : int64;checkoverflow : longbool) : int64; compilerproc;
  155. function fpc_do_is(aclass : tclass;aobject : tobject) : boolean; compilerproc;
  156. function fpc_do_as(aclass : tclass;aobject : tobject): tobject; compilerproc;
  157. procedure fpc_intf_decr_ref(var i: pointer); compilerproc;
  158. procedure fpc_intf_incr_ref(i: pointer); compilerproc;
  159. procedure fpc_intf_assign(var D: pointer; const S: pointer); compilerproc;
  160. procedure fpc_intf_as(var D: pointer; const S: pointer; const iid: TGUID); compilerproc;
  161. Function fpc_PushExceptAddr (Ft: Longint;_buf,_newaddr : pointer): PJmp_buf ; compilerproc;
  162. Procedure fpc_PushExceptObj (Obj : TObject; AnAddr,AFrame : Pointer); compilerproc;
  163. Function fpc_Raiseexception (Obj : TObject; AnAddr,AFrame : Pointer) : TObject; compilerproc;
  164. Procedure fpc_PopAddrStack; compilerproc;
  165. function fpc_PopObjectStack : TObject; compilerproc;
  166. function fpc_PopSecondObjectStack : TObject; compilerproc;
  167. Procedure fpc_ReRaise; compilerproc;
  168. Function fpc_Catches(Objtype : TClass) : TObject; compilerproc;
  169. Procedure fpc_DestroyException(o : TObject); compilerproc;
  170. procedure fpc_help_constructor; compilerproc;
  171. procedure fpc_help_fail; compilerproc;
  172. procedure fpc_help_destructor; compilerproc;
  173. procedure fpc_new_class; compilerproc;
  174. procedure fpc_dispose_class; compilerproc;
  175. procedure fpc_help_fail_class; compilerproc;
  176. procedure fpc_check_object(obj : pointer); compilerproc;
  177. procedure fpc_check_object_ext; compilerproc;
  178. Procedure fpc_Initialize (Data,TypeInfo : pointer); compilerproc;
  179. Procedure fpc_finalize (Data,TypeInfo: Pointer); compilerproc;
  180. Procedure fpc_Addref (Data,TypeInfo : Pointer); compilerproc;
  181. Procedure fpc_DecRef (Data,TypeInfo : Pointer); compilerproc;
  182. procedure fpc_finalize_array(data,typeinfo : pointer;count,size : longint); compilerproc;
  183. function fpc_set_load_small(l: fpc_small_set): fpc_normal_set; compilerproc;
  184. function fpc_set_create_element(b : byte): fpc_normal_set; compilerproc;
  185. function fpc_set_set_byte(const source: fpc_normal_set; b : byte): fpc_normal_set; compilerproc;
  186. function fpc_set_unset_byte(const source: fpc_normal_set; b : byte): fpc_normal_set; compilerproc;
  187. function fpc_set_set_range(const orgset: fpc_normal_set; l,h : byte): fpc_normal_set; compilerproc;
  188. function fpc_set_in_byte(const p: fpc_normal_set; b: byte): boolean; compilerproc;
  189. function fpc_set_add_sets(const set1,set2: fpc_normal_set): fpc_normal_set; compilerproc;
  190. function fpc_set_mul_sets(const set1,set2: fpc_normal_set): fpc_normal_set; compilerproc;
  191. function fpc_set_sub_sets(const set1,set2: fpc_normal_set): fpc_normal_set; compilerproc;
  192. function fpc_set_symdif_sets(const set1,set2: fpc_normal_set): fpc_normal_set; compilerproc;
  193. function fpc_set_comp_sets(const set1,set2: fpc_normal_set): boolean; compilerproc;
  194. function fpc_set_contains_sets(const set1,set2: fpc_normal_set): boolean; compilerproc;
  195. {$ifdef LARGESETS}
  196. procedure fpc_largeset_set_word(p : pointer;b : word); compilerproc;
  197. procedure fpc_largeset_in_word(p : pointer;b : word); compilerproc;
  198. procedure fpc_largeset_add_sets(set1,set2,dest : pointer;size : longint); compilerproc;
  199. procedure fpc_largeset_sets(set1,set2,dest : pointer;size : longint); compilerproc;
  200. procedure fpc_largeset_sub_sets(set1,set2,dest : pointer;size : longint); compilerproc;
  201. procedure fpc_largeset_symdif_sets(set1,set2,dest : pointer;size : longint); compilerproc;
  202. procedure fpc_largeset_comp_sets(set1,set2 : pointer;size : longint); compilerproc;
  203. procedure fpc_largeset_contains_sets(set1,set2 : pointer; size: longint); compilerproc;
  204. {$endif LARGESETS}
  205. procedure fpc_rangeerror; compilerproc;
  206. procedure fpc_overflow; compilerproc;
  207. procedure fpc_iocheck(addr : longint); compilerproc;
  208. procedure fpc_InitializeUnits; compilerproc;
  209. // not generated by compiler, called directly in system unit
  210. // procedure fpc_FinalizeUnits; compilerproc;
  211. {
  212. Procedure fpc_do_exit; compilerproc;
  213. Procedure fpc_lib_exit; compilerproc;
  214. Procedure fpc_HandleErrorAddrFrame (Errno : longint;addr,frame : longint); compilerproc;
  215. Procedure fpc_HandleError (Errno : longint); compilerproc;
  216. }
  217. procedure fpc_AbstractErrorIntern;compilerproc;
  218. procedure fpc_assert(Const Msg,FName:Shortstring;LineNo,ErrorAddr:Longint); compilerproc;
  219. Procedure fpc_reset_typed(var f : TypedFile;Size : Longint); compilerproc;
  220. Procedure fpc_rewrite_typed(var f : TypedFile;Size : Longint); compilerproc;
  221. Procedure fpc_typed_write(TypeSize : Longint;var f : TypedFile;const Buf); compilerproc;
  222. Procedure fpc_typed_read(TypeSize : Longint;var f : TypedFile;var Buf); compilerproc;
  223. {$ifdef POWERPC}
  224. function fpc_int64_to_double(i: int64): double; compilerproc;
  225. function fpc_qword_to_double(q: qword): double; compilerproc;
  226. {$endif POWERPC}
  227. {$endif hascompilerproc}
  228. {
  229. $Log$
  230. Revision 1.18 2002-07-31 16:58:12 jonas
  231. * fixed conversion from int64/qword to double errors
  232. Revision 1.17 2002/07/28 20:43:47 florian
  233. * several fixes for linux/powerpc
  234. * several fixes to MT
  235. Revision 1.16 2002/04/25 20:14:56 peter
  236. * updated compilerprocs
  237. * incr ref count has now a value argument instead of var
  238. Revision 1.15 2002/04/24 16:15:35 peter
  239. * fpc_finalize_array renamed
  240. Revision 1.14 2002/04/21 18:56:59 peter
  241. * fpc_freemem and fpc_getmem compilerproc
  242. Revision 1.13 2002/01/21 20:16:08 peter
  243. * updated for dynarr:=nil
  244. Revision 1.12 2001/12/03 21:39:20 peter
  245. * freemem(var) -> freemem(value)
  246. Revision 1.11 2001/09/29 21:32:47 jonas
  247. * almost all second pass typeconvnode helpers are now processor independent
  248. * fixed converting boolean to int64/qword
  249. * fixed register allocation bugs which could cause internalerror 10
  250. * isnode and asnode are completely processor indepent now as well
  251. * fpc_do_as now returns its class argument (necessary to be able to use it
  252. properly with compilerproc)
  253. Revision 1.10 2001/09/05 15:22:09 jonas
  254. * made multiplying, dividing and mod'ing of int64 and qword processor
  255. independent with compilerprocs (+ small optimizations by using shift/and
  256. where possible)
  257. Revision 1.9 2001/09/04 11:38:55 jonas
  258. + searchsystype() and searchsystype() functions in symtable
  259. * changed ninl and nadd to use these functions
  260. * i386 set comparison functions now return their results in al instead
  261. of in the flags so that they can be sued as compilerprocs
  262. - removed all processor specific code from n386add.pas that has to do
  263. with set handling, it's now all done in nadd.pas
  264. * fixed fpc_set_contains_sets in genset.inc
  265. * fpc_set_in_byte is now coded inline in n386set.pas and doesn't use a
  266. helper anymore
  267. * some small fixes in compproc.inc/set.inc regarding the declaration of
  268. internal helper types (fpc_small_set and fpc_normal_set)
  269. Revision 1.8 2001/09/03 13:27:43 jonas
  270. * compilerproc implementation of set addition/substraction/...
  271. * changed the declaration of some set helpers somewhat to accomodate the
  272. above change
  273. * i386 still uses the old code for comparisons of sets, because its
  274. helpers return the results in the flags
  275. * dummy tc_normal_2_small_set type conversion because I need the original
  276. resulttype of the set add nodes
  277. NOTE: you have to start a cycle with 1.0.5!
  278. Revision 1.7 2001/08/30 15:43:15 jonas
  279. * converted adding/comparing of strings to compileproc. Note that due
  280. to the way the shortstring helpers for i386 are written, they are
  281. still handled by the old code (reason: fpc_shortstr_compare returns
  282. results in the flags instead of in eax and fpc_shortstr_concat
  283. has wierd parameter conventions). The compilerproc stuff should work
  284. fine with the generic implementations though.
  285. * removed some nested comments warnings
  286. Revision 1.6 2001/08/29 19:49:04 jonas
  287. * some fixes in compilerprocs for chararray to string conversions
  288. * conversion from string to chararray is now also done via compilerprocs
  289. Revision 1.5 2001/08/28 13:24:47 jonas
  290. + compilerproc implementation of most string-related type conversions
  291. - removed all code from the compiler which has been replaced by
  292. compilerproc implementations (using (ifdef hascompilerproc) is not
  293. necessary in the compiler)
  294. Revision 1.4 2001/08/23 14:28:36 jonas
  295. + tempcreate/ref/delete nodes (allows the use of temps in the
  296. resulttype and first pass)
  297. * made handling of read(ln)/write(ln) processor independent
  298. * moved processor independent handling for str and reset/rewrite-typed
  299. from firstpass to resulttype pass
  300. * changed names of helpers in text.inc to be generic for use as
  301. compilerprocs + added "iocheck" directive for most of them
  302. * reading of ordinals is done by procedures instead of functions
  303. because otherwise FPC_IOCHECK overwrote the result before it could
  304. be stored elsewhere (range checking still works)
  305. * compilerprocs can now be used in the system unit before they are
  306. implemented
  307. * added note to errore.msg that booleans can't be read using read/readln
  308. Revision 1.3 2001/08/13 12:40:16 jonas
  309. * renamed some str(x,y) and val(x,y) helpers so the naming scheme is the
  310. same for all string types
  311. + added the str(x,y) and val(x,y,z) helpers for int64/qword to
  312. compproc.inc
  313. Revision 1.2 2001/08/06 14:13:55 jonas
  314. * changed buf parameter of fpc_type_write from var to const
  315. + added names of helpers in typefile.inc to compproc.inc
  316. Revision 1.1 2001/08/01 15:00:10 jonas
  317. + "compproc" helpers
  318. * renamed several helpers so that their name is the same as their
  319. "public alias", which should facilitate the conversion of processor
  320. specific code in the code generator to processor independent code
  321. * some small fixes to the val_ansistring and val_widestring helpers
  322. (always immediately exit if the source string is longer than 255
  323. chars)
  324. * fixed fpc_dynarray_high and fpc_dynarray_length if the dynarray is
  325. still nil (used to crash, now return resp -1 and 0)
  326. }