Browse Source

+ Fake readline library to allow building IDE without useless libreadline.

git-svn-id: trunk@6661 -
daniel 18 years ago
parent
commit
f4375d547a
2 changed files with 240 additions and 0 deletions
  1. 1 0
      .gitattributes
  2. 239 0
      packages/base/gdbint/freadlin.pp

+ 1 - 0
.gitattributes

@@ -774,6 +774,7 @@ packages/base/gdbint/Makefile svneol=native#text/plain
 packages/base/gdbint/Makefile.fpc svneol=native#text/plain
 packages/base/gdbint/fpmake.inc svneol=native#text/plain
 packages/base/gdbint/fpmake.pp svneol=native#text/plain
+packages/base/gdbint/freadlin.pp svneol=native#text/x-pascal
 packages/base/gdbint/gdbcon.pp svneol=native#text/plain
 packages/base/gdbint/gdbint.pp svneol=native#text/plain
 packages/base/gdbint/gdbobjs.inc svneol=native#text/plain

+ 239 - 0
packages/base/gdbint/freadlin.pp

@@ -0,0 +1,239 @@
+unit freadlin;
+{**********************************************************************
+    Copyright (c) 2007 by Daniel Mantione
+
+    A fake read line library which allows us to use libgdb in the IDE
+    without linking the bloated and unused GNU readline library.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{$calling cdecl}
+
+interface
+
+implementation
+
+uses ctypes;
+
+var rl_end:cint;public name 'rl_end';               {The number of characters in the readline buffer.}
+    rl_point:cint;public name 'rl_point';           {The cursor position in the readline buffer.}
+    rl_prompt:Pchar;public name 'rl_prompt';        {The prompt readline should use.}
+    rl_instream:pointer;public name 'rl_instream';  {The FILE* for input.}
+    rl_outstream:pointer;public name 'rl_outstream';{The FILE* for output.}
+    rl_terminal_name:pointer;public name 'rl_terminal_name'; {The terminal (set by TERM) readline thinks it is using.}
+    rl_prep_term_function:pointer;public name 'rl_prep_term_function'; {Procedure to initialize terminal.}
+    rl_getc_function:pointer;public name 'rl_getc_function'; {The function to get a char from input.}
+    rl_line_buffer:Pchar;public name 'rl_line_buffer'; {The buffer readline is currently reading into.}
+    rl_completer_word_break_characters:Pchar;public name 'rl_completer_word_break_characters';
+    rl_completer_quote_characters:Pchar;public name 'rl_completer_quote_characters';
+    rl_already_prompted:cint;public name 'rl_already_prompted';
+    readline_echoing_p:cint;public name 'readline_echoing_p';
+    rl_startup_hook:pointer;public name 'rl_startup_hook';
+    emacs_ctlx_keymap:pointer;public name 'emacs_ctlx_keymap';
+    rl_readline_name:Pchar;public name 'rl_readline_name';
+    rl_deprep_term_function:pointer;public name 'rl_deprep_term_function';
+    rl_redisplay_function:pointer;public name 'rl_redisplay_function';
+    rl_pre_input_hook:pointer;public name 'rl_pre_input_hook';
+    rl_completion_entry_function:pointer;public name 'rl_completion_entry_function';
+    rl_filename_completion_desired:cint;public name 'rl_filename_completion_desired';
+    rl_completion_display_matches_hook:pointer;public name 'rl_completion_display_matches_hook';
+    rl_completion_query_items:cint;public name 'rl_completion_query_items';
+    rl_ignore_completion_duplicates:cint;public name 'rl_ignore_completion_duplicates';
+    rl_print_completions_horizontally:cint;public name '_rl_print_completions_horizontally';
+
+function rl_initialize:cint;public;alias:'rl_initialize';
+
+{Should initialize readline and return 0 if successfull.}
+
+begin
+  runerror(254);
+end;
+
+function rl_reset_terminal(terminal:Pchar):cint;public;alias:'rl_reset_terminal';
+
+begin
+  {Called by gdb, do nothing.}
+end;
+
+function rl_tilde_expand(s:Pchar):Pchar;public;alias:'tilde_expand';
+
+begin
+  {Called by gdb, don't expand, return original string.}
+  rl_tilde_expand:=s;
+end;
+
+function rl_newline(count,key:cint):cint;public;alias:'rl_newline';
+
+begin
+  runerror(254);
+end;
+
+procedure rl_get_screen_size(var rows,cols:cint);public;alias:'rl_get_screen_size';
+
+begin
+  {Called by gdb. Fake a 80x25 screen.}
+  {Gdb can call using nil pointers.}
+  if @rows<>nil then
+    rows:=25;
+  if @cols<>nil then
+    cols:=80;
+end;
+
+procedure rl_set_screen_size(rows,cols:cint);public;alias:'rl_set_screen_size';
+
+begin
+  {Called by gdb, do nothing.}
+end;
+
+function rl_bind_key_in_map(key:cint;rl_command_func_t:pointer;map:pointer):cint;public;alias:'rl_bind_key_in_map';
+
+begin
+  runerror(254);
+end;
+
+procedure rl_set_keymap(keymap:pointer);public;alias:'rl_set_keymap';
+
+begin
+  runerror(254);
+end;
+
+function rl_get_keymap:pointer;public;alias:'rl_get_keymap';
+
+begin
+  runerror(254);
+end;
+
+function rl_make_bare_keymap:pointer;public;alias:'rl_make_bare_keymap';
+
+begin
+  runerror(254);
+end;
+
+function rl_add_defun(name:Pchar;rl_command_func_t:pointer;key:cint):cint;public;alias:'rl_add_defun';
+
+begin
+  {Called by gdb, do nothing.}
+end;
+
+function rl_insert(count,c:cint):cint;public;alias:'rl_insert';
+
+begin
+  runerror(254);
+end;
+
+function rl_kill_text(start,stop:cint):cint;public;alias:'rl_kill_text';
+
+begin
+  runerror(254);
+end;
+
+procedure rl_prep_terminal(meta_flag:cint);public;alias:'rl_prep_terminal';
+
+begin
+  runerror(254);
+end;
+
+procedure rl_deprep_terminal;public;alias:'rl_deprep_terminal';
+
+begin
+  runerror(254);
+end;
+
+procedure rl_callback_handler_install(prompt:Pchar;lhandler:pointer);public;alias:'rl_callback_handler_install';
+
+begin
+  runerror(254);
+end;
+
+procedure rl_callback_handler_remove;public;alias:'rl_callback_handler_remove';
+
+begin
+  runerror(254);
+end;
+
+function rl_filename_completion_function(text:Pchar;state:cint):Pchar;public;alias:'rl_filename_completion_function';
+
+begin
+  runerror(254);
+end;
+
+procedure rl_callback_read_char;public;alias:'rl_callback_read_char';
+
+begin
+  runerror(254);
+end;
+
+procedure rl_redisplay;public;alias:'rl_redisplay';
+
+begin
+  runerror(254);
+end;
+
+function rl_generic_bind(_type:cint;keyseq,data:Pchar;map:pointer):cint;public;alias:'rl_generic_bind';
+
+begin
+  runerror(254);
+end;
+
+function rl_get_previous_history(count,key:cint):cint;public;alias:'rl_get_previous_history';
+
+begin
+  runerror(254);
+end;
+
+function rl_read_key:cint;public;alias:'rl_read_key';
+
+begin
+  runerror(254);
+end;
+
+function rl_abort_internal:cint;public;alias:'_rl_abort_internal';
+
+begin
+  runerror(254);
+end;
+
+function readline(prompt:Pchar):Pchar;public;alias:'readline';
+
+begin
+  runerror(254);
+end;
+
+function rl_qsort_string_compare(s1,s2:Pchar):cint;public;alias:'_rl_qsort_string_compare';
+
+begin
+  runerror(254);
+end;
+
+begin
+  rl_end:=0;
+  rl_point:=0;
+  rl_prompt:=nil;
+  rl_instream:=nil;
+  rl_outstream:=nil;
+  rl_terminal_name:=nil;
+  rl_already_prompted:=0;
+  rl_completer_word_break_characters:=nil;
+  rl_completer_quote_characters:=nil;
+  rl_line_buffer:=nil;
+  rl_getc_function:=nil;
+  rl_prep_term_function:=nil;
+  rl_startup_hook:=nil;
+  readline_echoing_p:=0;
+  emacs_ctlx_keymap:=nil;
+  rl_readline_name:=nil;
+  rl_deprep_term_function:=nil;
+  rl_redisplay_function:=nil;
+  rl_completion_entry_function:=nil;
+  rl_filename_completion_desired:=0;
+  rl_completion_display_matches_hook:=nil;
+  rl_ignore_completion_duplicates:=0;
+  rl_print_completions_horizontally:=0;
+end.