ffi-ncurses 0.3.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/COPYING +22 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +13 -0
- data/History.txt +32 -3
- data/README.rdoc +118 -58
- data/Rakefile +30 -0
- data/examples/acs_chars.rb +53 -0
- data/examples/acs_chars.rbc +1502 -0
- data/examples/{example-attributes.rb → attributes.rb} +0 -0
- data/examples/color.rb +63 -0
- data/examples/cursor.rb +27 -0
- data/examples/example.rb +17 -17
- data/examples/getkey.rb +212 -0
- data/examples/{example-getsetsyx.rb → getsetsyx.rb} +2 -2
- data/examples/globals.rb +38 -0
- data/examples/hello.rb +34 -0
- data/examples/hello.rbc +638 -0
- data/examples/hellowide.rb +59 -0
- data/examples/keys.rb +27 -0
- data/examples/{example-mouse.rb → mouse.rb} +2 -2
- data/examples/multiterm.rb +120 -0
- data/examples/ncurses/LICENSES_for_examples +26 -0
- data/examples/{ncurses-example.rb → ncurses/example.rb} +13 -80
- data/examples/ncurses/hello_ncurses.rb +57 -0
- data/examples/ncurses/rain.rb +220 -0
- data/examples/ncurses/read_line.rb +67 -0
- data/examples/ncurses/subwin.rb +71 -0
- data/examples/ncurses/tclock.rb +227 -0
- data/examples/newterm.rb +65 -0
- data/examples/panel_simple.rb +82 -0
- data/examples/{example-printw-variadic.rb → printw-variadic.rb} +1 -1
- data/examples/ripoffline.rb +86 -0
- data/examples/run-all.sh +14 -0
- data/examples/{example-softkeys.rb → softkeys.rb} +0 -0
- data/examples/{example-stdscr.rb → stdscr.rb} +2 -1
- data/examples/temp_leave.rb +99 -0
- data/examples/viewer.rb +350 -0
- data/examples/wacs_chars.rb +64 -0
- data/examples/windows.rb +73 -0
- data/ffi-ncurses.gemspec +39 -52
- data/lib/ffi-ncurses.rb +214 -474
- data/lib/ffi-ncurses/acs.rb +150 -0
- data/lib/ffi-ncurses/bool_wrappers.rb +66 -0
- data/lib/ffi-ncurses/functions.rb +450 -0
- data/lib/ffi-ncurses/keydefs.rb +136 -99
- data/lib/ffi-ncurses/mouse.rb +106 -106
- data/lib/ffi-ncurses/ncurses.rb +176 -0
- data/lib/ffi-ncurses/{ord-shim.rb → ord_shim.rb} +0 -0
- data/lib/ffi-ncurses/panel.rb +21 -0
- data/lib/ffi-ncurses/typedefs.rb +35 -0
- data/lib/ffi-ncurses/version.rb +7 -0
- data/lib/ffi-ncurses/widechars.rb +137 -0
- data/lib/ffi-ncurses/winstruct.rb +55 -33
- data/spec/attached_functions_spec.rb +42 -0
- metadata +95 -85
- data/examples/example-colour.rb +0 -63
- data/examples/example-cursor.rb +0 -22
- data/examples/example-hello.rb +0 -24
- data/examples/example-jruby.rb +0 -14
- data/examples/example-keys.rb +0 -25
- data/examples/example-windows.rb +0 -24
@@ -0,0 +1,64 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8; -*-
|
3
|
+
require 'ffi-ncurses'
|
4
|
+
|
5
|
+
include FFI::NCurses
|
6
|
+
|
7
|
+
def main
|
8
|
+
begin
|
9
|
+
initscr
|
10
|
+
|
11
|
+
# FIXME: This isn't working in 1.8.x
|
12
|
+
def addwch(ch)
|
13
|
+
cchar = WinStruct::CCharT.new
|
14
|
+
cchar[:chars][0] = ch
|
15
|
+
# cchar[:attr] = WA_REVERSE
|
16
|
+
# chars = [ch].pack('S')
|
17
|
+
# padding = 5 - chars.size
|
18
|
+
# cchar = [WA_REVERSE].pack('L') + chars + ([0] * padding).pack('S')
|
19
|
+
wadd_wch(stdscr, cchar)
|
20
|
+
end
|
21
|
+
|
22
|
+
addstr("Upper left corner "); addwch(WACS_ULCORNER); addstr("\n");
|
23
|
+
addstr("Lower left corner "); addwch(WACS_LLCORNER); addstr("\n");
|
24
|
+
addstr("Lower right corner "); addwch(WACS_LRCORNER); addstr("\n");
|
25
|
+
addstr("Tee pointing right "); addwch(WACS_LTEE); addstr("\n");
|
26
|
+
addstr("Tee pointing left "); addwch(WACS_RTEE); addstr("\n");
|
27
|
+
addstr("Tee pointing up "); addwch(WACS_BTEE); addstr("\n");
|
28
|
+
addstr("Tee pointing down "); addwch(WACS_TTEE); addstr("\n");
|
29
|
+
addstr("Horizontal line "); addwch(WACS_HLINE); addstr("\n");
|
30
|
+
addstr("Vertical line "); addwch(WACS_VLINE); addstr("\n");
|
31
|
+
addstr("Large Plus or cross over "); addwch(WACS_PLUS); addstr("\n");
|
32
|
+
addstr("Scan Line 1 "); addwch(WACS_S1); addstr("\n");
|
33
|
+
addstr("Scan Line 3 "); addwch(WACS_S3); addstr("\n");
|
34
|
+
addstr("Scan Line 7 "); addwch(WACS_S7); addstr("\n");
|
35
|
+
addstr("Scan Line 9 "); addwch(WACS_S9); addstr("\n");
|
36
|
+
addstr("Diamond "); addwch(WACS_DIAMOND); addstr("\n");
|
37
|
+
addstr("Checker board (stipple) "); addwch(WACS_CKBOARD); addstr("\n");
|
38
|
+
addstr("Degree Symbol "); addwch(WACS_DEGREE); addstr("\n");
|
39
|
+
addstr("Plus/Minus Symbol "); addwch(WACS_PLMINUS); addstr("\n");
|
40
|
+
addstr("Bullet "); addwch(WACS_BULLET); addstr("\n");
|
41
|
+
addstr("Arrow Pointing Left "); addwch(WACS_LARROW); addstr("\n");
|
42
|
+
addstr("Arrow Pointing Right "); addwch(WACS_RARROW); addstr("\n");
|
43
|
+
addstr("Arrow Pointing Down "); addwch(WACS_DARROW); addstr("\n");
|
44
|
+
addstr("Arrow Pointing Up "); addwch(WACS_UARROW); addstr("\n");
|
45
|
+
addstr("Board of squares "); addwch(WACS_BOARD); addstr("\n");
|
46
|
+
addstr("Lantern Symbol "); addwch(WACS_LANTERN); addstr("\n");
|
47
|
+
addstr("Solid Square Block "); addwch(WACS_BLOCK); addstr("\n");
|
48
|
+
addstr("Less/Equal sign "); addwch(WACS_LEQUAL); addstr("\n");
|
49
|
+
addstr("Greater/Equal sign "); addwch(WACS_GEQUAL); addstr("\n");
|
50
|
+
addstr("Pi "); addwch(WACS_PI); addstr("\n");
|
51
|
+
addstr("Not equal "); addwch(WACS_NEQUAL); addstr("\n");
|
52
|
+
addstr("UK pound sign "); addwch(WACS_STERLING); addstr("\n");
|
53
|
+
|
54
|
+
refresh
|
55
|
+
getch
|
56
|
+
rescue => e
|
57
|
+
endwin
|
58
|
+
raise
|
59
|
+
ensure
|
60
|
+
endwin
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
main
|
data/examples/windows.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Sean O'Halpin, 2009-02-15
|
4
|
+
#
|
5
|
+
require 'ffi-ncurses'
|
6
|
+
require 'ffi-ncurses/widechars'
|
7
|
+
include FFI::NCurses
|
8
|
+
|
9
|
+
def log(*a)
|
10
|
+
addstr a.inspect + "\n"
|
11
|
+
touchwin(stdscr)
|
12
|
+
# STDERR.puts a.inspect
|
13
|
+
end
|
14
|
+
|
15
|
+
begin
|
16
|
+
initscr
|
17
|
+
curs_set 0
|
18
|
+
raw
|
19
|
+
noecho
|
20
|
+
keypad stdscr, true
|
21
|
+
scrollok stdscr, true
|
22
|
+
txt = "Press cursor keys to move window"
|
23
|
+
win = newwin(7, txt.size + 4, 4, 15)
|
24
|
+
box(win, 0, 0)
|
25
|
+
inner_win = derwin(win, 4, txt.size + 2, 2, 2)
|
26
|
+
wmove(inner_win, 0, 0)
|
27
|
+
waddstr(inner_win, txt)
|
28
|
+
wmove(inner_win, 2, 0)
|
29
|
+
waddstr(inner_win, "Press Ctrl-Q to quit")
|
30
|
+
|
31
|
+
y, x = getbegyx(win)
|
32
|
+
move 0, 0
|
33
|
+
log :y, y, :x, x
|
34
|
+
refresh
|
35
|
+
wrefresh(win)
|
36
|
+
wrefresh(inner_win)
|
37
|
+
|
38
|
+
ch = 0
|
39
|
+
while (ch = getch) != KEY_CTRL_Q
|
40
|
+
y, x = getbegyx(win)
|
41
|
+
old_y, old_x = y, x
|
42
|
+
log :y, y, :x, x, :ch, ch, keyname(ch)
|
43
|
+
# move 0, 0
|
44
|
+
# addstr "y %d x %d" % [y, x]
|
45
|
+
case ch
|
46
|
+
when KEY_RIGHT
|
47
|
+
x += 1
|
48
|
+
when KEY_LEFT
|
49
|
+
x -= 1
|
50
|
+
when KEY_UP
|
51
|
+
y -= 1
|
52
|
+
when KEY_DOWN
|
53
|
+
y += 1
|
54
|
+
end
|
55
|
+
rv = mvwin(win, y, x)
|
56
|
+
log :y1, y, :x1, x, :rv, rv
|
57
|
+
if rv == ERR
|
58
|
+
# put the window back
|
59
|
+
rv = mvwin(win, old_y, old_x)
|
60
|
+
end
|
61
|
+
|
62
|
+
# tell ncurses we want to refresh stdscr (to erase win's frame)
|
63
|
+
touchwin(stdscr)
|
64
|
+
refresh
|
65
|
+
wrefresh(win)
|
66
|
+
end
|
67
|
+
|
68
|
+
rescue Object => e
|
69
|
+
endwin
|
70
|
+
puts e
|
71
|
+
ensure
|
72
|
+
endwin
|
73
|
+
end
|
data/ffi-ncurses.gemspec
CHANGED
@@ -1,57 +1,44 @@
|
|
1
|
-
# -*-
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
4
|
+
require 'ffi-ncurses/version'
|
5
|
+
|
6
|
+
date = "2011-09-25"
|
7
|
+
authors = ["Sean O'Halpin"]
|
8
|
+
email = "sean.ohalpin@gmail.com"
|
9
|
+
project = FFI::NCurses
|
10
|
+
description = "An FFI wrapper around ncursesw 5.x for MRI Ruby 1.8.x, 1.9.x and JRuby."
|
11
|
+
dependencies = [
|
12
|
+
["ffi", ">= 1.0.9"],
|
13
|
+
["ffi-locale", ">= 1.0.0"],
|
14
|
+
]
|
13
15
|
|
14
|
-
|
15
|
-
|
16
|
+
Gem::Specification.new do |s|
|
17
|
+
s.authors = authors
|
18
|
+
s.email = email
|
19
|
+
s.date = date
|
20
|
+
s.description = description
|
21
|
+
dependencies.each do |dep|
|
22
|
+
s.add_dependency *dep
|
23
|
+
end
|
24
|
+
s.files =
|
25
|
+
[
|
26
|
+
"#{project::NAME}.gemspec",
|
27
|
+
"lib/#{project::NAME}.rb",
|
28
|
+
"COPYING",
|
29
|
+
"History.txt",
|
30
|
+
"README.rdoc",
|
31
|
+
"Rakefile",
|
32
|
+
"Gemfile",
|
33
|
+
"Gemfile.lock",
|
34
|
+
] +
|
35
|
+
Dir["examples/**/*"] +
|
36
|
+
Dir["lib/**/*.rb"] +
|
37
|
+
Dir["spec/**/*.rb"]
|
16
38
|
|
17
|
-
|
18
|
-
|
19
|
-
s.
|
20
|
-
s.
|
21
|
-
s.files = [
|
22
|
-
"History.txt",
|
23
|
-
"README.rdoc",
|
24
|
-
"examples/doc-eg1.rb",
|
25
|
-
"examples/doc-eg2.rb",
|
26
|
-
"examples/doc-eg3.rb",
|
27
|
-
"examples/example-attributes.rb",
|
28
|
-
"examples/example-colour.rb",
|
29
|
-
"examples/example-cursor.rb",
|
30
|
-
"examples/example-getsetsyx.rb",
|
31
|
-
"examples/example-hello.rb",
|
32
|
-
"examples/example-jruby.rb",
|
33
|
-
"examples/example-keys.rb",
|
34
|
-
"examples/example-mouse.rb",
|
35
|
-
"examples/example-printw-variadic.rb",
|
36
|
-
"examples/example-softkeys.rb",
|
37
|
-
"examples/example-stdscr.rb",
|
38
|
-
"examples/example-windows.rb",
|
39
|
-
"examples/example.rb",
|
40
|
-
"examples/ncurses-example.rb",
|
41
|
-
"ffi-ncurses.gemspec",
|
42
|
-
"lib/ffi-ncurses.rb",
|
43
|
-
"lib/ffi-ncurses/darwin.rb",
|
44
|
-
"lib/ffi-ncurses/keydefs.rb",
|
45
|
-
"lib/ffi-ncurses/mouse.rb",
|
46
|
-
"lib/ffi-ncurses/ord-shim.rb",
|
47
|
-
"lib/ffi-ncurses/winstruct.rb"
|
48
|
-
]
|
49
|
-
s.has_rdoc = true
|
50
|
-
s.homepage = %q{http://github.com/seanohalpin/ffi-ncurses}
|
51
|
-
s.rdoc_options = ["--main", "README.rdoc"]
|
39
|
+
s.name = project::NAME
|
40
|
+
s.version = project::VERSION
|
41
|
+
s.homepage = "http://github.com/seanohalpin/#{project::NAME}"
|
42
|
+
s.summary = s.description
|
52
43
|
s.require_paths = ["lib"]
|
53
|
-
s.rubyforge_project = %q{ffi-ncurses}
|
54
|
-
s.rubygems_version = %q{1.3.1}
|
55
|
-
s.summary = %q{FFI wrapper for ncurses}
|
56
|
-
s.add_dependency("ffi", ">= 0.6.3")
|
57
44
|
end
|
data/lib/ffi-ncurses.rb
CHANGED
@@ -1,437 +1,137 @@
|
|
1
|
-
#
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
# -
|
9
|
-
# -
|
10
|
-
#
|
11
|
-
#
|
12
|
-
# -
|
13
|
-
# -
|
14
|
-
#
|
15
|
-
#
|
16
|
-
# - Mac OS X 10.4 (ncurses 5.4)
|
17
|
-
|
1
|
+
# -*- coding: utf-8; -*-
|
2
|
+
# ruby-ffi wrapper for ncurses.
|
3
|
+
#
|
4
|
+
# Sean O'Halpin, 2008-2011
|
5
|
+
#
|
6
|
+
# repo & docs: http://github.com/seanohalpin/ffi-ncurses
|
7
|
+
#
|
8
|
+
# - version 0.1.0 - 2008-12-04
|
9
|
+
# - version 0.2.0 - 2009-01-18
|
10
|
+
# - version 0.3.0 - 2009-01-31
|
11
|
+
# - version 0.3.3 - 2010-08-24
|
12
|
+
# - version 0.3.4 - 2010-08-28
|
13
|
+
# - version 0.3.5 - 2011-01-05
|
14
|
+
# - version 0.4.0 - 2011-09-25
|
15
|
+
#
|
18
16
|
require 'ffi'
|
17
|
+
require 'ffi-locale'
|
18
|
+
|
19
|
+
if RUBY_VERSION < '1.9.0'
|
20
|
+
# 1.8.x doesn't set the locale - we need this to handle UTF-8 input
|
21
|
+
FFI::Locale.setlocale(FFI::Locale::LC_ALL, "")
|
22
|
+
end
|
23
|
+
|
24
|
+
# Load version.
|
25
|
+
require 'ffi-ncurses/version'
|
26
|
+
|
27
|
+
# Load typedefs.
|
28
|
+
require 'ffi-ncurses/typedefs'
|
29
|
+
|
30
|
+
# Load autogenerated function signatures.
|
31
|
+
require 'ffi-ncurses/functions'
|
19
32
|
|
20
|
-
#
|
21
|
-
|
33
|
+
# Load alternative character set definitions.
|
34
|
+
require 'ffi-ncurses/acs'
|
22
35
|
|
36
|
+
# Declare module.
|
23
37
|
module FFI
|
24
38
|
module NCurses
|
25
|
-
VERSION = "0.3.3"
|
26
39
|
extend FFI::Library
|
40
|
+
# FFI overwrites the signatures when you call =attach_function= so
|
41
|
+
# I keep an untouched deep copy here (used in the Ncurses
|
42
|
+
# compatibility layer).
|
43
|
+
|
44
|
+
FUNCTION_SIGNATURES = Marshal.load(Marshal.dump(FUNCTIONS))
|
45
|
+
FUNCTION_SIGNATURES.each do |fsig|
|
46
|
+
if fsig[0].to_s == "_wrapped_#{fsig[1]}"
|
47
|
+
fsig.shift
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Make all instance methods module methods too.
|
52
|
+
extend self
|
27
53
|
|
28
|
-
#
|
54
|
+
# Use `RUBY_FFI_NCURSES_LIB` to specify a colon-separated list of
|
55
|
+
# libs you want to try to load, e.g.
|
56
|
+
#
|
57
|
+
# RUBY_FFI_NCURSES_LIB=XCurses:ncurses
|
58
|
+
#
|
59
|
+
# to try to load XCurses (from PDCurses) first, then ncurses.
|
60
|
+
LIB_HANDLE = { }
|
29
61
|
if ENV["RUBY_FFI_NCURSES_LIB"].to_s != ""
|
30
|
-
LIB_HANDLE = ffi_lib(
|
62
|
+
LIB_HANDLE[:ncurses] = ffi_lib(ENV["RUBY_FFI_NCURSES_LIB"].split(/:/)).first
|
31
63
|
else
|
32
|
-
LIB_HANDLE = ffi_lib(['ncursesw', 'ncurses']).first
|
64
|
+
LIB_HANDLE[:ncurses] = ffi_lib(['ncursesw', 'libncursesw', 'ncurses', 'libcurses']).first
|
33
65
|
end
|
66
|
+
LIB_HANDLE[:panel] = ffi_lib(['panelw', 'libpanelw', 'panel', 'libpanel']).first
|
34
67
|
|
35
68
|
begin
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
69
|
+
# These global variables are defined in `ncurses.h`:
|
70
|
+
#
|
71
|
+
# chtype acs_map[];
|
72
|
+
# WINDOW * curscr;
|
73
|
+
# WINDOW * newscr;
|
74
|
+
# WINDOW * stdscr;
|
75
|
+
# char ttytype[];
|
76
|
+
# int COLORS;
|
77
|
+
# int COLOR_PAIRS;
|
78
|
+
# int COLS;
|
79
|
+
# int ESCDELAY;
|
80
|
+
# int LINES;
|
81
|
+
# int TABSIZE;
|
82
|
+
#
|
83
|
+
# Note that the symbol table entry in a shared lib for an
|
84
|
+
# exported variable contains a *pointer to the address* of
|
85
|
+
# the variable which will be initialized in the process's
|
86
|
+
# bss (uninitialized) data segment when the process is
|
87
|
+
# initialized.
|
88
|
+
|
89
|
+
# This is unlike methods, where the symbol table entry points to
|
90
|
+
# the entry point of the method itself.
|
91
|
+
|
92
|
+
# Variables need another level of indirection because they are
|
93
|
+
# *not* shared between process instances - only code is shared.
|
94
|
+
|
95
|
+
# So we define convenience methods to perform the lookup for
|
96
|
+
# us. We can't just stash the value returned by
|
97
|
+
# `read_pointer` at load time because it's not initialized
|
98
|
+
# until after `initscr` has been called.
|
99
|
+
symbols = [
|
100
|
+
["curscr", :pointer],
|
101
|
+
["newscr", :pointer],
|
102
|
+
["stdscr", :pointer],
|
103
|
+
["ttytype", :string],
|
104
|
+
["COLORS", :int],
|
105
|
+
["COLOR_PAIRS", :int],
|
106
|
+
["COLS", :int],
|
107
|
+
["ESCDELAY", :int],
|
108
|
+
["LINES", :int],
|
109
|
+
["TABSIZE", :int],
|
110
|
+
]
|
111
|
+
if LIB_HANDLE[:ncurses].respond_to?(:find_symbol)
|
112
|
+
symbols.each do |sym, type|
|
113
|
+
if handle = LIB_HANDLE[:ncurses].find_symbol(sym)
|
114
|
+
define_method sym do
|
115
|
+
handle.send("read_#{type}")
|
116
|
+
end
|
117
|
+
module_function sym
|
118
|
+
else
|
119
|
+
warn "#{self.name}: #{sym.inspect} not defined"
|
120
|
+
end
|
121
|
+
end
|
122
|
+
# `acs_map` is a special case
|
123
|
+
if handle = LIB_HANDLE[:ncurses].find_symbol("acs_map")
|
124
|
+
define_method :acs_map do
|
125
|
+
handle.get_array_of_uint(0, 128)
|
54
126
|
end
|
55
|
-
module_function sym
|
56
127
|
end
|
57
128
|
else
|
58
129
|
warn "#find_symbol not available - #{symbols.inspect} not defined"
|
59
130
|
end
|
60
|
-
rescue
|
131
|
+
rescue => e
|
61
132
|
end
|
62
133
|
|
63
|
-
#
|
64
|
-
# generate-ffi-ncurses-function-signatures.rb and inserted here by hand
|
65
|
-
# then edited a bit :)
|
66
|
-
functions =
|
67
|
-
[
|
68
|
-
[:COLOR_PAIR, [:int], :int],
|
69
|
-
[:PAIR_NUMBER, [:int], :int],
|
70
|
-
# these functions are only in the debug version of ncurses
|
71
|
-
# [:_nc_tracebits, [], :string],
|
72
|
-
# [:_nc_visbuf, [:string], :string],
|
73
|
-
# [:_traceattr2, [:int, :uint], :string],
|
74
|
-
# [:_traceattr, [:uint], :string],
|
75
|
-
# [:_tracecchar_t2, [:int, :pointer], :string],
|
76
|
-
# [:_tracecchar_t, [:pointer], :string],
|
77
|
-
# [:_tracechar, [:int], :string],
|
78
|
-
# [:_tracechtype2, [:int, :uint], :string],
|
79
|
-
# [:_tracechtype, [:uint], :string],
|
80
|
-
# [:_tracedump, [:string, :pointer], :void],
|
81
|
-
# [:_tracef, [:string, :varargs], :void],
|
82
|
-
# [:_tracemouse, [:pointer], :string],
|
83
|
-
[:add_wchnstr, [:pointer, :int], :int],
|
84
|
-
[:add_wch, [:pointer], :int],
|
85
|
-
[:add_wchstr, [:pointer], :int],
|
86
|
-
[:addchnstr, [:pointer, :int], :int],
|
87
|
-
[:addchstr, [:pointer], :int],
|
88
|
-
[:addch, [:uint], :int],
|
89
|
-
[:addnstr, [:string, :int], :int],
|
90
|
-
[:addstr, [:string], :int],
|
91
|
-
[:assume_default_colors, [:int, :int], :int],
|
92
|
-
[:attr_get, [:pointer, :pointer, :pointer], :int],
|
93
|
-
[:attr_off, [:uint, :pointer], :int],
|
94
|
-
[:attr_on, [:uint, :pointer], :int],
|
95
|
-
[:attr_set, [:uint, :short, :pointer], :int],
|
96
|
-
[:attroff, [:uint], :int],
|
97
|
-
[:attron, [:uint], :int],
|
98
|
-
[:attrset, [:uint], :int],
|
99
|
-
[:baudrate, [], :int],
|
100
|
-
[:beep, [], :int],
|
101
|
-
[:bkgdset, [:uint], :void],
|
102
|
-
[:bkgd, [:uint], :int],
|
103
|
-
[:bkgrnd, [:pointer], :int],
|
104
|
-
[:bkgrndset, [:pointer], :void],
|
105
|
-
[:border_set, [:pointer, :pointer, :pointer, :pointer, :pointer, :pointer, :pointer, :pointer], :int],
|
106
|
-
[:border, [:uint, :uint, :uint, :uint, :uint, :uint, :uint, :uint], :int],
|
107
|
-
[:box_set, [:pointer, :pointer, :pointer], :int],
|
108
|
-
[:box, [:pointer, :uint, :uint], :int],
|
109
|
-
[:can_change_color, [], :int],
|
110
|
-
[:cbreak, [], :int],
|
111
|
-
[:chgat, [:int, :uint, :short, :pointer], :int],
|
112
|
-
[:clear, [], :int],
|
113
|
-
[:clearok, [:pointer, :int], :int],
|
114
|
-
[:clrtobot, [], :int],
|
115
|
-
[:clrtoeol, [], :int],
|
116
|
-
[:color_content, [:short, :pointer, :pointer, :pointer], :int],
|
117
|
-
[:color_set, [:short, :pointer], :int],
|
118
|
-
[:copywin, [:pointer, :pointer, :int, :int, :int, :int, :int, :int, :int], :int],
|
119
|
-
[:curs_set, [:int], :int],
|
120
|
-
[:curses_version, [], :string],
|
121
|
-
[:def_prog_mode, [], :int],
|
122
|
-
[:def_shell_mode, [], :int],
|
123
|
-
[:define_key, [:string, :int], :int],
|
124
|
-
[:delay_output, [:int], :int],
|
125
|
-
[:delch, [], :int],
|
126
|
-
[:deleteln, [], :int],
|
127
|
-
[:delscreen, [:pointer], :void],
|
128
|
-
[:delwin, [:pointer], :int],
|
129
|
-
[:derwin, [:pointer, :int, :int, :int, :int], :pointer],
|
130
|
-
[:doupdate, [], :int],
|
131
|
-
[:dupwin, [:pointer], :pointer],
|
132
|
-
[:echo_wchar, [:pointer], :int],
|
133
|
-
[:echochar, [:uint], :int],
|
134
|
-
[:echo, [], :int],
|
135
|
-
[:endwin, [], :int],
|
136
|
-
[:erasechar, [], :char],
|
137
|
-
[:erase, [], :int],
|
138
|
-
[:filter, [], :void],
|
139
|
-
[:flash, [], :int],
|
140
|
-
[:flushinp, [], :int],
|
141
|
-
[:getbkgd, [:pointer], :uint],
|
142
|
-
[:getbkgrnd, [:pointer], :int],
|
143
|
-
[:getch, [], :int],
|
144
|
-
|
145
|
-
[:getattrs, [:pointer], :int],
|
146
|
-
[:getcurx, [:pointer], :int],
|
147
|
-
[:getcury, [:pointer], :int],
|
148
|
-
[:getbegx, [:pointer], :int],
|
149
|
-
[:getbegy, [:pointer], :int],
|
150
|
-
[:getmaxx, [:pointer], :int],
|
151
|
-
[:getmaxy, [:pointer], :int],
|
152
|
-
[:getparx, [:pointer], :int],
|
153
|
-
[:getpary, [:pointer], :int],
|
154
|
-
|
155
|
-
# this is defined in mouse.rb
|
156
|
-
# [:getmouse, [:pointer], :int],
|
157
|
-
[:getnstr, [:string, :int], :int],
|
158
|
-
[:getstr, [:string], :int],
|
159
|
-
[:getwin, [:pointer], :pointer],
|
160
|
-
[:halfdelay, [:int], :int],
|
161
|
-
[:has_colors, [], :int],
|
162
|
-
[:has_ic, [], :int],
|
163
|
-
[:has_il, [], :int],
|
164
|
-
[:has_key, [:int], :int],
|
165
|
-
[:hline_set, [:pointer, :int], :int],
|
166
|
-
[:hline, [:uint, :int], :int],
|
167
|
-
[:idcok, [:pointer, :int], :void],
|
168
|
-
[:idlok, [:pointer, :int], :int],
|
169
|
-
[:immedok, [:pointer, :int], :void],
|
170
|
-
[:in_wchnstr, [:pointer, :int], :int],
|
171
|
-
[:in_wch, [:pointer], :int],
|
172
|
-
[:in_wchstr, [:pointer], :int],
|
173
|
-
[:inchnstr, [:pointer, :int], :int],
|
174
|
-
[:inchstr, [:pointer], :int],
|
175
|
-
[:inch, [], :uint],
|
176
|
-
[:init_color, [:short, :short, :short, :short], :int],
|
177
|
-
[:init_pair, [:short, :short, :short], :int],
|
178
|
-
# need to intercept this to get stdscr for JRuby (for the moment)
|
179
|
-
["_initscr", :initscr, [], :pointer],
|
180
|
-
[:innstr, [:string, :int], :int],
|
181
|
-
[:ins_wch, [:pointer], :int],
|
182
|
-
[:insch, [:uint], :int],
|
183
|
-
[:insdelln, [:int], :int],
|
184
|
-
[:insertln, [], :int],
|
185
|
-
[:insnstr, [:string, :int], :int],
|
186
|
-
[:insstr, [:string], :int],
|
187
|
-
[:instr, [:string], :int],
|
188
|
-
[:intrflush, [:pointer, :int], :int],
|
189
|
-
[:is_linetouched, [:pointer, :int], :int],
|
190
|
-
[:is_term_resized, [:int, :int], :int],
|
191
|
-
[:is_wintouched, [:pointer], :int],
|
192
|
-
[:isendwin, [], :int],
|
193
|
-
[:key_defined, [:string], :int],
|
194
|
-
[:keybound, [:int, :int], :string],
|
195
|
-
[:keyname, [:int], :string],
|
196
|
-
[:keyok, [:int, :int], :int],
|
197
|
-
[:keypad, [:pointer, :int], :int],
|
198
|
-
[:killchar, [], :char],
|
199
|
-
[:leaveok, [:pointer, :int], :int],
|
200
|
-
[:longname, [], :string],
|
201
|
-
[:mcprint, [:string, :int], :int],
|
202
|
-
[:meta, [:pointer, :int], :int],
|
203
|
-
[:mouse_trafo, [:pointer, :pointer, :int], :int],
|
204
|
-
[:mouseinterval, [:int], :int],
|
205
|
-
[:mousemask, [:uint, :pointer], :uint],
|
206
|
-
[:move, [:int, :int], :int],
|
207
|
-
[:mvadd_wch, [:int, :int, :pointer], :int],
|
208
|
-
[:mvadd_wchnstr, [:int, :int, :pointer, :int], :int],
|
209
|
-
[:mvadd_wchstr, [:int, :int, :pointer], :int],
|
210
|
-
[:mvaddch, [:int, :int, :uint], :int],
|
211
|
-
[:mvaddchnstr, [:int, :int, :pointer, :int], :int],
|
212
|
-
[:mvaddchstr, [:int, :int, :pointer], :int],
|
213
|
-
[:mvaddnstr, [:int, :int, :string, :int], :int],
|
214
|
-
[:mvaddstr, [:int, :int, :string], :int],
|
215
|
-
[:mvchgat, [:int, :int, :int, :uint, :short, :pointer], :int],
|
216
|
-
[:mvcur, [:int, :int, :int, :int], :int],
|
217
|
-
[:mvdelch, [:int, :int], :int],
|
218
|
-
[:mvderwin, [:pointer, :int, :int], :int],
|
219
|
-
[:mvgetch, [:int, :int], :int],
|
220
|
-
[:mvgetnstr, [:int, :int, :string, :int], :int],
|
221
|
-
[:mvgetstr, [:int, :int, :string], :int],
|
222
|
-
[:mvhline_set, [:int, :int, :pointer, :int], :int],
|
223
|
-
[:mvhline, [:int, :int, :uint, :int], :int],
|
224
|
-
[:mvin_wch, [:int, :int, :pointer], :int],
|
225
|
-
[:mvin_wchnstr, [:int, :int, :pointer, :int], :int],
|
226
|
-
[:mvin_wchstr, [:int, :int, :pointer], :int],
|
227
|
-
[:mvinch, [:int, :int], :uint],
|
228
|
-
[:mvinchnstr, [:int, :int, :pointer, :int], :int],
|
229
|
-
[:mvinchstr, [:int, :int, :pointer], :int],
|
230
|
-
[:mvinnstr, [:int, :int, :string, :int], :int],
|
231
|
-
[:mvins_wch, [:int, :int, :pointer], :int],
|
232
|
-
[:mvinsch, [:int, :int, :uint], :int],
|
233
|
-
[:mvinsnstr, [:int, :int, :string, :int], :int],
|
234
|
-
[:mvinsstr, [:int, :int, :string], :int],
|
235
|
-
[:mvinstr, [:int, :int, :string], :int],
|
236
|
-
[:mvprintw, [:int, :int, :string, :varargs], :int],
|
237
|
-
[:mvscanw, [:int, :int, :string, :varargs], :int],
|
238
|
-
[:mvvline_set, [:int, :int, :pointer, :int], :int],
|
239
|
-
[:mvvline, [:int, :int, :uint, :int], :int],
|
240
|
-
[:mvwadd_wchnstr, [:pointer, :int, :int, :pointer, :int], :int],
|
241
|
-
[:mvwadd_wch, [:pointer, :int, :int, :pointer], :int],
|
242
|
-
[:mvwadd_wchstr, [:pointer, :int, :int, :pointer], :int],
|
243
|
-
[:mvwaddchnstr, [:pointer, :int, :int, :pointer, :int], :int],
|
244
|
-
[:mvwaddch, [:pointer, :int, :int, :uint], :int],
|
245
|
-
[:mvwaddchstr, [:pointer, :int, :int, :pointer], :int],
|
246
|
-
[:mvwaddnstr, [:pointer, :int, :int, :string, :int], :int],
|
247
|
-
[:mvwaddstr, [:pointer, :int, :int, :string], :int],
|
248
|
-
[:mvwchgat, [:pointer, :int, :int, :int, :uint, :short, :pointer], :int],
|
249
|
-
[:mvwdelch, [:pointer, :int, :int], :int],
|
250
|
-
[:mvwgetch, [:pointer, :int, :int], :int],
|
251
|
-
[:mvwgetnstr, [:pointer, :int, :int, :string, :int], :int],
|
252
|
-
[:mvwgetstr, [:pointer, :int, :int, :string], :int],
|
253
|
-
[:mvwhline_set, [:pointer, :int, :int, :pointer, :int], :int],
|
254
|
-
[:mvwhline, [:pointer, :int, :int, :uint, :int], :int],
|
255
|
-
[:mvwin_wchnstr, [:pointer, :int, :int, :pointer, :int], :int],
|
256
|
-
[:mvwin_wch, [:pointer, :int, :int, :pointer], :int],
|
257
|
-
[:mvwin_wchstr, [:pointer, :int, :int, :pointer], :int],
|
258
|
-
[:mvwinchnstr, [:pointer, :int, :int, :pointer, :int], :int],
|
259
|
-
[:mvwinch, [:pointer, :int, :int], :uint],
|
260
|
-
[:mvwinchstr, [:pointer, :int, :int, :pointer], :int],
|
261
|
-
[:mvwinnstr, [:pointer, :int, :int, :string, :int], :int],
|
262
|
-
[:mvwin, [:pointer, :int, :int], :int],
|
263
|
-
[:mvwins_wch, [:pointer, :int, :int, :pointer], :int],
|
264
|
-
[:mvwinsch, [:pointer, :int, :int, :uint], :int],
|
265
|
-
[:mvwinsnstr, [:pointer, :int, :int, :string, :int], :int],
|
266
|
-
[:mvwinsstr, [:pointer, :int, :int, :string], :int],
|
267
|
-
[:mvwinstr, [:pointer, :int, :int, :string], :int],
|
268
|
-
[:mvwprintw, [:pointer, :int, :int, :string, :varargs], :int],
|
269
|
-
[:mvwscanw, [:pointer, :int, :int, :string, :varargs], :int],
|
270
|
-
[:mvwvline_set, [:pointer, :int, :int, :pointer, :int], :int],
|
271
|
-
[:mvwvline, [:pointer, :int, :int, :uint, :int], :int],
|
272
|
-
[:napms, [:int], :int],
|
273
|
-
[:newpad, [:int, :int], :pointer],
|
274
|
-
[:newterm, [:string, :pointer, :pointer], :pointer],
|
275
|
-
[:newwin, [:int, :int, :int, :int], :pointer],
|
276
|
-
[:nl, [], :int],
|
277
|
-
[:nocbreak, [], :int],
|
278
|
-
[:nodelay, [:pointer, :int], :int],
|
279
|
-
[:noecho, [], :int],
|
280
|
-
[:nonl, [], :int],
|
281
|
-
[:noqiflush, [], :void],
|
282
|
-
[:noraw, [], :int],
|
283
|
-
[:notimeout, [:pointer, :int], :int],
|
284
|
-
[:overlay, [:pointer, :pointer], :int],
|
285
|
-
[:overwrite, [:pointer, :pointer], :int],
|
286
|
-
[:pair_content, [:short, :pointer, :pointer], :int],
|
287
|
-
[:pecho_wchar, [:pointer, :pointer], :int],
|
288
|
-
[:pechochar, [:pointer, :uint], :int],
|
289
|
-
[:pnoutrefresh, [:pointer, :int, :int, :int, :int, :int, :int], :int],
|
290
|
-
[:prefresh, [:pointer, :int, :int, :int, :int, :int, :int], :int],
|
291
|
-
[:printw, [:string, :varargs], :int],
|
292
|
-
[:putp, [:string], :int],
|
293
|
-
[:putwin, [:pointer, :pointer], :int],
|
294
|
-
[:qiflush, [], :void],
|
295
|
-
[:raw, [], :int],
|
296
|
-
[:redrawwin, [:pointer], :int],
|
297
|
-
[:refresh, [], :int],
|
298
|
-
[:reset_prog_mode, [], :int],
|
299
|
-
[:reset_shell_mode, [], :int],
|
300
|
-
[:resetty, [], :int],
|
301
|
-
[:resize_term, [:int, :int], :int],
|
302
|
-
[:resizeterm, [:int, :int], :int],
|
303
|
-
[:ripoffline, [:int, :pointer], :int],
|
304
|
-
[:savetty, [], :int],
|
305
|
-
[:scanw, [:string, :varargs], :int],
|
306
|
-
[:scr_dump, [:string], :int],
|
307
|
-
[:scr_init, [:string], :int],
|
308
|
-
[:scr_restore, [:string], :int],
|
309
|
-
[:scr_set, [:string], :int],
|
310
|
-
[:scrl, [:int], :int],
|
311
|
-
[:scrollok, [:pointer, :int], :int],
|
312
|
-
[:scroll, [:pointer], :int],
|
313
|
-
[:set_term, [:pointer], :pointer],
|
314
|
-
[:setscrreg, [:int, :int], :int],
|
315
|
-
[:slk_attr_off, [:uint, :pointer], :int],
|
316
|
-
[:slk_attr_on, [:uint, :pointer], :int],
|
317
|
-
[:slk_attr_set, [:uint, :short, :pointer], :int],
|
318
|
-
[:slk_attroff, [:uint], :int],
|
319
|
-
[:slk_attron, [:uint], :int],
|
320
|
-
[:slk_attrset, [:uint], :int],
|
321
|
-
[:slk_attr, [], :uint],
|
322
|
-
[:slk_clear, [], :int],
|
323
|
-
[:slk_color, [:short], :int],
|
324
|
-
[:slk_init, [:int], :int],
|
325
|
-
[:slk_label, [:int], :string],
|
326
|
-
[:slk_noutrefresh, [], :int],
|
327
|
-
[:slk_refresh, [], :int],
|
328
|
-
[:slk_restore, [], :int],
|
329
|
-
[:slk_set, [:int, :string, :int], :int],
|
330
|
-
[:slk_touch, [], :int],
|
331
|
-
[:standend, [], :int],
|
332
|
-
[:standout, [], :int],
|
333
|
-
[:start_color, [], :int],
|
334
|
-
[:subpad, [:pointer, :int, :int, :int, :int], :pointer],
|
335
|
-
[:subwin, [:pointer, :int, :int, :int, :int], :pointer],
|
336
|
-
[:syncok, [:pointer, :int], :int],
|
337
|
-
[:term_attrs, [], :uint],
|
338
|
-
[:termattrs, [], :uint],
|
339
|
-
[:termname, [], :string],
|
340
|
-
[:tigetflag, [:string], :int],
|
341
|
-
[:tigetnum, [:string], :int],
|
342
|
-
[:tigetstr, [:string], :string],
|
343
|
-
[:timeout, [:int], :void],
|
344
|
-
[:touchline, [:pointer, :int, :int], :int],
|
345
|
-
[:touchwin, [:pointer], :int],
|
346
|
-
[:tparm, [:string, :varargs], :string],
|
347
|
-
# [:trace, [:uint], :void],
|
348
|
-
[:typeahead, [:int], :int],
|
349
|
-
[:ungetch, [:int], :int],
|
350
|
-
# moved into mouse
|
351
|
-
# [:ungetmouse, [:pointer], :int],
|
352
|
-
[:untouchwin, [:pointer], :int],
|
353
|
-
[:use_default_colors, [], :int],
|
354
|
-
[:use_env, [:int], :void],
|
355
|
-
[:use_extended_names, [:int], :int],
|
356
|
-
[:vid_attr, [:uint, :short, :pointer], :int],
|
357
|
-
[:vid_puts, [:uint, :short, :pointer, :pointer], :int],
|
358
|
-
[:vidattr, [:uint], :int],
|
359
|
-
[:vidputs, [:uint, :pointer], :int],
|
360
|
-
[:vline_set, [:pointer, :int], :int],
|
361
|
-
[:vline, [:uint, :int], :int],
|
362
|
-
[:wadd_wchnstr, [:pointer, :pointer, :int], :int],
|
363
|
-
[:wadd_wch, [:pointer, :pointer], :int],
|
364
|
-
[:wadd_wchstr, [:pointer, :pointer], :int],
|
365
|
-
[:waddchnstr, [:pointer, :pointer, :int], :int],
|
366
|
-
[:waddch, [:pointer, :uint], :int],
|
367
|
-
[:waddchstr, [:pointer, :pointer], :int],
|
368
|
-
[:waddnstr, [:pointer, :string, :int], :int],
|
369
|
-
[:waddstr, [:pointer, :string], :int],
|
370
|
-
[:wattr_get, [:pointer, :pointer, :pointer, :pointer], :int],
|
371
|
-
[:wattr_off, [:pointer, :uint, :pointer], :int],
|
372
|
-
[:wattr_on, [:pointer, :uint, :pointer], :int],
|
373
|
-
[:wattr_set, [:pointer, :uint, :short, :pointer], :int],
|
374
|
-
[:wattroff, [:pointer, :int], :int],
|
375
|
-
[:wattron, [:pointer, :int], :int],
|
376
|
-
[:wattrset, [:pointer, :int], :int],
|
377
|
-
[:wbkgd, [:pointer, :uint], :int],
|
378
|
-
[:wbkgdset, [:pointer, :uint], :void],
|
379
|
-
[:wbkgrnd, [:pointer, :pointer], :int],
|
380
|
-
[:wbkgrndset, [:pointer, :pointer], :void],
|
381
|
-
[:wborder_set, [:pointer, :pointer, :pointer, :pointer, :pointer, :pointer, :pointer, :pointer, :pointer], :int],
|
382
|
-
[:wborder, [:pointer, :uint, :uint, :uint, :uint, :uint, :uint, :uint, :uint], :int],
|
383
|
-
[:wchgat, [:pointer, :int, :uint, :short, :pointer], :int],
|
384
|
-
[:wclear, [:pointer], :int],
|
385
|
-
[:wclrtobot, [:pointer], :int],
|
386
|
-
[:wclrtoeol, [:pointer], :int],
|
387
|
-
[:wcolor_set, [:pointer, :short, :pointer], :int],
|
388
|
-
[:wcursyncup, [:pointer], :void],
|
389
|
-
[:wdelch, [:pointer], :int],
|
390
|
-
[:wdeleteln, [:pointer], :int],
|
391
|
-
[:wecho_wchar, [:pointer, :pointer], :int],
|
392
|
-
[:wechochar, [:pointer, :uint], :int],
|
393
|
-
[:wenclose, [:pointer, :int, :int], :int],
|
394
|
-
[:werase, [:pointer], :int],
|
395
|
-
[:wgetbkgrnd, [:pointer, :pointer], :int],
|
396
|
-
[:wgetch, [:pointer], :int],
|
397
|
-
[:wgetnstr, [:pointer, :string, :int], :int],
|
398
|
-
[:wgetstr, [:pointer, :string], :int],
|
399
|
-
[:whline_set, [:pointer, :pointer, :int], :int],
|
400
|
-
[:whline, [:pointer, :uint, :int], :int],
|
401
|
-
[:win_wchnstr, [:pointer, :pointer, :int], :int],
|
402
|
-
[:win_wch, [:pointer, :pointer], :int],
|
403
|
-
[:win_wchstr, [:pointer, :pointer], :int],
|
404
|
-
[:winchnstr, [:pointer, :pointer, :int], :int],
|
405
|
-
[:winch, [:pointer], :uint],
|
406
|
-
[:winchstr, [:pointer, :pointer], :int],
|
407
|
-
[:winnstr, [:pointer, :string, :int], :int],
|
408
|
-
[:wins_wch, [:pointer, :pointer], :int],
|
409
|
-
[:winsch, [:pointer, :uint], :int],
|
410
|
-
[:winsdelln, [:pointer, :int], :int],
|
411
|
-
[:winsertln, [:pointer], :int],
|
412
|
-
[:winsnstr, [:pointer, :string, :int], :int],
|
413
|
-
[:winsstr, [:pointer, :string], :int],
|
414
|
-
[:winstr, [:pointer, :string], :int],
|
415
|
-
[:wmove, [:pointer, :int, :int], :int],
|
416
|
-
[:wnoutrefresh, [:pointer], :int],
|
417
|
-
[:wprintw, [:pointer, :string, :varargs], :int],
|
418
|
-
[:wredrawln, [:pointer, :int, :int], :int],
|
419
|
-
[:wrefresh, [:pointer], :int],
|
420
|
-
[:wresize, [:pointer, :int, :int], :int],
|
421
|
-
[:wscanw, [:pointer, :string, :varargs], :int],
|
422
|
-
[:wscrl, [:pointer, :int], :int],
|
423
|
-
[:wsetscrreg, [:pointer, :int, :int], :int],
|
424
|
-
[:wstandend, [:pointer], :int],
|
425
|
-
[:wstandout, [:pointer], :int],
|
426
|
-
[:wsyncdown, [:pointer], :void],
|
427
|
-
[:wsyncup, [:pointer], :void],
|
428
|
-
[:wtimeout, [:pointer, :int], :void],
|
429
|
-
[:wtouchln, [:pointer, :int, :int, :int], :int],
|
430
|
-
[:wvline_set, [:pointer, :pointer, :int], :int],
|
431
|
-
[:wvline, [:pointer, :uint, :int], :int]
|
432
|
-
]
|
433
|
-
# end of autogenerated function list
|
434
|
-
|
134
|
+
# This is used for debugging.
|
435
135
|
@unattached_functions = []
|
436
136
|
class << self
|
437
137
|
def unattached_functions
|
@@ -439,17 +139,16 @@ module FFI
|
|
439
139
|
end
|
440
140
|
end
|
441
141
|
|
442
|
-
#
|
443
|
-
|
142
|
+
# Attach functions.
|
143
|
+
FUNCTIONS.each do |func|
|
444
144
|
begin
|
445
145
|
attach_function(*func)
|
446
146
|
rescue Object => e
|
447
|
-
# for debugging
|
448
147
|
unattached_functions << func[0]
|
449
148
|
end
|
450
149
|
end
|
451
150
|
|
452
|
-
module
|
151
|
+
module Color
|
453
152
|
COLOR_BLACK = BLACK = 0
|
454
153
|
COLOR_RED = RED = 1
|
455
154
|
COLOR_GREEN = GREEN = 2
|
@@ -459,31 +158,11 @@ module FFI
|
|
459
158
|
COLOR_CYAN = CYAN = 6
|
460
159
|
COLOR_WHITE = WHITE = 7
|
461
160
|
end
|
462
|
-
Color
|
463
|
-
include Colour
|
464
|
-
|
465
|
-
# FIXME: remove this code when JRuby gets find_sym
|
466
|
-
# fixup for JRuby 1.1.6 - doesn't have find_sym
|
467
|
-
# can hack for stdscr but not curscr or newscr (no methods return them)
|
468
|
-
# this will all be removed when JRuby 1.1.7 is released
|
469
|
-
module FixupInitscr
|
470
|
-
if !NCurses.respond_to?(:stdscr)
|
471
|
-
def initscr
|
472
|
-
@stdscr = NCurses._initscr
|
473
|
-
end
|
474
|
-
def stdscr
|
475
|
-
@stdscr
|
476
|
-
end
|
477
|
-
else
|
478
|
-
def initscr
|
479
|
-
NCurses._initscr
|
480
|
-
end
|
481
|
-
end
|
482
|
-
end
|
483
|
-
include FixupInitscr
|
161
|
+
include Color
|
484
162
|
|
485
163
|
module Attributes
|
486
|
-
# following definitions have been copied (almost verbatim)
|
164
|
+
# The following definitions have been copied (almost verbatim)
|
165
|
+
# from `ncurses.h`.
|
487
166
|
NCURSES_ATTR_SHIFT = 8
|
488
167
|
def self.NCURSES_BITS(mask, shift)
|
489
168
|
((mask) << ((shift) + NCURSES_ATTR_SHIFT))
|
@@ -512,9 +191,6 @@ module FFI
|
|
512
191
|
include Attributes
|
513
192
|
|
514
193
|
module Constants
|
515
|
-
FALSE = 0
|
516
|
-
TRUE = 1
|
517
|
-
|
518
194
|
ERR = -1
|
519
195
|
OK = 0
|
520
196
|
end
|
@@ -523,42 +199,82 @@ module FFI
|
|
523
199
|
require 'ffi-ncurses/winstruct'
|
524
200
|
include WinStruct
|
525
201
|
|
526
|
-
|
527
|
-
|
528
|
-
# these 'functions' are implemented as macros in ncurses
|
202
|
+
require 'ffi-ncurses/panel'
|
203
|
+
include PanelStruct
|
529
204
|
|
530
|
-
|
531
|
-
|
532
|
-
#
|
533
|
-
#
|
534
|
-
|
535
|
-
|
205
|
+
# These following functions are implemented as macros in ncurses.
|
206
|
+
module EmulatedFunctions
|
207
|
+
# Note that I'm departing from the NCurses API here - it makes
|
208
|
+
# no sense to force people to use pointer return values when
|
209
|
+
# these methods have been implemented as macros to make them
|
210
|
+
# easy to use in *C*. We have multiple return values in Ruby, so
|
211
|
+
# let's use them. Call like this:
|
212
|
+
#
|
213
|
+
# y, x = getyx(win)
|
214
|
+
#
|
215
|
+
# For compatibility with the existing Ncurses lib, you can also
|
216
|
+
# call these functions like so:
|
217
|
+
#
|
218
|
+
# y = [nil]
|
219
|
+
# x = [nil]
|
220
|
+
# getyx(win, y, x)
|
221
|
+
#
|
222
|
+
def getyx(win, y = nil, x = nil)
|
223
|
+
res = [NCurses.getcury(win), NCurses.getcurx(win)]
|
224
|
+
if y && y.kind_of?(Array) && x.kind_of?(Array)
|
225
|
+
y.replace([res[0]])
|
226
|
+
x.replace([res[1]])
|
227
|
+
end
|
228
|
+
res
|
536
229
|
end
|
537
|
-
|
538
|
-
|
230
|
+
|
231
|
+
def getbegyx(win, y = nil, x = nil)
|
232
|
+
res = [NCurses.getbegy(win), NCurses.getbegx(win)]
|
233
|
+
if y && y.kind_of?(Array) && x.kind_of?(Array)
|
234
|
+
y.replace([res[0]])
|
235
|
+
x.replace([res[1]])
|
236
|
+
end
|
237
|
+
res
|
539
238
|
end
|
540
|
-
|
541
|
-
|
239
|
+
|
240
|
+
def getparyx(win, y = nil, x = nil)
|
241
|
+
res = [NCurses.getpary(win), NCurses.getparx(win)]
|
242
|
+
if y && y.kind_of?(Array) && x.kind_of?(Array)
|
243
|
+
y.replace([res[0]])
|
244
|
+
x.replace([res[1]])
|
245
|
+
end
|
246
|
+
res
|
542
247
|
end
|
543
|
-
|
544
|
-
|
248
|
+
|
249
|
+
def getmaxyx(win, y = nil, x = nil)
|
250
|
+
res = [NCurses.getmaxy(win), NCurses.getmaxx(win)]
|
251
|
+
if y && y.kind_of?(Array) && x.kind_of?(Array)
|
252
|
+
y.replace([res[0]])
|
253
|
+
x.replace([res[1]])
|
254
|
+
end
|
255
|
+
res
|
545
256
|
end
|
546
257
|
|
547
|
-
# transliterated from ncurses.h
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
[-1, -1]
|
258
|
+
# These have been transliterated from `ncurses.h`.
|
259
|
+
def getsyx(y = nil, x = nil)
|
260
|
+
if is_leaveok(newscr)
|
261
|
+
res = [-1, -1]
|
552
262
|
else
|
553
|
-
getyx(newscr)
|
263
|
+
res = getyx(newscr)
|
264
|
+
end
|
265
|
+
if y && y.kind_of?(Array) && x.kind_of?(Array)
|
266
|
+
y.replace([res[0]])
|
267
|
+
x.replace([res[1]])
|
554
268
|
end
|
269
|
+
res
|
555
270
|
end
|
271
|
+
|
556
272
|
def setsyx(y, x)
|
557
273
|
if y == -1 && x == -1
|
558
|
-
|
274
|
+
leaveok(newscr, true)
|
559
275
|
else
|
560
|
-
|
561
|
-
|
276
|
+
leaveok(newscr, false)
|
277
|
+
wmove(newscr, y, x)
|
562
278
|
end
|
563
279
|
end
|
564
280
|
|
@@ -568,7 +284,7 @@ module FFI
|
|
568
284
|
end
|
569
285
|
end
|
570
286
|
|
571
|
-
#
|
287
|
+
# Hack for XCurses (PDCurses 3.3) - many more to come I suspect.
|
572
288
|
fixup :getch do
|
573
289
|
def getch
|
574
290
|
wgetch(stdscr)
|
@@ -576,17 +292,41 @@ module FFI
|
|
576
292
|
end
|
577
293
|
end
|
578
294
|
include EmulatedFunctions
|
295
|
+
extend EmulatedFunctions
|
579
296
|
|
580
|
-
# fixes for Mac OS X (mostly macros directly referencing
|
581
|
-
|
297
|
+
# Include fixes for Mac OS X (mostly macros directly referencing
|
298
|
+
# the `WINDOW` struct).
|
299
|
+
#
|
300
|
+
# FIXME: Might need these for BSD too.
|
301
|
+
if defined?(::FFI::Platform::OS) && ::FFI::Platform::OS == "darwin"
|
582
302
|
require 'ffi-ncurses/darwin'
|
583
303
|
include NCurses::Darwin
|
584
304
|
end
|
585
305
|
|
586
|
-
#
|
587
|
-
|
306
|
+
# We need to define our own `initscr` so we can add the ACS
|
307
|
+
# constants dynamically.
|
308
|
+
private :_wrapped_initscr
|
309
|
+
private :_wrapped_newterm
|
588
310
|
|
311
|
+
def initscr
|
312
|
+
_wrapped_initscr
|
313
|
+
NCurses.define_acs_constants
|
314
|
+
stdscr
|
315
|
+
end
|
316
|
+
|
317
|
+
def newterm(name, out_filep, in_filep)
|
318
|
+
rv = _wrapped_newterm(name, out_filep, in_filep)
|
319
|
+
NCurses.define_acs_constants
|
320
|
+
rv
|
321
|
+
end
|
589
322
|
end
|
590
323
|
end
|
591
324
|
|
325
|
+
# Include wrappers for functions with bool arguments.
|
326
|
+
require 'ffi-ncurses/bool_wrappers'
|
327
|
+
|
328
|
+
# Include key definitions.
|
592
329
|
require 'ffi-ncurses/keydefs'
|
330
|
+
|
331
|
+
# Include mouse functions and key definitions.
|
332
|
+
require 'ffi-ncurses/mouse'
|