* Curses package for Verdix Compiler
@ 1985-05-31 16:38 rosen
0 siblings, 0 replies; only message in thread
From: rosen @ 1985-05-31 16:38 UTC (permalink / raw)
Following is a specification and body for interfacing the Unix 'curses'
package with Verdix Ada. It needs more work to overcome the inherent macros
of the 'curses' package, but that is only a matter of time.
---------------------------CUT----HERE------------------------------
with SYSTEM;
with U_ENV; -- This package requires the elaboration of U_ENV
package CURSES is
UNDEFINED_WINDOW_ERROR: exception;
type WINDOW is new SYSTEM.ADDRESS;
STDSCR: WINDOW;
LINES: constant POSITIVE := 23;
COLUMNS: constant POSITIVE := 80;
function INITSCR return WINDOW;
procedure DELWIN (WIN: WINDOW);
procedure ENDWIN;
function NEWWIN (LINES, COLS, BEGIN_Y, BEGIN_X: INTEGER) return WINDOW;
function SUBWIN (WIN: WINDOW;
LINES, COLS, BEGIN_X, BEGIN_Y: INTEGER) return WINDOW;
procedure MVWIN (WIN: WINDOW; Y, X: INTEGER);
procedure ADDCH (CH: CHARACTER);
procedure WADDCH (WIN: WINDOW; CH: CHARACTER);
procedure ADDSTR (S: STRING);
procedure WADDSTR (WIN: WINDOW; S: STRING);
procedure BOX (WIN: WINDOW; VERTICAL: CHARACTER := '|';
HORIZONTAL: CHARACTER := '-');
procedure CLEAR;
procedure WCLEAR(WIN: WINDOW);
procedure CLEAROK (SCR: WINDOW; BOOLF: boolean);
procedure CLRTOBOT;
procedure WCLRTOBOT (WIN: WINDOW);
procedure CLRTOEOL;
procedure WCLRTOEOL (WIN: WINDOW);
procedure DELCH;
procedure WDELCH (WIN: WINDOW);
procedure DELETELN;
procedure WDELETELN (WIN: WINDOW);
procedure ERASE;
procedure WERASE (WIN: WINDOW);
procedure INSCH (CH: CHARACTER);
procedure WINSCH (WIN: WINDOW; CH: CHARACTER);
procedure INSERTLN;
procedure WINSERTLN (WIN: WINDOW);
procedure MOVE (Y, X: INTEGER);
procedure WMOVE (WIN: WINDOW; Y, X: INTEGER);
procedure OVERLAY (WIN1, WIN2: WINDOW);
procedure OVERWRITE (WIN1, WIN2: WINDOW);
procedure REFRESH;
procedure WREFRESH (WIN: WINDOW);
procedure STANDOUT;
procedure WSTANDOUT (WIN: WINDOW);
procedure STANDEND;
procedure WSTANDEND (WIN: WINDOW);
private
pragma INTERFACE (C, INITSCR);
pragma INTERFACE (C, DELWIN);
pragma INTERFACE (C, ENDWIN);
pragma INTERFACE (C, NEWWIN);
pragma INTERFACE (C, SUBWIN);
pragma INTERFACE (C, MVWIN);
pragma INTERFACE (C, WADDCH);
pragma INTERFACE (C, WADDSTR);
pragma INTERFACE (C, BOX);
pragma INTERFACE (C, WCLEAR);
pragma INTERFACE (C, CLEAROK);
pragma INTERFACE (C, WCLRTOBOT);
pragma INTERFACE (C, WCLRTOEOL);
pragma INTERFACE (C, WDELCH);
pragma INTERFACE (C, WDELETELN);
pragma INTERFACE (C, WERASE);
pragma INTERFACE (C, WINSCH);
pragma INTERFACE (C, WINSERTLN);
pragma INTERFACE (C, WMOVE);
pragma INTERFACE (C, OVERLAY);
pragma INTERFACE (C, OVERWRITE);
pragma INTERFACE (C, WREFRESH);
pragma INTERFACE (C, WSTANDOUT);
pragma INTERFACE (C, WSTANDEND);
end CURSES;
package body CURSES is
procedure ADDCH (CH: CHARACTER) is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WADDCH (STDSCR, CH);
end if;
end ADDCH;
procedure ADDSTR (S: STRING) is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WADDSTR (STDSCR, S);
end if;
end ADDSTR;
procedure CLEAR is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WCLEAR (STDSCR);
end if;
end CLEAR;
procedure CLRTOBOT is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WCLRTOBOT (STDSCR);
end if;
end CLRTOBOT;
procedure CLRTOEOL is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WCLRTOEOL (STDSCR);
end if;
end CLRTOEOL;
procedure DELCH is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WDELCH (STDSCR);
end if;
end DELCH;
procedure DELETELN is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WDELETELN (STDSCR);
end if;
end DELETELN;
procedure ERASE is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WERASE (STDSCR);
end if;
end ERASE;
procedure INSCH (CH: CHARACTER) is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WINSCH (STDSCR, CH);
end if;
end INSCH;
procedure INSERTLN is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WINSERTLN (STDSCR);
end if;
end INSERTLN;
procedure MOVE (Y, X: INTEGER) is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WMOVE (STDSCR, Y, X);
end if;
end MOVE;
procedure REFRESH is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WREFRESH (STDSCR);
end if;
end REFRESH;
procedure STANDOUT is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WSTANDOUT (STDSCR);
end if;
end STANDOUT;
procedure STANDEND is
begin
if (STDSCR = WINDOW(0)) then
raise UNDEFINED_WINDOW_ERROR;
else
WSTANDEND (STDSCR);
end if;
end STANDEND;
begin
STDSCR := WINDOW(0);
end CURSES;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~1985-05-31 16:38 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1985-05-31 16:38 Curses package for Verdix Compiler rosen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox