freadlin.pp 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. {$IFNDEF FPC_DOTTEDUNITS}
  2. unit freadlin;
  3. {$ENDIF FPC_DOTTEDUNITS}
  4. {**********************************************************************
  5. Copyright (c) 2007 by Daniel Mantione
  6. A fake read line library which allows us to use libgdb in the IDE
  7. without linking the bloated and unused GNU readline library.
  8. See the file COPYING.FPC, included in this distribution,
  9. for details about the copyright.
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  13. **********************************************************************}
  14. {$calling cdecl}
  15. interface
  16. implementation
  17. {$IFDEF FPC_DOTTEDUNITS}
  18. uses System.CTypes;
  19. {$ELSE FPC_DOTTEDUNITS}
  20. uses ctypes;
  21. {$ENDIF FPC_DOTTEDUNITS}
  22. var rl_end:cint;public name 'rl_end'; {The number of characters in the readline buffer.}
  23. rl_point:cint;public name 'rl_point'; {The cursor position in the readline buffer.}
  24. rl_prompt:PAnsiChar;public name 'rl_prompt'; {The prompt readline should use.}
  25. rl_instream:pointer;public name 'rl_instream'; {The FILE* for input.}
  26. rl_outstream:pointer;public name 'rl_outstream';{The FILE* for output.}
  27. rl_terminal_name:pointer;public name 'rl_terminal_name'; {The terminal (set by TERM) readline thinks it is using.}
  28. rl_prep_term_function:pointer;public name 'rl_prep_term_function'; {Procedure to initialize terminal.}
  29. rl_getc_function:pointer;public name 'rl_getc_function'; {The function to get a AnsiChar from input.}
  30. rl_line_buffer:PAnsiChar;public name 'rl_line_buffer'; {The buffer readline is currently reading into.}
  31. rl_completer_word_break_characters:PAnsiChar;public name 'rl_completer_word_break_characters';
  32. rl_completer_quote_characters:PAnsiChar;public name 'rl_completer_quote_characters';
  33. rl_already_prompted:cint;public name 'rl_already_prompted';
  34. readline_echoing_p:cint;public name 'readline_echoing_p';
  35. rl_startup_hook:pointer;public name 'rl_startup_hook';
  36. emacs_ctlx_keymap:pointer;public name 'emacs_ctlx_keymap';
  37. rl_readline_name:PAnsiChar;public name 'rl_readline_name';
  38. rl_deprep_term_function:pointer;public name 'rl_deprep_term_function';
  39. rl_redisplay_function:pointer;public name 'rl_redisplay_function';
  40. rl_pre_input_hook:pointer;public name 'rl_pre_input_hook';
  41. rl_completion_entry_function:pointer;public name 'rl_completion_entry_function';
  42. rl_filename_completion_desired:cint;public name 'rl_filename_completion_desired';
  43. rl_completion_display_matches_hook:pointer;public name 'rl_completion_display_matches_hook';
  44. rl_completion_query_items:cint;public name 'rl_completion_query_items';
  45. rl_ignore_completion_duplicates:cint;public name 'rl_ignore_completion_duplicates';
  46. rl_print_completions_horizontally:cint;public name '_rl_print_completions_horizontally';
  47. function rl_initialize:cint;public;alias:'rl_initialize';
  48. {Should initialize readline and return 0 if successfull.}
  49. begin
  50. runerror(254);
  51. end;
  52. function rl_reset_terminal(terminal:PAnsiChar):cint;public;alias:'rl_reset_terminal';
  53. begin
  54. {Called by gdb, do nothing.}
  55. end;
  56. function rl_tilde_expand(s:PAnsiChar):PAnsiChar;public;alias:'tilde_expand';
  57. begin
  58. {Called by gdb, don't expand, return original string.}
  59. rl_tilde_expand:=s;
  60. end;
  61. function rl_newline(count,key:cint):cint;public;alias:'rl_newline';
  62. begin
  63. runerror(254);
  64. end;
  65. procedure rl_get_screen_size(var rows,cols:cint);public;alias:'rl_get_screen_size';
  66. begin
  67. {Called by gdb. Fake a 80x25 screen.}
  68. {Gdb can call using nil pointers.}
  69. if @rows<>nil then
  70. rows:=25;
  71. if @cols<>nil then
  72. cols:=80;
  73. end;
  74. procedure rl_set_screen_size(rows,cols:cint);public;alias:'rl_set_screen_size';
  75. begin
  76. {Called by gdb, do nothing.}
  77. end;
  78. function rl_bind_key_in_map(key:cint;rl_command_func_t:pointer;map:pointer):cint;public;alias:'rl_bind_key_in_map';
  79. begin
  80. runerror(254);
  81. end;
  82. procedure rl_set_keymap(keymap:pointer);public;alias:'rl_set_keymap';
  83. begin
  84. runerror(254);
  85. end;
  86. function rl_get_keymap:pointer;public;alias:'rl_get_keymap';
  87. begin
  88. runerror(254);
  89. end;
  90. function rl_make_bare_keymap:pointer;public;alias:'rl_make_bare_keymap';
  91. begin
  92. runerror(254);
  93. end;
  94. function rl_add_defun(name:PAnsiChar;rl_command_func_t:pointer;key:cint):cint;public;alias:'rl_add_defun';
  95. begin
  96. {Called by gdb, do nothing.}
  97. end;
  98. function rl_insert(count,c:cint):cint;public;alias:'rl_insert';
  99. begin
  100. runerror(254);
  101. end;
  102. function rl_kill_text(start,stop:cint):cint;public;alias:'rl_kill_text';
  103. begin
  104. runerror(254);
  105. end;
  106. procedure rl_prep_terminal(meta_flag:cint);public;alias:'rl_prep_terminal';
  107. begin
  108. runerror(254);
  109. end;
  110. procedure rl_deprep_terminal;public;alias:'rl_deprep_terminal';
  111. begin
  112. runerror(254);
  113. end;
  114. procedure rl_callback_handler_install(prompt:PAnsiChar;lhandler:pointer);public;alias:'rl_callback_handler_install';
  115. begin
  116. runerror(254);
  117. end;
  118. procedure rl_callback_handler_remove;public;alias:'rl_callback_handler_remove';
  119. begin
  120. runerror(254);
  121. end;
  122. function rl_filename_completion_function(text:PAnsiChar;state:cint):PAnsiChar;public;alias:'rl_filename_completion_function';
  123. begin
  124. runerror(254);
  125. end;
  126. procedure rl_callback_read_char;public;alias:'rl_callback_read_char';
  127. begin
  128. runerror(254);
  129. end;
  130. procedure rl_redisplay;public;alias:'rl_redisplay';
  131. begin
  132. runerror(254);
  133. end;
  134. function rl_generic_bind(_type:cint;keyseq,data:PAnsiChar;map:pointer):cint;public;alias:'rl_generic_bind';
  135. begin
  136. runerror(254);
  137. end;
  138. function rl_get_previous_history(count,key:cint):cint;public;alias:'rl_get_previous_history';
  139. begin
  140. runerror(254);
  141. end;
  142. function rl_read_key:cint;public;alias:'rl_read_key';
  143. begin
  144. runerror(254);
  145. end;
  146. function rl_abort_internal:cint;public;alias:'_rl_abort_internal';
  147. begin
  148. runerror(254);
  149. end;
  150. function readline(prompt:PAnsiChar):PAnsiChar;public;alias:'readline';
  151. begin
  152. runerror(254);
  153. end;
  154. function rl_qsort_string_compare(s1,s2:PAnsiChar):cint;public;alias:'_rl_qsort_string_compare';
  155. begin
  156. runerror(254);
  157. end;
  158. begin
  159. rl_end:=0;
  160. rl_point:=0;
  161. rl_prompt:=nil;
  162. rl_instream:=nil;
  163. rl_outstream:=nil;
  164. rl_terminal_name:=nil;
  165. rl_already_prompted:=0;
  166. rl_completer_word_break_characters:=nil;
  167. rl_completer_quote_characters:=nil;
  168. rl_line_buffer:=nil;
  169. rl_getc_function:=nil;
  170. rl_prep_term_function:=nil;
  171. rl_startup_hook:=nil;
  172. readline_echoing_p:=0;
  173. emacs_ctlx_keymap:=nil;
  174. rl_readline_name:=nil;
  175. rl_deprep_term_function:=nil;
  176. rl_redisplay_function:=nil;
  177. rl_completion_entry_function:=nil;
  178. rl_filename_completion_desired:=0;
  179. rl_completion_display_matches_hook:=nil;
  180. rl_ignore_completion_duplicates:=0;
  181. rl_print_completions_horizontally:=0;
  182. end.