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

git-svn-id: trunk@6661 -
This commit is contained in:
daniel 2007-02-25 22:39:15 +00:00
parent bc3a21e1a1
commit f4375d547a
2 changed files with 240 additions and 0 deletions

1
.gitattributes vendored
View File

@ -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

View File

@ -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.